위치인자(positional arguments)는 인자의 가장 익숙한 타입이다. 값을 순서대로 매개변수에 복사한다.
menu(1, 2)
매개변수에 상응하는 이름을 인자에 지정할 수 있다.
menu(a='aa', b='cc')
함수의 매개변수에 애스터리스크를 사용할 때, 애스터리스크는 매개변수에서 위치 인자 변수들을 튜플로 묶는다
>>> def print_args(*args):
... print(args)
...
>>> print_args(1, 2, 3)
(1, 2, 3)
키워드 인자를 딕셔너리로 묶기
>>> def print_kwargs(**kwargs):
... print(kwargs)
...
>>> print_kwargs(a=1, b=2)
{'a': 1, 'b': 2}
>>> def print_args(*args, **kwargs):
... print(args)
... print(kwargs)
...
>>> print_args(1, 2, 3, a=1, b=2)
(1, 2, 3)
{'a': 1, 'b': 2}
>>> def edit_story(words, func):
... for word in words:
... print(func(word))
...
>>> def enliven(word):
... return word.capitalize() + '!'
...
>>> edit_story(['aaa', 'bbb', 'ccc'], enliven)
Aaa!
Bbb!
Ccc!
>>> edit_story(['aaa', 'bbb', 'ccc'], lambda word: word.capitalize() + '!')
Aaa!
Bbb!
Ccc!
>>> def my_range(first=0, last=10, step=1):
... number = first
... while number < last:
... yield number
... number += step
...
>>> my_range
<function my_range at 0x1066348c8>
>>>
>>> for x in my_range(1, 3):
... print(x)
...
1
2
def document_it(func):
def new_function1(*args, **kwargs):
print(args)
return func(*args, **kwargs)
return new_function1
def show_name(func):
def new_function2(*args, **kwargs):
print(func.__name__)
return func(*args, **kwargs)
return new_function2
@document_it
@show_name
def add_ints(a, b):
print("call add_ints")
return a + b
r = add_ints(1, 5)
print(f"{r}")
def new_add_ints(a, b):
print("call add_ints")
return a + b
print("----------")
deco_show = show_name(new_add_ints)
r = deco_show(1, 5)
print(f"{r}")
print("----------")
deco_document = document_it(deco_show)
r = deco_document(1, 5)
print(f"{r}")
(1, 5)
add_ints
call add_ints
6
----------
new_add_ints
call add_ints
6
----------
(1, 5)
new_add_ints
call add_ints
6