2

a次の Python スニペットの変数のスコープについて疑問に思っていましたが、

# ============================
def get_plotter():
    def get_a():
        return a
    a = 3.14
    return get_a
# ============================
if __name__ == '__main__':
    f = get_plotter()
    print f()
# ============================

出力は ですが、終了するとすぐに範囲外に3.14なると予想していたコードを見ると、事実上未定義の何かが残っています。aget_plotter()

ここに印刷されているのは揮発性メモリの内容だけですか? どうしたの?

4

1 に答える 1

4

これは、クロージャー、または「データが添付された関数」のために機能し、ここでよく説明されています

https://stackoverflow.com/a/141426/735204

于 2012-08-17T16:27:37.020 に答える