作用域介紹
python中的作用域分4種情況: L:local,局部作用域,即函數中定義的變數;
E:enclosing,巢狀的父級函數的局部作用域,即包含此函數的上級函數的局部作用域,但不是全域的;
G:globa,全域變量,就是模組層級定義的變數;B:built-in,系統固定模組裡面的變量,如int, bytearray等。 搜尋變數的優先順序依序是:作用域局部>外層作用域>目前模組中的全域>python內建作用域,也就是LEGB。
x = int(2.9) # int built-in g_count = 0 # global def outer(): o_count = 1 # enclosing def inner(): i_count = 2 # local
當然,local和enclosing是相對的,enclosing變數相對上層來說也是local。
#定义变量a >>> a = 0 >>> print a 0 #定义函数p() >>> def p(): ... print a ... >>> p() 0 #定义函数p2() >>> def p2(): ... print a ... a = 3 ... print a ... >>> p2() # 运行出错,外部变量a先被引用,不能重新赋值 Traceback (most recent call last): File "<interactive input>", line 1, in <module> File "<interactive input>", line 2, in p2 UnboundLocalError: local variable 'a' referenced before assignment #定义函数p3() >>> def p3(): ... a = 3 # 不引用直接赋值 ... print a ... >>> p3() 3 >>> print a 0 # 外部变量a并未改变
以上所述是小編給大家介紹的Python中的變數和作用域詳解,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對腳本之家網站的支持!