1:
# 內建命名空間:python直譯器# 在開啟python直譯器時就已經生成,然後內建的名字如print,資料型別等也同時被載入進記憶體裡
# 全域性命名空間:自己寫的**但不是函式中的**
# 在程式從上到下被執行過程中依次載入進記憶體;裡面放置了所設定的所有變數名和函式名
# 區域性命名空間:函式 裡 的 注意:如func等設定的函式名是屬於全域性命名空間的
# 在 呼叫函式 時生成,隨著函式執行的結束,該空間隨之消失。裡面是函式內部定義的名字
#在區域性:可以使用全域性、內建命名空間中的名字
#在全域性:可以使用內建命名空間中的名字,但是不能用區域性中使用
#在內建:不能使用區域性和全域性的名字
def input():
print(
'in input now')
def func():
input()
func() # 函式名加乙個括號代表函式的執行,去掉括號代表這個函式所在的記憶體位址
# func -->函式的記憶體位址
# 函式名() 函式的呼叫
# 函式的記憶體位址() 函式的呼叫
# 在正常情況下,直接使用內建的名字
# 當我們在全域性定義了和內建名字空間中同名的名字時,會使用全域性的名字
# 當我自己有的時候 我就不找我的上級要了
# 如果自己沒有 就找上一級要 上一級沒有再找上一級 如果內建的名字空間都沒有 就報錯
# 多個函式應該擁有多個獨立的區域性名字空間,不互相共享
def input():
print(
'in input now')
def func():
#input = 1
print(input)
func()
def func1():
a = 1
def func2():
#print(a) 多個函式應該擁有多個獨立的區域性名字空間,不互相共享,這裡a不能出現,是錯的
2:
# 作用域# 全域性作用域 —— 作用在全域性 —— 內建和全域性名字空間中的名字都屬於全域性作用域 ——globals()
# 區域性作用域 —— 作用在區域性 —— 函式(區域性名字空間中的名字屬於區域性作用域) ——locals()
a = 1
def func():
print(a)
func()
print(a)
a = 1
def func():
global
a a += 1
func()
print(a)
def func():
global
a a = 2
func()
print(a)
# 對於不可變資料型別 在區域性可以檢視全域性作用域中的變數
# 但不能直接修改
# 如果想要修改,需要在程式的一開始新增global宣告
# 如果在乙個區域性(函式)內宣告了乙個global變數,那麼這個變數在區域性的所有操作將對全域性的變數有效
a = 222
b = 444
def func():
x = '
aaa'
y = '
bbb'
print(locals()) # 使用locals檢視區域性命名空間的所有名字
func()
print(globals()) # 顯示內建命名空間和全域性命名空間的所有名字
print(locals()) # 在這裡顯示內容與print(globals())相同
# print(globals()) 永遠列印全域性的名字
# print(locals()) 輸出什麼 根據locals所在的位置
# 區域性對變數的操作不會對全域性產生影響,global宣告會對全域性造成修改,影響**安全
#a = 1
def func(x):
a = 2
return
a#a = 1
z =func(a)
print(z)
函式命名空間和作用域
內建 命名空間 python直譯器啟動之後就可以使用的變數 函式名 全域性 命名空間 在函式外面的變數名 函式名 區域性 命名空間 每乙個函式都擁有自己的命名空間 python直譯器執行 載入順序 所有 內建空間函式名 變數 逐行 載入全域性空間變數 函式名 區域性空間的變數 函式名 在呼叫函式的時...
函式命名空間和作用域
內建 命名空間 python直譯器啟動之後就可以使用的變數 函式名 全域性 命名空間 在函式外面的變數名 函式名 區域性 命名空間 每乙個函式都擁有自己的命名空間 python直譯器執行 載入順序 所有 內建空間函式名 變數 逐行 載入全域性空間變數 函式名 區域性空間的變數 函式名 在呼叫函式的時...
函式 命名空間和作用域
一.命名空間。二.作用域 三函式的巢狀。今日新名詞 1 globals 函式 檢視全域性作用域的內容 2 locals 函式 檢視區域性作用域的內容 3 global 方法 呼叫全域性作用域的變數並獲得修改許可權 4 nonlocal 方法 呼叫區域性作用域的變數並獲得修改許可權.命名空間 用來存放...