2015-09-22 14 views
7

*は、次のコードで何を意味していますか(pprintライブラリにあります)?関数宣言で星*だけが意味するものは何ですか?

def pformat(object, indent=1, width=80, depth=None, *, compact=False): 
    """Format a Python object into a pretty-printed representation.""" 
    return PrettyPrinter(indent=indent, width=width, depth=depth, 
         compact=compact).pformat(object) 

*argsた場合、それは、位置パラメータの任意の数であろう。パラメータ値はタプルargsとなります。最初の4つのパラメータは、名前または位置のいずれかによって割り当てることができます。パラメータcompactは、名前によってのみ割り当てることができます。

まあ、NO!それはthe documentationと一致しないので:

を関数呼び出しでは、キーワード引数は、位置 引数に従わなければなりません。

他の名前付き引数の後には、スターは何をしますか?それはどのように使用されていますか?または、それが使用されないと、なぜそこにありますか?

答えて

10

可変引数がない場合は、位置引数をkeyword-only argumentsから区切ります。これはPython-3のみの機能です。

+0

ありがとうございました。質問では、Python 2のドキュメントページを参照しましたが、引用されたフレーズも3に含まれています。 – stenci

関連する問題