引数を名指しする!
前回は関数の引数に初期値を設定するテクニックでした。
前回に続き、引数のテクニックついてです。
本家公式チュートリアルも参考にしてください。
二つ目となる今回は、「キーワード引数です」
公式の例を引用してみましょう。
def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
print("-- This parrot wouldn't", action, end=' ')
print("if you put", voltage, "volts through it.")
print("-- Lovely plumage, the", type)
print("-- It's", state, "!")
この関数には4つの引数があります。
最初のvoltageは初期値が設定されていないので、必須の引数となります。
parrot(1000) # 位置引数
なので、上記のように関数に引数を渡すことができます。
でも、今回取り上げるキーワード引数という渡し方もできます。
parrot(voltage=1000) # キーワード引数
こうやると、何が良いかって言うと、位置引数と違って順番が問われないことです。
なので、下記でもエラーになりません。
parrot(action='VOOOOOM', voltage=1000000) # 複数のキーワード引数
関数に定義されている引数の位置とは違っていてもOKですね。
当然、位置引数として渡すこともできます。
parrot('a million', 'bereft of life', 'jump') # 複数の位置引数
その組み合わせでも、位置引数のあとにキーワード引数という順番さえ守ればOKです。
parrot('a thousand', state='pushing up the daisies') # 1 positional, 1 keyword
エラーが出るケースも見ておきましょう。
parrot() # 必須引数(初期値なしの引数)が渡されてない parrot(voltage=5.0, 'dead') # 位置引数がキーワード引数よりも後に来ちゃってる parrot(110, voltage=220) # 同じ引数に重複して値を渡している parrot(actor='John Cleese') # そんなキーワード引数ねーし
という感じです。
次回も、もう少し引数について詳しく見て行きます。
