전체 글 109

[Python] 모듈과 패키지

외부의 파일로부터 함수, 변수, 클래스를 가져다 써야할 때 사용되는 파이썬의 모듈과 패키지에 대해서 알아보자. 모듈 파이썬에서 모듈이란 .py 파일을 의미한다. module은 import문을 사용해서 호출할 수 있다. 모듈을 직접 import하는 경우 import (모듈명) # 모듈의 전체 코드 호출 import (모듈명) as (별칭) # 모듈의 별칭 설정 모듈명.함수명() # 모듈 내 함수를 호출할 때 모듈명을 명시해야 한다. 모듈의 함수 또는 클래스의 범위를 지정하여 import하는 경우 from (모듈명) import (특정 함수 / 클래스) # 모듈의 특정 함수 또는 클래스만 호출 from (모듈명) import * # 모듈에서 모든 함수 또는 클래스 호 함수명() # 모듈 내 함수를 호출할 때..

Backend/Python 2023.03.08

[Python] decorator

파이썬에서 함수에 추가 기능을 구현할 때 사용되는 decorator에 대해서 알아보자. 매개변수가 없는 함수의 데코레이터 def trace(func): # 기능을 추가할 함수를 매개변수로 받음 def wrapper(): # 호출할 함수를 감싸는 함수 print(func.__name__, "함수 시작") func() # 매개변수로 받은 함수 호출 print(func.__name__, "함수 종료") return wrapper # 데코레이터 @trace def hello(): print("hello, world!") hello() # trace(hello)와 같은 역할 # 출력: # hello 함수 시작 # hello, world! # hello 함수 종료 매개변수가 있는 함수의 데코레이터 def trace..

Backend/Python 2023.03.07

[Python] closure

파이썬의 closure에 대해 알아보자. def print_msg(msg): def printer(): # inner function print(msg) return printer # 함수를 return, 괄호 붙이면 안됨 another = print_msg("Hello, Python") another() # 출력: Hello, Python 함수 printer의 입장에서 지역 변수 msg는 자신의 외부에 있는 변수이다. 그러나, 위 코드와 같이 inner function (위 코드에서의 printer 함수)을 반환하게 되면 print_msg 함수가 종료되더라도 msg의 값이 유지된 채, printer 함수가 호출되면 그 값을 꺼내서 사용한다.

Backend/Python 2023.03.07

[Python] 파이썬 class의 특징

다른 언어들과 구별되는 파이썬의 class 생성 방식을 알아보자. 생성자 생성자는 __init__ method에 정의한다. class 내 모든 method의 첫번째 파라미터는 self이다. class Animal: def __init__(self, name): self.name = name 상속 class 선언 시 괄호 안에 상속받을 class를 넣어 상속받는다. class Cat(Animal): # Cat class는 Animal class로부터 상속받는다. ... 매직 메소드 under score 두개 (__)를 붙인 built-in 함수를 정의하여, class가 처리할 연산을 손쉽게 정의할 수 있다. https://corikachu.github.io/articles/python/python-magi..

Backend/Python 2023.03.07

[Python] asterisk

파이썬에서 asterisk 기호 (*)는 곱셈, 제곱을 하는 연산자 외에도 다양한 기능들이 있다. asterisk 기호가 한 개 쓰일 때와 두 개 쓰일 때로 나누어서 살펴보자. * 파라미터에 *를 붙여 입력한 개수만큼 입력받을 수 있는 가변인자로 설정할 수 있다. def asterisk_test(*args): # args는 튜플로 저장된다. return sum(args) print(asterisk_test(1,2,3,4,5)) # 출력: 15 iterable한 자료형과 함께 사용하면 unpacking을 하는 역할로 쓰인다. def asterisk_test(*args): print(args) print(*args) asterisk_test(1,2,3,4,5) # 출력: # (1, 2, 3, 4, 5) # ..

Backend/Python 2023.03.07

[Python] generator

파이썬의 list 자료형과 비슷한 듯 하지만 메모리 측면에서 효율적인 generator에 대해서 알아보자. yield 키워드를 활용하여 iterable한 객체인 generator 생성한다. list는 모든 element를 메모리에 올려놓아야 하는 반면 generator는 yield 키워드를 활용하여 element가 사용되는 시점에 하나씩 메모리에 올려놓는다. 따라서 대용량 파일을 읽거나 스트림 데이터를 처리하는 경우, 메모리 효율 측면에서 유용하다. def create_generator(value): for i in range(value): yield i g = create_generator(10) print(g) # for i in g: print(i) # 출력: # 0 # 1 # ... # 9 gen..

Backend/Python 2023.03.07

[Python] 파이썬 코드만의 특징

파이썬으로 쓰인 모듈의 코드를 읽을 때, 알고 있으면 유용한 함수와 특징들을 알아보자. join 함수 # for문으로 list 요소들을 합치기보다는 result = "" for color in colors: result += color # join 함수를 활용하자 (권장) result = "".join(colors) list comprehension result1 = [i for i in range(10)] # 출력: [0, 1, 2, ..., 9] result2 = [(i, j) for i in range(5) for j in range(5)] # 출력: [(0,0), (0,1), ..., (4,4)] result3 = [[(i, j) for i in range(5)] for j in range(5)]..

Backend/Python 2023.03.06