*による位置引数のタプル化
C,C++プログラムでは
*がポインター関連に使われが、pythonにはポンターはない
函数定義のなかで仮引数の一部として*を使うと、可変個の位置引数をタプルにまとめてその仮引数にセットする。
この機能は、print()のように可変個の実引数を受付ける関数を書く時に役立つ
*args
def print_args(*args):
print('Positional argument tuple:', args)
実引数なしで呼び出すと
print_args()
Positional argument tuple: ()
print_args(3, 2, 1, 'wait!', 'uh...')
Positional argument tuple: (3, 2, 1, 'wait!', 'uh...')
必須の位置引数がある場合には、位置引数の最後に*argを書く
*を使うとき
タプル仮引数をargsと呼ぶ必要は特にないが、Pythonコミュニティでは一般的な習慣になっている
**でのキーワード引数の
ふたつのアスタリスク(**)を使えば、キーワード引数を1個の辞書にまとめることができる。
引数の名前は辞書のキー、引数の値は辞書の値になる
def print_kwargs(**kwargs):
print('keyword arguments:', kwargs)
print_kwargs(wine='merlot', entree='mutton', dessert='macaroon')
keyword arguments:{'dessert':'macaroon', 'wine':'merlot', 'entree':'mutton''}