728x90
파이썬 연산자
- 산술 연산자
- =: 할당
- +, -, *, / : 사칙연산
- // : 정수 나누기(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 ''':
# TODO
elif ''' condition 2 ''':
# TODO if condition 1 not satisfied
...
else :
# TODO if all condition not satisfied
while, for : 반복문
while ''' condition ''':
# while condition satisfied, TODO
for i in [1, 2, 3]:
# loop(iterate) all element in list
- 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): #function header
return arg1+arg2 #function body
#####
a = 4
def test():
a = 5
print(a) # 5
print(a) #4
- parameter : 함수 호출 시 전달하는 값
- positional parameter : 전달 순서에 따른 값 할당
- default value : 함수 선언 시 매개변수에 값을 대입하면 함수 호출시 값 전달을 하지 않아도 호출 가능
- variadic positional argument : 정해지지 않은 개수의 파라미터를 튜플 형태로 전달
- variadic keyword argument : 정해지지 않은 개수의 파라미터를 딕셔너리 형태로 전달
#positional parameter
def mul(a,b):
return a*b
mul(1,2) #a=1, b=2
mul(2,1) #a=2, b=1
# default value
def mul(a,b=1):
return a*b
mul(1,2) #a=1, b=2
mul(1) #a=1, b=1(default)
# variadic positional argument
def mul(*args):
for a in args:
print(a)
mul(1,2,3,4,5)
#variadic keyword argument
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 # (a)
def A():
x = 2 # (b)
def B():
nonlocal x = 3 #(c)
global x = 3 #(d)
# (c)의 경우, (b)에 접근
# (d)의 경우, (a)에 접근
람다식
- 파이썬 함수는 일종의 객체
- 람다식 = 익명 함수
- lambda arg1, agr2, ... : 계산식
sums = lambda x, y, z : x+y+z
파이썬의 클래스
- 객체지향 프로그래밍 : 동작을 정의하는 데이터와 코드를 객체 형태로 표현
- 객체지향의 특징
- Encapsulation
- 사용하는 데이터 접근 시 함수를 사용
- 객체 내부의 동작은 내부에서 접근 불가
- 디버깅을 용이하게 함
- Abstraction
- 디자인 관점의 문제
- 내부의 복잡한 동작보다 문제의 핵심에 집중
- Inheritance
- 각 객체의 공통 특성을 상위의 하나의 객체에서 상속
- ex. 세단, SUV, 트럭은 모두 차량이라는 공통 특성을 보유
- 파이썬의 경우 다중 상속을 지원
- Polymorphism
- 같은 이름을 갖는 기능이 여러 동작을 하는 것
- ex. sort - bubble sort, quick sort, ...
- Encapsulation
- 파이썬의 클래스 정의
- constructor : 클래스 생성 시 자동으로 호출되는 함수로 객체를 초기화
- 객체는 클래스의 인스턴스로 선언됨
class Car:
num_of_cars = 0 #class variable
def __init__(self, hp): # constructor
Car.num_of_cars+=1
self.hp = hp
def accelerate(self): # member method
...
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)
728x90