日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python的命名空间_python中命名空间的三种方式介绍(附示例)

發布時間:2024/1/23 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的命名空间_python中命名空间的三种方式介绍(附示例) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇文章給大家帶來的內容是關于python中命名空間的三種方式介紹(附示例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

python中的命名空間分三種:

內置的命名空間,在啟動解釋器的時候自動加載進內存的各種名字所在的空間,比如print,input等不需要定義就可以使用的名字

全局命名空間,就是從上到下所有我們定義的變量名和函數名所在的空間,是在程序從上到下被執行的過程中加載進內存的。

局部命名空間,比如函數在執行時所開辟的空間,里面存放了函數內部定義的各種名字,隨著函數執行結束 這個局部命名空間就消失了。

在局部命名空間可以使用全局和內置命名空間中的名字

在全局命名空間可以使用內置命名空間中的名字,但不能使用局部命名空間的。

在內置命名空間不能使用全局和局部的名字。

可以形象地理解成內置命名空間具有最高級別,不需要定義就可以使用,全局命名空間次之,最低級是局部命名空間。

當低級命名空間使用名字時首先會在自身的命名空間里查找,如果有就使用,沒有的話就到上一級命名空間內查找,如果有就使用,沒有就繼續到更上一級空間內查找,直到頂層的內置命名空間,如果有就使用,沒有則會報錯。

舉個例子如下:num = 1 #這是全局命名空間內定義的num = 1

def func1(): #這個函數會創建一個局部命名空間1

num = 2 #這是在局部命名空間1定義的num = 2

def func2(): #這個函數會創建一個局部命名空間2

num = 3 #這是在局部命名空間2 內 定義的num = 3

print(num) #這是在局部命名空間2內 使用num 變量

func2() # 調用函數func2時 會執行該命令創建局部命名空間2

func1() #調用函數func1時會創建局部命名空間1,

#這幾個命名空間的級別順序是:內置>全局>局部1>局部2

#當print(num)指令執行時它會在局部2內查找是否有num,發現有則直接引用,如果沒有則會到上一級(局部1)中查找,局部1沒有則繼續到上一級(全局)查找

再看一個例子:#max()函數是內置的函數,如果我們在全局命名空間中定義了函數名為max的函數時,則該函數就失效了,也就是說在自身空間內找到了max()后就不去內置命名空間查找了

def max(a,b,c):

return 'max失效了?'

print(max(1,2,3))#

正常情況下應該輸出3(max函數功能是返回最大值),但是因為我們把max這個名字占用了,所以當使用時程序就不去上一級空間(內置命名空間)去查找了

與命名空間有關的兩個函數globals()和locals()

可以用globals()查看全局命名空間的所有定義的名字

可以用locals()查看當前命名空間的所有定義的名字,在全局則返回全局,在局部則返回局部

這兩個函數的返回值可以看作是字典,格式都是{key1:value1,key2:value2,.....}

當函數1內嵌套函數2時,對于函數1內的不可變數據類型的變量,函數2內可以引用,但不可修改def func1():

a = 1

def func2():

a = a + 1

#此處會報一個嚴重錯誤,因為a同時出現在等號兩邊,Python會先執行等號右邊的表達式,

#發現你在引用a,然后它會先在本空間查找a,結果找到了等號左邊的a,其結果就是“在定義變量前引用變量”

pass

func2()

func1()#如果想要修改,可以使用nonlocal(python3中新增)

def func1():

a = 1

def func2():

nonlocal a

a = a + 1

func2()

print(a)

func1()

#我們可以看出,執行func2()后再輸出a,a已經變成2了

2

nonlocal只能作用于局部變量,當使用后它會自動查找上一級局部命名空間是否有該變量,如果沒有繼續向上查找,直到最上一級“局部命名空間”

以上就是python中命名空間的三種方式介紹(附示例)的詳細內容,更多請關注php中文網其它相關文章!

本文轉載于:segmentfault思否,如有侵犯,請聯系a@php.cn刪除

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的python的命名空间_python中命名空间的三种方式介绍(附示例)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。