python名稱空間與運用域_Python名稱空間和作用域講座,命名,Namespaces,Scopes

Python命名空間(Namespaces)和作用域(Scopes)講座

命名空間(Namespace)

命名空間(Namespace),是名稱到對象的映射。

命名空間提供了在項目中避免名字沖突的一種方法。命名空間是獨立的,沒有任何關系的,所以一個命名空間中不能有重名,但不同的命名空間是可以重名而沒有任何影響——

不同命名空間中的名稱之間絕對沒有關系,請牢記這一點

多個名稱(在多個作用域內)可以綁定到同一個對象。這在其他語言中稱為別名。在處理不可變的基本類型(數字,字符串,元組)時可以安全地忽略它。但是,對于可變對象,如列表,字典和大多數其他類型在某些方面表現得像指針,如果函數修改了作為參數傳遞的對象,調用者將看到更改。

幾個命名空間的例子:存放內置函數的集合(包含 abs() 這樣的函數名,和內建的異常名稱 BaseException、Exception 等等);模塊中的全局名稱;函數中的局部名稱,包括函數的參數和函數中的變量。 從某種意義上說,對象的屬性集合也是一種命名空間的形式。

命名空間查找順序

當一行代碼要使用變量 x 的值時,Python 會到所有可用的名字空間去查找變量,按照如下順序:

1、局部命名空間:特指當前函數或類的方法。如果函數定義了一個局部變量 x,或一個參數 x,Python 將使用它,然后停止搜索。

2、全局命名空間:特指當前的模塊。如果模塊定義了一個名為 x 的變量,函數或類,Python 將使用它然后停止搜索。

3、內置命名空間:對每個模塊都是全局的。作為最后的嘗試,Python 將假設 x 是內置函數或變量。

4、如果 Python 在這些名字空間找不到 x,它將放棄查找并引發一個 NameError 異常,如,NameError: name 'aa' is not defined。

嵌套函數的情況:

1、先在當前 (嵌套的或 lambda) 函數的命名空間中搜索

2、然后是在父函數的命名空間中搜索

3、接著是模塊命名空間中搜索

4、最后在內置命名空間中搜索

命名空間的生命周期

不同的命名空間在不同的時刻創建,有不同的生存期。

1、內置命名空間在 Python 解釋器啟動時創建,會一直保留,不被刪除。

2、模塊的全局命名空間在模塊定義被讀入時創建,通常模塊命名空間也會一直保存到解釋器退出。

3、當函數被調用時創建一個局部命名空間,當函數返回結果 或 拋出異常時,被刪除。每一個遞歸調用的函數都擁有自己的命名空間。

作用域(Scopes)

變量的作用域決定了在哪一部分程序可以訪問哪個特定的變量名稱。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/541496.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/541496.shtml
英文地址,請注明出處:http://en.pswp.cn/news/541496.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

getminimum_Java Calendar getMinimum()方法與示例

getminimumCalendar類的getMinimum()方法 (Calendar Class getMinimum() method) getMinimum() method is available in java.util package. getMinimum()方法在java.util包中可用。 getMinimum() method is used to get the minimum value of the given field(fi) of this Cal…

《Spark核心技術與高級應用》——3.2節構建Spark的開發環境

本節書摘來自華章社區《Spark核心技術與高級應用》一書中的第3章,第3.2節構建Spark的開發環境,作者于俊 向海 代其鋒 馬海平,更多章節內容可以訪問云棲社區“華章社區”公眾號查看 3.2 構建Spark的開發環境無論Windows或Linux操作系統&am…

python閉包怎么理解_Python 閉包的理解

Last Updated on 2019年10月15日Python中的閉包是一個比較模糊的概念,不太好理解,我最近的面試中也被問及,在一個單例模式的實現上,我用裝飾器實現單例,然后面試官就問到了我對閉包的理解,回答的不太清楚。…

Java BufferedReader mark()方法與示例

BufferedReader類mark()方法 (BufferedReader Class mark() method) mark() method is available in java.io package. mark()方法在java.io包中可用。 mark() method is used to mark the current position in this stream and whenever we call reset() method so it will re…

《全球互聯網金融商業模式:格局與發展》——第3章,第3節互聯網保險公司...

本節書摘來自華章出版社《全球互聯網金融商業模式:格局與發展》一書中的第3章,第3.3節互聯網保險公司,作者廖理,更多章節內容可以訪問云棲社區“華章計算機”公眾號查看 3.3 互聯網保險公司互聯網思維貫穿整個保險創新發展過程&a…

webapi隨機調用_BeetleX之webapi驗證插件JWT集成

對于webapi服務應用很多時候需要制訂訪問限制,在前面的章節也講述了組件如何制訂控制器訪問控制;但到了實際應用要自己去編寫還是比較麻煩。為了讓訪問控制更方便組件實現基于JWT的控制器訪問控制組件BeetleX.FastHttpApi.Jwt;通過這個組件可…

