4
私はPythonを学んでいて、私がよく理解していない例を見つけました。公式チュートリアルでは、次のコードが与えられている:「デフォルト値を:Pythonのデフォルトパラメータの範囲
i = 5
def f(arg=i):
print(arg)
i = 6
f()
は、C++から来て、これは5を出力します。しかし、私はまた、技術的な説明を理解したいという私のために直感的に理にかなっています定義されたスコープ内の関数定義の点で評価されます。ここで定義されている範囲は何を意味していますか?
* "定義範囲" *は、関数が定義されている範囲を意味します。すなわち、 'def ='行が実行される 'i = 5'を含むものです。参照:http://stackoverflow.com/q/1132941/3001761 – jonrsharpe
"範囲の定義":Pythonでは、ローカルスコープの関数、つまり関数内の関数を持つことができます。 C++で最も近いのはラムダです。これはC++で新しくなっています(Pythonにはlambdaもあります)。 – cdarke
短い答え:デフォルト値は 'f.func_defaults'にタプルとして格納され、その値はあなたのコードに'(5、) 'です。 – gdlmx