1. 程式人生 > 實用技巧 >Python-17-作用域

Python-17-作用域

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