Python asyncioのソースを眺めていて、すっかり忘れていた ‘*’ (アスタリスク) 1個が示す意味。

これです。

__init__の引数に ‘*’ (アスタリスク) が1個、ポツンとありますよね。

可変長引数ではないし… これは何だったっけ… と、Google先生にキーワードを投げかけてみるも、なかなか見つからず。

最終的にこのキーワードで見つかりました。

python asterisk single only

出てきた結果がこれ。

Python bare asterisk in function argument – Stack Overflow

なるほど、bare asteriskと表現するのね…。

気になる回答は以下。

Bare * is used to force the caller to use named arguments – so you cannot define a function with * as an argument when you have no following keyword arguments.

See this answer or Python 3 documentation for more details.

要するに、

‘*’は、その後ろの引数に名前付きを強制したいときに使うんだよ。Python 3の公式ドキュメントを見てみ。

ということらしい。

ああ、しまった… 確かに以前、Python 2->3の変更点を舐めた時に、確かに見たわ。

以下、公式ドキュメント。

Parameters after * or *identifier are keyword-only parameters and may only be passed used keyword arguments.

実際に試した結果が以下。確かに。

教訓。

学んだことは普段からアウトプットしないと、あっという間に忘れるんですね。。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする