def "함수이름"(매개변수):
pass
함수로 전달한 값을 인수라고 부른다.
인수와 함수를 호출하면 인수의 값이 함수 내에서 해당하는 매개변수에 복사된다.
함수 외부에서는 인수라고 하지만 내부에서는 매개변수라고 한다.
불리언 값의 False처럼 보이지만 다른 값을 의미
빠뜨린 빈 값을 구분하기 위해 None을 사용
매우 일반적이지만 위치 인수의 단점은 각 위치의 의미를 알아야한다
위치 인수의 혼란을 피하기 위해 매개변수에 상응하는 이름을 인수에 지정
def menu(wine, entree, desert='pudding'):
return {'wine' : wine, 'entree' : entree, 'desert' : desert}
>>> menu('chardonny', 'chicken')
{'wine' : chardonny, 'entree' : chicken, 'desert' : desert }
desert 인수를 입력하면 기본값 대신 입력한 인수(doughnut)가 쓰인다
기본 매개변수값을 지정한 경우
def buggy(arg, result=[]):
result.append(arg)
print(result)
>>> buggy('a')
['a']
>>> buggy('b')
['a','b']
지정 안한 경우
def works(arg):
result=[]
result.append(arg)
return result
>>> works('a')
['a']
>>> works('b')
['b']
def outter(a, b):
def inner(c,d):
return c+d
return inner(a,b)
>>> outter(4,7)
11
def edit_story(words, func):
for word in word:
print(func(word))
>>> stairs = ['thud', 'meow', 'thud', 'hiss']
def enliven(word):
return word.capitalize() + '!'
edit_story(stairs, enliven)
Thud!
Meow!
Thud!
Hiss!
람다를 사용
edit_story(stairs, lambda word: word.capitalize() + '!'
제네레이터 = 한 번만 순회 할수있다. 리스트, 셋, 문자열, 딕셔너리는 메모리에 존재
제네레이터 = 해당 값을 즉석에서 생성하고 이터레이터를 통해 한 번에 하나씩만 전달
제네레이터 = 모든 값을 기억하지 않으므로 제네레이터는 다시 돌릴 수 없다.
Decorator => 하나의 함수를 취해서 또 다른 함수를 반환하는 함수