2016-11-26 13 views
0

相同的運行locals()globals()內IDLE返回相同的鍵/值爲什麼全局和局部的命名空間總是在交互式會話

我提取鍵只。 keys(),並轉換爲使用list()

['__doc__', '__spec__', '__builtins__', '__loader__', '__name__', '__package__'] 

再次運行下面的代碼

z = 100 
def f(x): 
    y = 100 
    return y 
f(z) 

檢查當地人和全局,都具有相同的鍵列/值

['z', '__doc__', '__spec__', '__builtins__', '__loader__', '__name__', '__package__', 'f'] 

爲什麼發生這種情況和爲什麼變數yx沒有出現

+2

'f'中的locals()'不會顯示在交互式會話中。 「本地人」只有在「f」內選中或打印纔有意義。 – hpaulj

回答

1

在函數返回後,函數中定義的變量不再存在。

這是允許你有幾個具有相同的內部變量名稱沒有干擾的功能。因此不會出現和y