인코딩 = 코드화 = 암호화 = 부호화
동영상이나 문자 인코딩 뿐만 아니라 사람이 인지할 수 있는 형태의 데이터를 약속된 규칙에 의해 컴퓨터가 사용하는 0과 1로 변환하는 과정
python3 는 utf-8이 기본# -*- coding: utf-8 -*- # 맨 위에 작성하면 이 코드는 utf-8로 인코딩되어 있는 것
디코딩 = 역코드화 = 복호화
사람이 이해할 수 있는 언어로 돌려주는 것
함수 안의 함수를 결과로 반환할 때, 그 내부 함수를 클로저라고 한다.
사용되는 곳 : 콜백함수, 함수의 순차적 실행, 데코레이터 함수
def mul(m):
def wrapper(n):
return m * n
return wrapper
mul3 = mul(3)
print(mul3(10)) # 30
함수를 꾸며주는 함수
함수를 인수로 받는 클로저
@를 이용한 어노테이션으로 사용
사용되는 곳 : 반복되는 작업을 여러 함수에 적용할 경우, 기존 함수를 수정하지 않고 추가 기능을 구현하고 싶을 경우
def func1(a, b):
val = a + b
return val
def func2(a, b):
val = a * b
return val
def elapsed(func):
def wrapper(a, b):
print("함수가 실행됩니다")
start = time.time()
result = func(a, b)
end = time.time()
print("함수 수행시간: %f 초" % (end - start))
return result
return wrapper
deco1 = elapsed(func1)
result = deco1(1,2)
print(result)
@elapsed
def func1(a, b):
val = a + b
return val
@elapsed
def func2(a, b):
val = a * b
return val
집합에서 값을 차례대로 꺼낼 수 있는 객체(Object)를 말함
한번 반복하면 다시 사용할 수 없다.
a = [1,2,3]
iterator = iter(a)
next(iterator) # 1
next(iterator) # 2
next(iterator) # 3
next(iterator) # Error
iterator를 생성해주는 함수
def generator():
yield 'a'
yield 'b'
yield 'c'
g = generator()
next(g) # 'a'
next(g) # 'b'
next(g) # 'c'
next(g) # error
def client_count(total_client):
n = 1
for num in range(total_client):
print(f'{n}번째 고객님 입장하세요!')
n +=1
yield
mygen = client_count(100)
next(mygen) # 1번째 고객님 입장하세요!
next(mygen) # 2번째 고객님 입장하세요!
next(mygen) # 3번째 고객님 입장하세요!
변수나 상수를 선언할 때, 그 타입을 명시적으로 선언해 줌으로써 어떤 타입의 값이 저장될 것인지를 직접 알려주는 방법
사용 시, 코드 가독성과 협업 효율성이 높아짐
def add(a: int,b: int) -> int: # a, b는 int형 | 결과값고 int 값이 반환된다는 것을 알려줌
return a + b
add.__annotations__ # {'a' : int, 'b' : int, 'return' : int}