命名空間與作用域

2022-07-13 00:42:17 字數 2751 閱讀 5833

有了命名空間之後,就可以在棧區中存放相同的名字,詳細的命名空間:↓
存放的名字:內建命名空間存放的是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直譯器的啟動 關閉而產生 因而是第乙個被載入的命名空間,...