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}
以上、最後まで読んでいただきありがとうございます。