創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站制作服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)德州免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了數(shù)千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。這篇文章給大家分享的是有關(guān)Python類命名空間是什么的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
Python的類就像命名空間。Python程序默認處于全局命名空間內(nèi),類體則處于類命名空間內(nèi),Python 允許在全局范圍內(nèi)放置可執(zhí)行代碼,當 Python 執(zhí)行該程序時,這些代碼就會獲得執(zhí)行的機會。類似地,Python同樣允許在類范圍內(nèi)放置可執(zhí)行代碼,當 Python 執(zhí)行該類定義肘,這些代碼同樣會獲得執(zhí)行的機會。
例如,如下程序測試了類命名空間:
class Item: # 直接在類空間中放置執(zhí)行性質(zhì)代碼 print('正在定義Item類') for i in range(10): if i % 2 == 0 : print('偶數(shù):', i) else: print('奇數(shù):', i)
正如從上面代碼所看到的,程序直接在 Item 類體中放置普通的輸出語句、循環(huán)語句、分支語句,這都是合法的。當程序執(zhí)行 Item 類時,Item 類命名空間中的這些代碼都會被執(zhí)行。
從執(zhí)行效果來看,這些可執(zhí)行代碼被放在 Python 類命名空間與全局空間并沒有太大的區(qū)別。確實如此,這是因為程序并沒有定義“成員”(變量或函數(shù)),這些代碼執(zhí)行之后就完了,不會留下什么。
但下面代碼就有區(qū)別。下面代碼示范了在全局空間和類命名空間內(nèi)分別定義 lambda 表達式:
global_fn = lambda p: print('執(zhí)行l(wèi)ambda表達式,p參數(shù): ', p) class Category: cate_fn = lambda p: print('執(zhí)行l(wèi)ambda表達式,p參數(shù): ', p) # 調(diào)用全局范圍內(nèi)的global_fn,為參數(shù)p傳入?yún)?shù)值 global_fn('fkit') # ① c = Category() # 調(diào)用類命名空間內(nèi)的cate_fn,Python自動綁定第一個參數(shù) c.cate_fn() # ②
上面程序分別在全局空間、類命名空間內(nèi)定義了兩個 lambda 表達式,在全局空間內(nèi)定義的 lambda 表達式就相當于一個普通函數(shù),因此程序使用調(diào)用函數(shù)的方式來調(diào)用該 lambda 表達式,并顯式地為第一個參數(shù)綁定參數(shù)值,如上面程序中 ① 號代碼所示。
對于在類命名空間內(nèi)定義的 lambda 表達式,則相當于在該類命名空間中定義了一個函數(shù),這個函數(shù)就變成了實例方法,因此程序必須使用調(diào)用方法的方式來調(diào)用該 lambda 表達式,Python 同樣會為該方法的第二個參數(shù)(相當于 self 參數(shù))綁定參數(shù)值,如上面程序中 ② 號代碼所示。
感謝各位的閱讀!關(guān)于Python類命名空間是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!