Advanced Syntax
Python의 고급 문법은 보다 효율적이고 세련된 코드를 작성하는 데 유용한 기능들을 제공합니다.
Lambda Functions
람다 함수는 익명 함수로, 함수를 한 줄로 정의할 수 있게 해줍니다. 기본적으로 lambda
키워드를 사용하여 간단한 함수를 작성할 때 유용합니다.
# 두 수의 합을 반환하는 함수
add = lambda x, y: x + y
print(add(3, 5)) # 8
람다 함수는 주로 짧은 함수나 일시적인 함수가 필요할 때 유용합니다. 예를 들어, 리스트에서 값을 처리할 때 자주 사용됩니다.
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x**2, numbers))
print(squared) # [1, 4, 9, 16]
Comprehensions
리스트 컴프리헨션은 단일 줄에서 리스트를 생성하는 방법입니다. 동일한 방식으로 딕셔너리 컴프리헨션도 가능합니다. 컴프리헨션을 사용하면 코드가 더 간결하고 읽기 쉬워집니다.
List Comprehension
# 1부터 5까지의 제곱수를 구하는 리스트 컴프리헨션
squares = [x**2 for x in range(1, 6)]
print(squares) # [1, 4, 9, 16, 25]
Dictionary Comprehension
# 1부터 5까지의 숫자를 키로, 제곱수를 값으로 가지는 딕셔너리
squared_dict = {x: x**2 for x in range(1, 6)}
print(squared_dict) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Decorators
데코레이터는 함수를 수정하거나 확장할 수 있게 해주는 기능입니다. 데코레이터는 다른 함수를 인수로 받아, 그 함수의 실행을 수정하거나 확장합니다.
# 함수 실행 전, 후에 메시지를 출력
def decorator(func):
def wrapper():
print("Before the function call")
func()
print("After the function call")
return wrapper
@decorator
def greet():
print("Hello!")
greet()
#
# Before the function call
# Hello!
# After the function call
데코레이터는 주로 함수나 메서드의 동작을 수정할 때 사용됩니다. @decorator
구문을 통해 함수에 적용할 수 있습니다.
Closures
클로저는 함수 안에서 정의된 다른 함수로, 외부 함수의 변수를 기억하는 특성을 가집니다.
def outer(x):
def inner(y):
return x + y
return inner
closure_func = outer(10)
print(closure_func(5)) # 15
위 예시에서 inner
함수는 outer
함수의 x
변수를 기억하고 있습니다. 이것이 바로 클로저의 특징입니다.
Generators
제너레이터는 한 번에 하나씩 값을 반환하는 함수입니다. 제너레이터는 yield
키워드를 사용하여 값을 반환합니다. 제너레이터는 메모리 효율적이며, 대량의 데이터를 처리할 때 유용합니다.
# 1부터 3까지의 숫자를 하나씩 반환
def count_up_to(n):
count = 1
while count <= n:
yield count
count += 1
counter = count_up_to(3)
for num in counter:
print(num)
#
# 1
# 2
# 3
yield는 값을 반환하고 함수의 실행 상태를 중단하며, 나중에 다시 실행을 재개할 수 있습니다. 제너레이터는 데이터를 순차적으로 처리할 때 유용합니다.