溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python類命名空間是什么

發布時間:2020-09-08 09:44:36 來源:億速云 閱讀:142 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關Python類命名空間是什么的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

Python的類就像命名空間。Python程序默認處于全局命名空間內,類體則處于類命名空間內,Python 允許在全局范圍內放置可執行代碼,當 Python 執行該程序時,這些代碼就會獲得執行的機會。類似地,Python同樣允許在類范圍內放置可執行代碼,當 Python 執行該類定義肘,這些代碼同樣會獲得執行的機會。

例如,如下程序測試了類命名空間:

class Item:
    # 直接在類空間中放置執行性質代碼
    print('正在定義Item類')
    for i in range(10):
        if i % 2 == 0 :
            print('偶數:', i)
        else:
            print('奇數:', i)

正如從上面代碼所看到的,程序直接在 Item 類體中放置普通的輸出語句、循環語句、分支語句,這都是合法的。當程序執行 Item 類時,Item 類命名空間中的這些代碼都會被執行。

從執行效果來看,這些可執行代碼被放在 Python 類命名空間與全局空間并沒有太大的區別。確實如此,這是因為程序并沒有定義“成員”(變量或函數),這些代碼執行之后就完了,不會留下什么。

但下面代碼就有區別。下面代碼示范了在全局空間和類命名空間內分別定義 lambda 表達式:

global_fn = lambda p: print('執行lambda表達式,p參數: ', p)
class Category:
    cate_fn = lambda p: print('執行lambda表達式,p參數: ', p)
# 調用全局范圍內的global_fn,為參數p傳入參數值
global_fn('fkit')  # ①
c = Category()
# 調用類命名空間內的cate_fn,Python自動綁定第一個參數
c.cate_fn()  # ②

上面程序分別在全局空間、類命名空間內定義了兩個 lambda 表達式,在全局空間內定義的 lambda 表達式就相當于一個普通函數,因此程序使用調用函數的方式來調用該 lambda 表達式,并顯式地為第一個參數綁定參數值,如上面程序中 ① 號代碼所示。

對于在類命名空間內定義的 lambda 表達式,則相當于在該類命名空間中定義了一個函數,這個函數就變成了實例方法,因此程序必須使用調用方法的方式來調用該 lambda 表達式,Python 同樣會為該方法的第二個參數(相當于 self 參數)綁定參數值,如上面程序中 ② 號代碼所示。

感謝各位的閱讀!關于Python類命名空間是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女