python中locals和globals函式

2022-09-03 04:27:14 字數 3806 閱讀 9027

首先,是關於名字空間的乙個名詞解釋。是枯燥,但是很重要,所以要耐心些。python使用叫做名字空間的東西來記錄變數的軌跡。名字空間只是乙個 字典,它的鍵字就是變數名,字典的值就是那些變數的值。實際上,名字空間可以象python的字典一樣進行訪問,一會我們就會看到。

在乙個python程式中的任何乙個地方,都存在幾個可用的名字空間。每個函式都有著自已的名字空間,叫做區域性名字空間,它記錄了函式的變數,包括 函式的引數和區域性定義的變數。每個模組擁有它自已的名字空間,叫做全域性名字空間,它記錄了模組的變數,包括函式、類、其它匯入的模組、模組級的變數和常 量。還有就是內建名字空間,任何模組均可訪問它,它存放著內建的函式和異常。

當一行**要使用變數 x 的值時,python會到所有可用的名字空間去查詢變數,按照如下順序:

區域性名字空間 - 特指當前函式或類的方法。如果函式定義了乙個區域性變數 x,python將使用這個變數,然後停止搜尋。

全域性名字空間 - 特指當前的模組。如果模組定義了乙個名為 x 的變數,函式或類,python將使用這個變數然後停止搜尋。

內建名字空間 - 對每個模組都是全域性的。作為最後的嘗試,python將假設 x 是內建函式或變數。

如果python在這些名字空間找不到 x,它將放棄查詢並引發乙個 nameerror 的異常,同時傳 遞 there is no variable named 'x' 這樣一條資訊

象python中的許多事情一樣,名字空間在執行時直接可以訪問。特別地,區域性名字空間可以通過內建的 locals 函式來訪問。全域性(模組級別)名字空間可以通過 globals 函式來訪問

locals 介紹

1 >>> def test(arg):

2 #函式 foo 在它的區域性名字空間中有兩個變數:arg(它的值被傳入函式),和 z(它是在函式裡定義的)。

3 z = 1

4 print locals()

5 >>> test(4)

6 #locals 返回乙個名字/值對的字典。這個字典的鍵字是字串形式的變數名字,字典的值是變數的實際值。

7 #所以用 4 來呼叫 foo,會列印出包含函式兩個區域性變數的字典:arg (4) 和 z (1)。

8 9 >>> test('doulaixuexi')

10 #locals 可以用於所有型別的變數。

11 12 >>>

globals 介紹

由此可見,發現globals 函式返回乙個全域性變數的字典,包括所有匯入的變數。

首先,是關於名字空間的乙個名詞解釋。是枯燥,但是很重要,所以要耐心些。python使用叫做名字空間的東西來記錄變數的軌跡。名字空間只是乙個 字典,它的鍵字就是變數名,字典的值就是那些變數的值。實際上,名字空間可以象python的字典一樣進行訪問,一會我們就會看到。

在乙個python程式中的任何乙個地方,都存在幾個可用的名字空間。每個函式都有著自已的名字空間,叫做區域性名字空間,它記錄了函式的變數,包括 函式的引數和區域性定義的變數。每個模組擁有它自已的名字空間,叫做全域性名字空間,它記錄了模組的變數,包括函式、類、其它匯入的模組、模組級的變數和常 量。還有就是內建名字空間,任何模組均可訪問它,它存放著內建的函式和異常。

當一行**要使用變數 x 的值時,python會到所有可用的名字空間去查詢變數,按照如下順序:

區域性名字空間 - 特指當前函式或類的方法。如果函式定義了乙個區域性變數 x,python將使用這個變數,然後停止搜尋。

全域性名字空間 - 特指當前的模組。如果模組定義了乙個名為 x 的變數,函式或類,python將使用這個變數然後停止搜尋。

內建名字空間 - 對每個模組都是全域性的。作為最後的嘗試,python將假設 x 是內建函式或變數。

如果python在這些名字空間找不到 x,它將放棄查詢並引發乙個 nameerror 的異常,同時傳 遞 there is no variable named 'x' 這樣一條資訊

象python中的許多事情一樣,名字空間在執行時直接可以訪問。特別地,區域性名字空間可以通過內建的 locals 函式來訪問。全域性(模組級別)名字空間可以通過 globals 函式來訪問

