引数を名指しする!

前回は関数の引数に初期値を設定するテクニックでした。

 

 

前回に続き、引数のテクニックついてです。

本家公式チュートリアルも参考にしてください。

 

二つ目となる今回は、「キーワード引数です」

公式の例を引用してみましょう。

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')  # そんなキーワード引数ねーし

 

という感じです。

 

次回も、もう少し引数について詳しく見て行きます。