python中函式作用域

2021-10-17 02:51:11 字數 2387 閱讀 2332

在python中,乙個函式就是乙個作用域

name =

'xiaoming'

defchange_name()

: name =

'sthu'

print

('在change_name裡的name:'

,name)

change_name(

)# 呼叫函式

print

("在外面的name:"

,name)

執行結果如下:

在change_name裡的name: sthu

在外面的name: xiaoming

我們再試一下在巢狀函式中是如何的尋找的?

'''

'''age =

15def

func()

:print

('第一層age:'

,age)

# 第一層age: 15

deffunc2()

: age =

73print

("func2中的age:"

,age)

# func2中的age: 73

deffunc3()

: age =

84print

("func3中的age:"

,age)

# func3中的age: 84

func3(

)# 呼叫func3函式

func2(

)# 呼叫func2函式

func(

)

在以上巢狀函式中,就能夠很好的說明乙個函式就是乙個作用域,那麼我們現在稍微改一下**看看情況?

age =

15def

func()

:print

('第一層age:'

,age)

# 第一層age: 15

deffunc2()

:print

("func2中的age:"

,age)

# func2中的age: 15 # 看到沒有,如果當前作用域裡沒有age變數,那麼它就會往上找

deffunc3()

: age =

84print

("func3中的age:"

,age)

# func3中的age: 84

func3(

)# 呼叫func3函式

func2(

)# 呼叫func2函式

func(

)

那麼,這時候有人就說了,屁話一大堆講的原來是區域性變數和全域性變數,那麼我想問:在上面這個巢狀函式中,func2中並沒有age變數,那麼它是如何找到全域性變數age = 15的?

此時我們就需要來看一下作用域的查詢順序了:

變數作用域legb

咳咳,還是先了解下什麼是命名空間把?

命名空間,又名name space,顧名思義就是存放名字的地方,存什麼名字呢?舉例說明,x = 1 ,1存放在記憶體當中,那麼變數名x存放在**呢?命名空間就是存放名字x與1繫結關係的地方

>>

> x =

1>>

>id(

1)1576430608

命名空間分為以下3種:

不同變數的作用域不同就是有這個變數所在的命名空間決定的.

作用域即範圍

讓我們來舉例看一下

'''

'''level =

'l0'

n =22

deffunc()

: level =

'l1'

n =33print

(locals()

)# 在之前說過在python中,乙個函式就是乙個作用域,這就很完美的體現了

defouter()

: n =

44 level =

'l2'

print

(locals()

,n)# 44

definner()

: level =

'l3'

print

(locals()

,n)# 44

inner(

) outer(

)func(

)

以 l --> e --> g -->b 的規則查詢,即:在區域性找不到,便會去區域性外的區域性找(例如閉包),再找不到就會去全域性找,再者去內建函式中找。

Python中的函式作用域

在python中,乙個函式就是乙個作用域 name xiaoyafei def change name name 肖亞飛 print 在change name裡的name name change name 呼叫函式 print 在外面的name name 執行結果如下 在change name裡的n...

python中函式作用域 python中函式作用域

1 作用域 如果乙個變數在def內賦值,他被定位在這個函式內 如果乙個變數在乙個巢狀的def中賦值,對於巢狀的函式來說,它非本地的 如果在def之外賦值,他就是整個檔案 2 在互動式模式下,其實是在乙個名為 main 的模板內。3 乙個函式的內部的任何型別的賦值都會把乙個名稱劃定為本地的。這包括 語...

Python 函式作用域

python中變數作用域分4種情況 x max 1,6 max為系統變數,它的作用域為python的所有模組 y 1 y為全域性變數,它的作用域為當前模組 defouter i 3 i的作用域為當前函式,包括巢狀函式 definner count 2 count為區域性變數,作用域只在當前函式有效函...