함수의 일급 객체로서의 활용
Python의 함수는 일급 객체로 취급되며, 이는 함수를 변수에 저장하거나 다른 함수로 전달할 수 있음을 의미한다.
def DoFunc1():
print('DoFunc1 호출')
# 함수를 변수에 할당
otherFunc = DoFunc1
otherFunc() # 출력: DoFunc1 호출
전역 변수, 지역 변수
Python에서는 전역 변수와 지역 변수를 사용할 수 있다.
함수 내에서 전역 변수에 접근하거나 수정할 때 주의해야 한다.
player = '전국대표' # 전역 변수
def FuncSoccer():
name = '홍길동' # 지역 변수
print(name, player)
FuncSoccer() # 출력: 홍길동 전국대표
print('player=', player) # 출력: player= 전국대표
Python의 변수는 Local, Enclosing Function, Global 순서로 인식된다.
a = 10; b = 20; c = 5 # 전역 변수
def Foo():
a = 100 # 지역 변수
def Bar():
global a # 전역 변수 사용
print('a:', a, 'b:', b, 'c:', c)
a = 300 # 전역 변수 수정
Bar()
print('a=', a) # 출력: a= 100
Foo()
print('전역 변수 a=', a) # 출력: 전역 변수 a= 300
고급 함수
익명 함수, 람다 함수
람다 함수는 익명 함수로, 간단한 연산을 한 줄로 작성할 수 있다.
# 람다 함수 정의
add = lambda x, y: x + y
print(add(3, 5)) # 출력: 8
# 리스트 정렬에서 람다 함수 사용
points = [(1, 2), (3, 1), (5, 4)]
points.sort(key=lambda point: point[1])
print(points) # 출력: [(3, 1), (1, 2), (5, 4)]
함수의 매개변수 전달
가변 인수, 키워드 인수
Python 함수는 가변 인수와 키워드 인수를 사용할 수 있다.
def Func4(a, b, *v1, **v2):
print(a)
print(b)
print(v1) # 출력: 튜플
print(v2) # 출력: 딕셔너리
Func4(1, 2)
Func4(1, 2, 3, 4, 5)
Func4(1, 2, 3, 4, 5, m=6, n=7)
# 출력:
# 1
# 2
# (3, 4, 5)
# {'m': 6, 'n': 7}
디폴트 매개변수
함수의 매개변수에 기본값을 설정하여 인수를 전달하지 않아도 기본값을 사용할 수 있다.
def ShowGugudan(start, end=5):
for dan in range(start, end+1):
print(str(dan)+'단 출력')
for i in range(1, 10):
print(f"{dan}*{i}={dan*i}", end=' ')
print()
ShowGugudan(2, 3) # 2단과 3단 출력
ShowGugudan(3) # 3단부터 5단까지 출력
가변 인수를 사용하여 매개변수의 개수가 유동적인 함수를 정의할 수 있다.
def SelProcess(choice, *ar):
if choice == 'sum':
re = sum(ar)
elif choice == 'mul':
re = 1
for i in ar:
re *= i
return re
print(SelProcess('sum', 100, 90, 70)) # 출력: 260
print(SelProcess('mul', 100, 90, 78)) # 출력: 702000