가변인자란?
함수의 parameter로 변수의 개수가 정해지지 않을 때 사용 가능한 인자
asterisk()기호를 사용하여 parameter를 표시 (args)
args로 입력된 값은 tuple로 사용된다.
가변인자는 마지막 파라미터 위치에 한 개만 사용 가능하다.
def asterisk(a, b, *args):
return a, b, args
print(asterisk(1, 2, 3, 4, 5)
# (1, 2, (3, 4, 5))
키워드 가변인자
asterisk 두개(**)를 사용하여 함수의 파라미터를 표시한다.
입력된 값은 그냥 가변인자와 다른게 dict type으로 사용할 수 있다.
def kwargs_test(a, b, *args, **kwargs):
print(a, b, args, kwargs)
kwargs_test(1, 2, 3, 4, 5, one=1, two=2, three=3)
# 1 2 (3, 4, 5) {'one': 1, 'two': 2, 'three': 3}
먼저 알아야 할 내용
함수 내에 또 다른 함수가 존재하는 함수
def a(strs):
def b():
print('hello')
b()
print(a('asdf'))
'''
hello
None <--- a함수의 return 값이 존재하지 않음
'''
def a(strs):
def b():
print('hello')
return b
func = a('abc')
func()
'''
hello
'''
복잡한 클로져 함수를 간단하게 표현할 수 있다.
def outer(func):
def inner(*args):
print('inner')
func(*args)
print('inner')
return inner
@outer
def hello(strs):
print('hello {}'.format(strs))
hello('tj')
'''
inner
hello tj
inner
'''
위의 예시는 hello함수가 star함수의 인자로 들어간 것이다.