Python命名空間與作用域

2022-08-18 00:18:12 字數 999 閱讀 9151

作用:命名空間可以使棧區中存放相同的名字,從而解決命名衝突

命名空間分為三種:

內建命名空間

全域性命名空間

區域性命名空間

# 變數名a

a = 1

# 函式名func

def func():

pass

# 類名myclass

class myclass:

pass

def func(x, y):

pass

func(1, 2)

找尋變數的呼叫順序採用legb原則(即就近原則)

b —— builtin(python);python內建模組的命名空間 (內建作用域)

g —— global(module); 函式外部所在的命名空間 (全域性作用域)

e —— enclosing function locals;外部巢狀函式的作用域(巢狀作用域)

l —— local(function);當前函式內的作用域 (區域性作用域)

依據就近原則,從下往上 從裡向外 依次尋找

# global的使用

x = 1

def func():

global x

x = 2

func()

print(x)

# nonlocal的使用

def func1():

x = 1

def func2():

nonlocal x

x = 2

func2()

print(x)

func1()

命名空間是對棧的一種劃分,真正存在的是棧區。命名空間只是一種虛擬的劃分

命名空間只有優先順序之分,並無沒有巢狀關係

命名空間的「巢狀關係」決定了名字的查詢順序

命名空間的「巢狀關係」以函式定義階段為準

Python 命名空間與作用域

2.作用域 作用範圍 存放名字的地方,是對棧區的劃分,有了命名空間之後,就可以在棧區中存放相同的名字,詳細的,命名空間 存放的名字 存放的python直譯器內建的名字 存活週期 python直譯器啟動則產生,python直譯器關閉則銷毀 print in function print input i...

python命名空間與作用域

命名空間 存放名字的地方,是對棧區的劃分,有了命名空間之後,就可以在棧區中存放相同的名字。存放的名字 存放python直譯器內建的名字 例如,print input print input 存活週期 python直譯器啟動則產生,python直譯器關閉則銷毀 存放的名字 只要不是函式內定義 也不是內...

Python命名空間與作用域

作用域global與nonlocal 總結作用 命名空間可以使棧區中存放相同的名字,從而解決命名衝突 命名空間分為三種 內建命名空間 全域性命名空間 區域性命名空間 變數名a a 1 函式名func deffunc pass 類名myclass class myclass passdef func ...