locals 介紹

1 >>> def test(arg):

2 #函式 foo 在它的區域性名字空間中有兩個變數:arg(它的值被傳入函式),和 z(它是在函式裡定義的)。

3 z = 1

4 print locals()

5 >>> test(4)

6 #locals 返回乙個名字/值對的字典。這個字典的鍵字是字串形式的變數名字,字典的值是變數的實際值。

7 #所以用 4 來呼叫 foo,會列印出包含函式兩個區域性變數的字典:arg (4) 和 z (1)。

8 9 >>> test('doulaixuexi')

10 #locals 可以用於所有型別的變數。

11 12 >>>

globals 介紹

由此可見,發現globals 函式返回乙個全域性變數的字典,包括所有匯入的變數。

首先,是關於名字空間的乙個名詞解釋。是枯燥,但是很重要,所以要耐心些。python使用叫做名字空間的東西來記錄變數的軌跡。名字空間只是乙個 字典,它的鍵字就是變數名,字典的值就是那些變數的值。實際上,名字空間可以象python的字典一樣進行訪問,一會我們就會看到。

在乙個python程式中的任何乙個地方,都存在幾個可用的名字空間。每個函式都有著自已的名字空間,叫做區域性名字空間,它記錄了函式的變數,包括 函式的引數和區域性定義的變數。每個模組擁有它自已的名字空間,叫做全域性名字空間,它記錄了模組的變數,包括函式、類、其它匯入的模組、模組級的變數和常 量。還有就是內建名字空間,任何模組均可訪問它,它存放著內建的函式和異常。

當一行**要使用變數 x 的值時,python會到所有可用的名字空間去查詢變數,按照如下順序:

區域性名字空間 - 特指當前函式或類的方法。如果函式定義了乙個區域性變數 x,python將使用這個變數,然後停止搜尋。

全域性名字空間 - 特指當前的模組。如果模組定義了乙個名為 x 的變數,函式或類,python將使用這個變數然後停止搜尋。

內建名字空間 - 對每個模組都是全域性的。作為最後的嘗試,python將假設 x 是內建函式或變數。

如果python在這些名字空間找不到 x,它將放棄查詢並引發乙個 nameerror 的異常,同時傳 遞 there is no variable named 'x' 這樣一條資訊

象python中的許多事情一樣,名字空間在執行時直接可以訪問。特別地,區域性名字空間可以通過內建的 locals 函式來訪問。全域性(模組級別)名字空間可以通過 globals 函式來訪問

locals 介紹

1 >>> def test(arg):

2 #函式 foo 在它的區域性名字空間中有兩個變數:arg(它的值被傳入函式),和 z(它是在函式裡定義的)。

3 z = 1

4 print locals()

5 >>> test(4)

6 #locals 返回乙個名字/值對的字典。這個字典的鍵字是字串形式的變數名字,字典的值是變數的實際值。

7 #所以用 4 來呼叫 foo,會列印出包含函式兩個區域性變數的字典:arg (4) 和 z (1)。

8 9 >>> test('doulaixuexi')

10 #locals 可以用於所有型別的變數。

11 12 >>>

globals 介紹

由此可見,發現globals 函式返回乙個全域性變數的字典,包括所有匯入的變數。

Python神奇的內建函式locals的例項講解

摘要 相同屬性不相鄰問題 需求 有兩個list,分別為list1和list2。list1中有n個物件,每個物件有5個屬性,其中乙個屬性是tid,要求list1按tid排序,相鄰的物件的tid不能重複,m為不重複的tid數量,m不確定。list2存放的是所有可能出現的tid的情況。神奇的local函式...

Python神奇的內建函式locals的例項講解

摘要 相同屬性不相鄰問題 需求 有兩個list,分別為list1和list2。list1中有n個物件,每個物件有5個屬性,其中乙個屬性是tid,要求list1按tid排序,相鄰的物件的tid不能重複,m為不重複的tid數量,m不確定。list2存放的是所有可能出現的tid的情況。神奇的local函式...

Python基於locals返回作用域字典

英文文件 locals update and retur程式設計客棧n a dictionary representing the current local symbol table.free variables are returned by locals when it is called i...