有了命名空間之後,就可以在棧區中存放相同的名字,詳細的命名空間:↓
存放的名字:內建命名空間存放的是python直譯器自帶的名字
例如:print input ....
生命週期:py直譯器啟動則產生,直譯器關閉則銷毀
存放的名字:只要不是內建的和函式內定義的名字,都是全域性命名空間
生命週期:python檔案執行則產生,python檔案執行完畢後則銷毀
存放的名字:在呼叫函式時執行函式體**中產生的函式內的名字
生命週期 :在呼叫函式時產生,函式呼叫結束後銷毀
內建命名空間》全域性命名空間》區域性命名空間
區域性命名空間》全域性命名空間》內建命名空間
內建命名空間
全域性命名空間
區域性命名空間
6.1如果當前在區域性命名空間↓
# 區域性命名空間》全域性命名空間》內建命名空間
# input = 333 全域性找到列印 333 ,全域性注釋掉則去內建找
# def func():
# input = 444 #先在區域性找,區域性注釋掉沒有之後去全域性↑找
# print(input)
# func()
6.2 如果當前在全域性命名空間#全域性命名空間》內建命名空間
# .....
示範1:# def func():
# print(x)
# x = 111
# func()
# input = 333
# def func():
# print(input)
# func()
示範2:命名空間的「巢狀」關係 是以函式定義階段為準的,與呼叫位置無關# input = 111
# def f1():
# # input = 222
# def f2():
# # input=333
# print(input)
# input = 222
# f2()
# f1()
# 命名空間的查詢順序是以定義階段為準的
# 命名空間的查詢順序是以定義階段為準的
# 命名空間的查詢順序是以定義階段為準的
# 命名空間的查詢順序是以定義階段為準的
# 命名空間的查詢順序是以定義階段為準的
# 命名空間的查詢順序是以定義階段為準的
# x = 111
# def func():
# print(x)
# x = 222
# func()
全域性作用域:內建命名空間、全域性命名空間
1、全域性存活
2、全域性有效
區域性作用域:區域性命名空間的名字
1、臨時存活
2、區域性有效:在函式內有效
# l:當前位置
# e:外層函式
# g:全域性
# b:內建
# 基於當前所在位置向外一層一層查詢 l--> e--> g--> b
# legb
# builtin
# global
#def f(x):
#enclosing
# def f1():
#enclosing
# def f2():
#local
# print(x)
# x= 111
# def func():
# global x # global申明x這個名字是全域性的名字,不要再造新的名字
# x = 222
# func()
# print(x)
# 示範
# l = [111,222]
# def func():
# func()
# print(l)
# nonlocal(了解) 修改函式外層函式包含的名字對應的值(不可變型別)
# x = 0
# def f1():
# x=1
# def f2():
# nonlocal x
# x=2
# f2()
# print(x)
# f1()
# global
# x = 111
# def func():
# global x
# x = 222
# func()
# print(x)
命名空間與作用域
命名空間即存放名字與物件對映 繫結關係的地方。對於x 3,python會申請記憶體空間存放物件3,然後將名字x與3的繫結關係存放於命名空間中,del x表示清除該繫結關係。在程式執行期間最多會存在三種命名空間 伴隨python直譯器的啟動 關閉而產生 因而是第乙個被載入的命名空間,用來存放一些內建的...
命名空間與作用域
定義 它是儲存作用域中變數的字典。乙個命名空間中不能有重名,但是不同的命名空間可以重名而沒有任何影響。分類 按照變數定義的位置,可以劃分為以下3類 local,區域性命名空間,記錄了函式中定義的所有變數,包括函式的入參 內部定義的區域性變數。使用locals 檢視區域性命名空間。返回的是字典 glo...
命名空間與作用域
命名空間即存放名字與物件對映 繫結關係的地方。對於x 3,python會申請記憶體空間存放物件3,然後將名字x與3的繫結關係存放於命名空間中,del x表示清除該繫結關係。在程式執行期間最多會存在三種命名空間 1.內建命名空間 伴隨python直譯器的啟動 關閉而產生 因而是第乙個被載入的命名空間,...