java bitset_Java BitSet nextClearBit()方法與示例

java bitsetBitSet類nextClearBit()方法 (BitSet Class nextClearBit() method) nextClearBit() method is available in java.util package. nextClearBit()方法在java.util包中可用。 nextClearBit() method is used to retrieve the index of the first bit that is set to …

《馴獅記——Mac OS X 10.8 Mountain Lion使用手冊》——2.3 Dock

本節書摘來自異步社區《馴獅記——Mac OS X 10.8 Mountain Lion使用手冊》一書中的第2章,第2.3節,作者:陳明 , 張錚 , 馬玉龍著,更多章節內容可以訪問云棲社區“異步社區”公眾號查看 2.3 Dock 馴獅記——Mac OS X 10.8 Mountain…

mysql 嵌套if標簽_對比Excel、MySQL、Python,分別講述 “if函數” 的使用原理!

作者:黃偉呢本文轉自:數據分析與統計學之美其實,不管是Excel、MySQL,還是Python,“if”條件判斷都起著很重要的作用。今天這篇文章,就帶著大家盤點一下,這三種語言如何分別使用 “if函數” 。if…

Java BigDecimal intValue()方法與示例

BigDecimal類的intValue()方法 (BigDecimal Class intValue() method) intValue() method is available in java.math package. intValue()方法在java.math包中可用。 intValue() method is used to convert a BigDecimal to an integer and when the converted BigDecimal val…

R語言數據挖掘

數據分析與決策技術叢書 R語言數據挖掘 Learning Data Mining with R [哈薩克斯坦]貝特麥克哈貝爾(Bater Makhabel) 著 李洪成 許金煒 段力輝 譯 圖書在版編目(CIP)數據 R語言數據挖掘 / (哈…

linux adduser mysql_linux_adduser

新帳號建立當不加-D參數,useradd指令使用命令列來指定新帳號的設定值and使用系統上的預設值.新使用者帳號將產生一些系統檔案,使用者目錄建立,拷備起始檔案等,這些均可以利用命令列選項指定。此版本為RedHatLinux提供,可幫每個新加…

java iterator_Java ArrayDeque iterator()方法與示例

java iteratorArrayDeque類iterator()方法 (ArrayDeque Class iterator() method) iterator() Method is available in java.lang package. iterator()方法在java.lang包中可用。 iterator() Method is used to return an iterator over the deque elements. iterator()方法用于…

《jQuery、jQuery UI及jQuery Mobile技巧與示例》——7.4 示例:使用按鈕集裝飾單選框...

本節書摘來自異步社區《jQuery、jQuery UI及jQuery Mobile技巧與示例》一書中的第7章,第7.4節,作者:【荷】Adriaan de Jonge , 【美】Phil Dutson著,更多章節內容可以訪問云棲社區“異步社區”公眾號查看 7.4 示例:使…

mysql 模擬序列_【原創】MySQL 模擬PostgreSQL generate_series 表函數

PostgreSQL 提供了一個很強大的造數據的函數generate_series,基于Common Table Expression。MySQL 沒有復雜的應用程序類型,該如何實現這樣的功能呢? 我想到的三種方法如下:1. 用存儲過程來做。 缺點是寫好多數據庫不擅長的應用邏輯。2. 我們…

Python字符串| isdigit()方法與示例

isdigit() is an in-built method in Python, which is used to check whether a string contains only digits or not. isdigit()是Python中的內置方法,用于檢查字符串是否僅包含數字。 Digit value contains all decimal characters and other digits which may …

vue2.0的學習

vue-router 除了使用 <router-link> 創建 a 標簽來定義導航鏈接&#xff0c;我們還可以借助 router 的實例方法&#xff0c;通過編寫代碼來實現。 1&#xff09;router.push(location) 這個方法會向 history 棧添加一個新的記錄&#xff0c;所以&#xff0c;當用戶點擊瀏…

mysql+url的配置參數詳解_MySql鏈接url參數詳解

mysql URL格式如下&#xff1a;jdbc:mysql://[host:port],[host:port].../[database][?參數名1][參數值1][&參數名2][參數值2]...MySQL在高版本需要指明是否進行SSL連接 在url后面加上 useSSLtrue 不然寫程序會有warning常用的幾個較為重要的參數&#xff1a;參數名…

Java LocalDate類| minus()方法與示例

LocalDate類isSupported()方法 (LocalDate Class isSupported() method) Syntax: 句法&#xff1a; public LocalDate minus(TemporalAmount t_amt);public LocalDate minus(long amt, TemporalUnit t_unit);isSupported() method is available in java.time package. isSuppo…

《Java EE 7精粹》—— 第3章 JSF 3.1 Facelets

本節書摘來異步社區《Java EE 7精粹》一書中的第2章&#xff0c;第2.1節&#xff0c;作者&#xff1a;【美】Arun Gupta&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 第3章 JSF JSF是基于Java的Web應用程序開發的服務器端用戶界面&#xff08;UI&#xf…