詳解Python?中的命名空間、變量和范圍
Python 中的命名空間、變量和范圍
什么是命名空間?
首先,我們需要感知python中的名稱(標(biāo)識(shí)符)是什么。眾所周知,在python中,一切都是對(duì)象。名稱幫助我們?cè)L問底層對(duì)象。例如,當(dāng)我們做作業(yè)時(shí) a = 1 , 1 是存儲(chǔ)在內(nèi)存中的對(duì)象,a 是我們與之關(guān)聯(lián)的名稱。我們可以通過內(nèi)置函數(shù)獲取某個(gè)對(duì)象的地址(在 RAM 中), ID() .讓我們看看如何使用它。
a = 1 打印('id(1)=',id(1)) 打?。?id(a)=',id(a)) 輸出: id(1) = 9801248 id(a) = 9801248
在這里,兩者都指同一個(gè)對(duì)象 1 ,所以他們擁有相同的id。
現(xiàn)在我們知道了名稱是什么,我們可以繼續(xù)討論名稱空間的概念。簡(jiǎn)單地說,命名空間是名稱的集合。在 Python 中,您可以將命名空間想象為您定義的每個(gè)名稱到相應(yīng)對(duì)象的映射。不同的命名空間可以在給定時(shí)間共存,但完全隔離。當(dāng)我們啟動(dòng) Python 解釋器時(shí),會(huì)創(chuàng)建一個(gè)包含所有內(nèi)置名稱的命名空間,并且只要解釋器??運(yùn)行,它就存在。這就是內(nèi)置函數(shù)像 ID() , 打印() 我們始終可以從程序的任何部分獲得等。每個(gè)模塊創(chuàng)建自己的全局命名空間。這些不同的命名空間是隔離的。因此,不同模塊中可能存在的相同名稱不會(huì)發(fā)生沖突。
變量和表達(dá)式
要將現(xiàn)實(shí)世界的問題轉(zhuǎn)化為可以通過算法解決的問題,有兩個(gè)相互關(guān)聯(lián)的任務(wù)。首先,選擇變量,其次,找到與這些變量相關(guān)的表達(dá)式。變量是附加在對(duì)象上的標(biāo)簽;它們不是對(duì)象本身。它們也不是對(duì)象的容器。變量不包含對(duì)象,而是充當(dāng)對(duì)象的指針或引用。例如,考慮以下代碼:

在這里,我們創(chuàng)建了一個(gè)變量 a,它指向一個(gè)列表對(duì)象。我們創(chuàng)建另一個(gè)變量 b,它指向同一個(gè)列表對(duì)象。當(dāng)我們向這個(gè)列表對(duì)象追加一個(gè)元素時(shí),這種變化會(huì)同時(shí)反映在 a 和 b 中。
Python 是一種動(dòng)態(tài)類型語言。在程序執(zhí)行期間,變量名可以綁定到不同的值和類型。例如,每個(gè)值都是類型、字符串或整數(shù);但是,指向該值的名稱沒有特定類型。這與許多語言(例如 C 和 Java)不同,其中名稱表示內(nèi)存中的固定大小、類型和位置。這意味著當(dāng)我們?cè)?Python 中初始化變量時(shí),我們不需要聲明類型。此外,變量,或者更具體地說是它們指向的對(duì)象,可以根據(jù)分配給它們的值更改類型,例如:

變量范圍
了解函數(shù)內(nèi)部變量的作用域規(guī)則很重要。每次執(zhí)行函數(shù)時(shí),都會(huì)創(chuàng)建一個(gè)新的本地命名空間。這表示一個(gè)本地環(huán)境,其中包含由函數(shù)分配的參數(shù)和變量的名稱。為了在調(diào)用函數(shù)時(shí)解析命名空間,Python 解釋器首先搜索本地命名空間(即函數(shù)本身),如果未找到匹配項(xiàng),則搜索全局命名空間。這個(gè)全局命名空間是定義函數(shù)的模塊。如果仍未找到該名稱,它將搜索內(nèi)置命名空間。最后,如果失敗,則解釋器會(huì)引發(fā) NameError 異常??紤]以下代碼:

在示例中,定義了兩個(gè)全局變量。我們需要使用關(guān)鍵字 global 告訴解釋器,在函數(shù)內(nèi)部,我們指的是一個(gè)全局變量。當(dāng)我們將此變量更改為 11 時(shí),這些更改會(huì)反映在全局范圍內(nèi)。但是,我們?cè)O(shè)置為 21 的變量 b 是函數(shù)的局部變量,函數(shù)內(nèi)部對(duì)其所做的任何更改都不會(huì)反映在全局范圍內(nèi)。當(dāng)我們運(yùn)行函數(shù)并打印 b 時(shí),我們看到它保留了它的全局值。
到此這篇關(guān)于Python 中的命名空間、變量和范圍的文章就介紹到這了,更多相關(guān)Python命名空間內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python反轉(zhuǎn)(逆序)字符串的6種方法詳細(xì)
這篇文章主要介紹了python反轉(zhuǎn)(逆序)字符串的6種方法詳細(xì),需要的朋友可以參考下2021-04-04
Pandas執(zhí)行SQL操作的實(shí)現(xiàn)
使用SQL語句能夠完成對(duì)table的增刪改查操作,Pandas同樣也可以實(shí)現(xiàn)SQL語句的基本功能,本文就來介紹一下,具有一檔的參考價(jià)值,感興趣的可以了解一下2024-07-07
Python使用修飾器執(zhí)行函數(shù)的參數(shù)檢查功能示例
這篇文章主要介紹了Python使用修飾器執(zhí)行函數(shù)的參數(shù)檢查功能,結(jié)合具體實(shí)例形式分析了Python實(shí)現(xiàn)修飾器針對(duì)函數(shù)參數(shù)檢查的原理、步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-09-09
python淘寶搶購(gòu)腳本程序?qū)崿F(xiàn)
大家好,本篇文章主要講的是python淘寶搶購(gòu)腳本程序?qū)崿F(xiàn),感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-02-02

