Python-17-作用域
阿新 • • 發佈:2020-06-22
python有一個名為vars的內建函式,它返回變數關聯的不可見的字典:
>>> x = 1
>>> scope = vars()
>>> scope['x']
1
>>> scope['x'] += 1
>>> x
2
一般而言,不應修改vars返回的字典,因為根據Python官方檔案的說法,這樣做的結果是 不確定的。
如果有一個區域性變數或引數與你要訪問的全域性變數同名,就無法直接訪問全域性變數,因為它被區域性變數遮住了。
如果需要,可使用函式globals來訪問全域性變數。這個函式類似於vars,返回一個包含全 局變數的字典。(locals返回一個包含區域性變數的字典。)
>>> def combine(parameter):
... print(parameter + globals()['parameter'])
...
>>> parameter = 'berry'
>>> combine('Shrub')
Shrubberry
重新關聯全域性變數(使其指向新值)
>>> x = 1
>>> def change_global():
... global x
... x = x + 1
...
>>> change_global()
>>> x
2
Python函式可以巢狀,巢狀通常用處不大,但有一個很突出的用途:使用一個函式來建立另一個函式
def multiplier(factor):
def multiplyByFactor(number):
return number * factor
return multiplyByFactor
注意這裡外面的函式返回的是裡面的函式,返回一個函式,而沒有呼叫
>>> double = multiplier(2)
>>> double(5)
10
>>> triple = multiplier(3)
>>> triple(3)
9
>>> multiplier(5)(4)
20