3

関数spamに signature があるとしますspam(ham=None)。次の 3 つの呼び出しはすべて、の名前空間のローカル変数hamに値 を持たせます。spamNone

spam()
spam(None)
spam(ham=None)

spamこれら 3 つの代替案のうち、実際に使用されたものをどのように確認できますか?

4

1 に答える 1

7

できません。 この質問では、デコレータを使用して関数をラップし、渡された引数を属性として設定する方法について説明しています。spamしかし、外部からの助けなしに内部から発見する方法はありません。**kwargs情報を保存するためにそれを受け入れて使用する関数で呼び出しを傍受する必要があります。

ただし、これを行うには注意が必要です。引数を渡すさまざまな方法は、同じように機能するはずです。異なる動作をさせるようなことをすると、関数を使おうとする多くの人を混乱させることになります。

于 2012-09-11T20:36:55.903 に答える