您好,登錄后才能下訂單哦!
這篇文章主要講解了“Python中的命名空間、變量和范圍是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python中的命名空間、變量和范圍是什么”吧!
首先,我們需要感知python中的名稱(標識符)是什么。眾所周知,在python中,一切都是對象。名稱幫助我們訪問底層對象。例如,當我們做作業時 a = 1
, 1
是存儲在內存中的對象,a 是我們與之關聯的名稱。我們可以通過內置函數獲取某個對象的地址(在 RAM 中), ID()
.讓我們看看如何使用它。
a = 1 打印('id(1)=',id(1)) 打印('id(a)=',id(a)) 輸出: id(1) = 9801248 id(a) = 9801248
在這里,兩者都指同一個對象 1
,所以他們擁有相同的id。
現在我們知道了名稱是什么,我們可以繼續討論名稱空間的概念。簡單地說,命名空間是名稱的集合。在 Python 中,您可以將命名空間想象為您定義的每個名稱到相應對象的映射。不同的命名空間可以在給定時間共存,但完全隔離。當我們啟動 Python 解釋器時,會創建一個包含所有內置名稱的命名空間,并且只要解釋器運行,它就存在。這就是內置函數像 ID()
, 打印()
我們始終可以從程序的任何部分獲得等。每個模塊創建自己的全局命名空間。這些不同的命名空間是隔離的。因此,不同模塊中可能存在的相同名稱不會發生沖突。
要將現實世界的問題轉化為可以通過算法解決的問題,有兩個相互關聯的任務。首先,選擇變量,其次,找到與這些變量相關的表達式。變量是附加在對象上的標簽;它們不是對象本身。它們也不是對象的容器。變量不包含對象,而是充當對象的指針或引用。例如,考慮以下代碼:
在這里,我們創建了一個變量 a,它指向一個列表對象。我們創建另一個變量 b,它指向同一個列表對象。當我們向這個列表對象追加一個元素時,這種變化會同時反映在 a 和 b 中。
Python 是一種動態類型語言。在程序執行期間,變量名可以綁定到不同的值和類型。例如,每個值都是類型、字符串或整數;但是,指向該值的名稱沒有特定類型。這與許多語言(例如 C 和 Java)不同,其中名稱表示內存中的固定大小、類型和位置。這意味著當我們在 Python 中初始化變量時,我們不需要聲明類型。此外,變量,或者更具體地說是它們指向的對象,可以根據分配給它們的值更改類型,例如:
了解函數內部變量的作用域規則很重要。每次執行函數時,都會創建一個新的本地命名空間。這表示一個本地環境,其中包含由函數分配的參數和變量的名稱。為了在調用函數時解析命名空間,Python 解釋器首先搜索本地命名空間(即函數本身),如果未找到匹配項,則搜索全局命名空間。這個全局命名空間是定義函數的模塊。如果仍未找到該名稱,它將搜索內置命名空間。最后,如果失敗,則解釋器會引發 NameError 異常。考慮以下代碼:
在示例中,定義了兩個全局變量。我們需要使用關鍵字 global 告訴解釋器,在函數內部,我們指的是一個全局變量。當我們將此變量更改為 11 時,這些更改會反映在全局范圍內。但是,我們設置為 21 的變量 b 是函數的局部變量,函數內部對其所做的任何更改都不會反映在全局范圍內。當我們運行函數并打印 b 時,我們看到它保留了它的全局值。
感謝各位的閱讀,以上就是“Python中的命名空間、變量和范圍是什么”的內容了,經過本文的學習后,相信大家對Python中的命名空間、變量和范圍是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。