python LEGB識別符號解析順序

2021-09-20 05:27:21 字數 1097 閱讀 8833

"""

legb查詢規則:

l locals 區域性變數,當前所在命名空間(如函式,模組等) 注意,包括函式的引數(形參)

e enclosing function 閉包空間(外部巢狀函式的命名空間)

g globals 全域性變數,某個python模組的命名空間

b builtins python內建模組的命名空間

"""key='hello'

#模組全域性

deftest

(): print(key)#全域性,輸出:hello

deftest2

(key):

print(key,end='***')#區域性(形參),輸出 key引數傳入的值

key=key+str(512)

print(key)

deftest3

():#print(key)

""" 這裡↑遵循legb規則解析識別符號key的時候,

在函式locals中發現了key=1024

key不再當作全域性變數解析,所以開啟注釋後這裡會報錯:

local variable 'key' referenced before assignment

"""key=1024

#注意和前面的test函式比較

print(key)

deftest4

():global key

#若要在模組內的某個函式裡面修改模組全域性變數,一定要有global關鍵字

key=1024

if __name__ == '__main__':

test()

test2('hi')

test3()

test4()

test()

執行結果:

hello

hi***hi512

1024

1024

process finished with exit code 0

這個問題使用pycharm程式設計時候,編輯器是可以用高亮給你提示出來的......so,有個好的ide真實省心省力啊o(∩_∩)o

Scala《識別符號》

val scala.math.sqrt 2 val val 42 println val 1 to10 等價於 1.to 10 1 10 等價於 1 10 1 tostring 等價於 1.tostring val a 42 a等價於 a.unary a 1 等價於 a a 1 構造列表list 1...

python 識別符號

在 python 裡,識別符號由字母 數字 下劃線組成。在 python 中,所有識別符號可以包括英文 數字以及下劃線 但不能以數字開頭。python 中的識別符號是區分大小寫的。以下劃線開頭的識別符號是有特殊意義的。以單下劃線開頭 foo 的代表不能直接訪問的類屬性,需通過類提供的介面進行訪問,不...

Python 識別符號

在 python 裡,識別符號由字母 數字 下劃線組成。在 python 中,所有識別符號可以包括英文 數字以及下劃線 但不能以數字開頭。python 中的識別符號是區分大小寫的。以下劃線開頭的識別符號是有特殊意義的。以單下劃線開頭 foo 的代表不能直接訪問的類屬性,需通過類提供的介面進行訪問,不...