파이썬 연산자
파이썬 연산자
- 산술 연산자
- =: 할당
- +, -, *, / : 사칙연산
- // : 정수 나누기(5//2 = 2)
- % : 나머지
- ** : 거듭제곱
>>
, <<
: bit shift left, right
- &, |, ~, ^ : bit and, or, not, xor
- 파이썬의 비교 연산자
A>B
, A>=B
: A가 B보다 크다 / 크거나 같다
A<B
, A<=B
: A가 B보다 작다 / 작거나 같다
A==B
, A!=B
: A와 B가 같다 / 다르다
- not A : A가 아닌 경우
- A and B, A or B : A 그리고/혹은 B
- 모든 비교 연산자는 true 혹은 false를 반환
파이썬의 제어문
- 파이썬 제어문은 들여쓰기(space, tab)으로 해당 영역을 구분함
- 둘을 혼합해서 사용할 수는 없음
- if : 조건문
if ''' condition 1 ''':
elif ''' condition 2 ''':
...
else :
while, for : 반복문
while ''' condition ''':
for i in [1, 2, 3]:
- range(start, end, step)
- start부터 end-1까지를 step 단위로 반복
- range(5) = [0,1,2,3,4]
- range(1,5) = [1,2,3,4]
- range(1, 10, 2) = [1,3,5,7,9]
- range(10,1,-1) = [10,9,...,3,2]
파이썬 함수
- 추상화를 위한 도구 : 입력과 출력 사이의 동작 내용은 Blackbox화
- 특정 기능을 구현하는 코드 영역
- 프로그램의 기본적인 단위(block)
- 코드의 재사용이 가능하게 함
- local scope : 함수 내의 변수는 외부에 영향을 주지 않음
def func1(arg1, arg2):
return arg1+arg2
a = 4
def test():
a = 5
print(a)
print(a)
- parameter : 함수 호출 시 전달하는 값
- positional parameter : 전달 순서에 따른 값 할당
- default value : 함수 선언 시 매개변수에 값을 대입하면 함수 호출시 값 전달을 하지 않아도 호출 가능
- variadic positional argument : 정해지지 않은 개수의 파라미터를 튜플 형태로 전달
- variadic keyword argument : 정해지지 않은 개수의 파라미터를 딕셔너리 형태로 전달
def mul(a,b):
return a*b
mul(1,2)
mul(2,1)
def mul(a,b=1):
return a*b
mul(1,2)
mul(1)
def mul(*args):
for a in args:
print(a)
mul(1,2,3,4,5)
def mul(**args):
for key, value in args:
print(key, value)
mul(a=1, b=2, c=3, d=4)
- variable scope
- 함수 내외의 변수는 독립적으로 취급됨
- global : 최상위 변수에 접근
- nonlocal : 자신의 상위 scope에 해당하는 변수에 접근
x = 1
def A():
x = 2
def B():
nonlocal x = 3
global x = 3
람다식
- 파이썬 함수는 일종의 객체
- 람다식 = 익명 함수
- lambda arg1, agr2, ... : 계산식
sums = lambda x, y, z : x+y+z
파이썬의 클래스
- 객체지향 프로그래밍 : 동작을 정의하는 데이터와 코드를 객체 형태로 표현
- 객체지향의 특징
- Encapsulation
- 사용하는 데이터 접근 시 함수를 사용
- 객체 내부의 동작은 내부에서 접근 불가
- 디버깅을 용이하게 함
- Abstraction
- 디자인 관점의 문제
- 내부의 복잡한 동작보다 문제의 핵심에 집중
- Inheritance
- 각 객체의 공통 특성을 상위의 하나의 객체에서 상속
- ex. 세단, SUV, 트럭은 모두 차량이라는 공통 특성을 보유
- 파이썬의 경우 다중 상속을 지원
- Polymorphism
- 같은 이름을 갖는 기능이 여러 동작을 하는 것
- ex. sort - bubble sort, quick sort, ...
- 파이썬의 클래스 정의
- constructor : 클래스 생성 시 자동으로 호출되는 함수로 객체를 초기화
- 객체는 클래스의 인스턴스로 선언됨
class Car:
num_of_cars = 0
def __init__(self, hp):
Car.num_of_cars+=1
self.hp = hp
def accelerate(self):
...
car = Car(100)
- getter/setter : 인스턴스 외부에서 접근하기 위한 방법 제공
- getter는 변수값을 읽을 때, setter는 변수값을 쓸 때 활용
- 클래스 변수와 인스턴스 변수
- 인스턴스 변수 : 객체 생성마다 선언되는 변수
- 클래스 변수 : 해당 클래스가 공유하는 변수
- 인스턴스 변수 접근 시 존재하지 않는 경우 클래스 변수 탐색
- @staticmethod : 객체가 아닌 클래스에 작용하는 메소드
- @classmethod : 클래스와 무관하게 객체에만 작용하는 메소드
Exception
- 오류를 처리하기 위한 방법
- Try-Except문을 이용해 처리
- else : except가 발생하지 않은 경우
- finally : except와 무관하게 무조건 실행
- 파이썬 Exception은 계층적으로 구성
- 최상위에 BaseException으로 구성
- 가장 많이 쓰는 예외들은 Exception 클래스 내에 존재
- 사용자 정의 Exception
- 클래스 상속을 통해 정의
- class MyError(Exception) - raise MyError("info") - except Myerror as e : print(e)