いーほろよいの技術ブログ

IT技術ブログになります。

Pythonで関数を定義する その2

はじめに

前回は簡単に関数定義について触れました。

今回も注意点なのですが、ドキュメントに書かれていた注意点で意味が『イマイチ分かり難いかな?』と思った点を書いていきたいと思います。

※あくまで個人的に分かり難いと思った箇所です。

 

イマイチ分かり難いドキュメント

こちら"4.7.2. キーワード引数"の"不適切"な使い方についての説明です。

4. その他の制御フローツール — Python 3.6.1 ドキュメント

 その前に下記の用語を理解する必要があります。

位置指定引数 

こちらはドキュメントに説明が無く、いきなり出てくる単語です。

前後の文書を読んでみると、どうやら初期値無しの引数の事を指すようです。

 

キーワード引数

こちらはドキュメントにもあるのですが、kwarg=valueと呼び出す(与える?)事のできる引数です。

 

上記を踏まえてドキュメントの"不適切"な点を確認してみましょう。

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, "!")

parrot() # required argument missing
位置指定引数(voltage)が指定されているのに引数に与えてない

parrot(voltage=5.0, 'dead')  # non-keyword argument after a keyword argument
キーワード引数位置指定引数後でなければならないという原則がある。それを満たしていない。
一見満たしているようだが、第1引数がキーワード引数第2引数が位置指定引数になっている。 parrot(110, voltage=220) # duplicate value for the same argument 位置指定引数の後に続くキーワード引数前の位置指定引数と指定が被っている。
110がvoltageにも関わらず、第2引数のキーワード引数でvoltageが指定されている。 parrot(actor='John Cleese') # unknown keyword argument
存在しないキーワード引数を指定している。

 ざっとこんな感じです。

...余計に混乱させてしまったらゴメンなさい...

ようは下記の形式で呼び出さないといけないという事です。

位置指定引数1{, 位置指定引数n}{, キーワード引数n}

 

以上、最後まで読んでいただきありがとうございます。