私は勉強して*args
おり**kwargs
、最近pythonで勉強していて、python 3では*
、タイトルの例のように裸を使用して、その後に位置引数が許可されていないことを示すことができることに気づきました。
問題は、リファレンスの正式な定義または「引数リスト」とどのように一致するかがわかりません。次の引数リストの定義があります。
argument_list ::= positional_arguments ["," keyword_arguments]
["," "*" expression] ["," keyword_arguments]
["," "**" expression]
| keyword_arguments ["," "*" expression]
["," keyword_arguments] ["," "**" expression]
| "*" expression ["," keyword_arguments] ["," "**" expression]
| "**" expression
それが有効であることを確認する唯一の方法はexpression
空であることですが、それがどのように起こるかわかりませんでした。
が空である可能性があると想定する場合expression
、次の定義が有効である必要があります。
def foo(*)
def bar(*,**kwargs)
*
これらの定義は、その後にキーワード引数が必要なため意味がありません。
そのため、この件に関する説明をいただければ幸いです。何が恋しいですか?それとも、上記の BNF は正しくないのでしょうか?