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, ...
  • 파이썬의 클래스 정의
    • 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

+ Recent posts