導航:首頁 > 編程語言 > python函數使用類變數

python函數使用類變數

發布時間:2022-12-12 16:28:05

python 一個可以靈活修改類變數的結構

開發 Python 程序總會遇到,需要修改類或者實例變數的值的情況,雖然 @property 可以實現,但是,不免有點繁瑣。本文介紹一種更便捷的方式:

具體的使用,可以看如下的示例:

這里的類 Pen 便有直接修改實例變數的功能:

輸出:

也可以在實例方法中修改實例變數:

調用:

也許會有人疑問,不使用 ParamDict 類似也可以達到同樣的效果?但是,您可能忽略一個問題,如果想要對其進行改寫將會十分繁瑣。比如下面的寫法是沒有問題的:

但是,如果想要在屬性值前添加前綴,則需要為 change_color 與 change_line_width 函數同時添加該功能,而使用 ParamDict 則可以避免修改 change_color 與 change_line_width 函數,只需要這樣:

再次調用:

輸出為:

是不是很方便?只需要修改 ParamDict ,而不需要改變功能函數便可修改功能。

為可以直接提供類的重寫,可以這樣:

最後,以一個 PyQt5 的例子結束本文:

輸出:

❷ Python函數及變數的定義和使用

def <函數名>():                                                

       <函數體>                                             

       return  <返回值>                            

 def <函數名>(非可選參數,可選參數):

        <函數體> 

         return <返回值>

def <函數名>(參數,*b):

        <函數體>

        return <返回值>

<函數名> = lambda <參數> : <表達式>

例1:f = lambda x , y  :  x + y                        

調用:f(6 + 8)     輸出:14                             

例2: f = lambda : "沒有參數的lambda函數!"

調用: print(f())    輸出: 沒有參數的lambda函數!

❸ Python中的類變數、實例變數、局部變數

類體內,所有函數外定義。
所有實例對象共享。
只有通過類名調用時才能修改,通過實例調用時無法修改。

假設某類變數名為「name",如果用該類的某個實例x來為name賦值:x.name = 'xxx',實質是為該實例新定義了一個變數name。且之後無法再通過該實例調用類變數name了。因為使用實例調用某名為「xxx」變數時,若該實例沒有名為「xxx」的實例變數,則會去調用名為「xxx」的類變數;若有該名稱的實例變數,則該實例無法再直接調用該名稱對應的類變數。因此也不推薦通過實例來調用類變數。

即:通過類實例修改類變數的值時,實際是在定義新的與類變數同名的實例變數。

類體內,某函數(一般是__ init __ ())內定義。 「self.變數名」
因為是屬於某個具體實例的,因此不能通過類名訪問。

如果不在__ init __ () 中調用(該函數會在創建實例時自動調用一次),則只有調用該實例中定義目標實例變數的那個函數後,才能使用目標實例變數。因此最好在__ init __ () 中定義實例變數。

類體內,某函數內定義。
直接在函數內用「變數名=值」的方式進行定義。
函數執行完畢後,該局部變數即被銷毀。

❹ python中函數變數作用域和類變數作用域怎麼搞都錯,煩躁中

python中,變數的作用域要弄清楚。只有mole、class、def、lambda才會引入作用域,其他的代碼塊是不會引入作用域的。
1
圖一中,你在函數中聲明了d為全局變數,但這樣是無效的,程序運行結果,已經說明這一點。

global這個關鍵字,是用來「在函數中修改全局變數值」的聲明,而不是「在局部函數中定義一個全局變數」的聲明。這里要注意一下。
你可以再局部函數外面聲明變數d,再加上你原先的函數,就可以修改、訪問這個變數了。

2
在類中函數的變數,作用域只在函數中。圖二中,jian這個變數分別在yu(),yu1()兩個函數中,是處於不同的定義域中的,是不能相互訪問的。
所以,在各自函數中,只有先定義了jian變數,才能再使用。
如果想在yu1()中訪問yu()中的jian變數,就需要將jian變數變成全局變數,即在class中定義一個全局變數jian,這樣yu1(),yu()函數都可以訪問了

❺ Python類和實例變數的理解與運用

9.3.5. 類和實例變數
一般來說,實例變數用於對每一個實例都是唯一的數據,類變數用於類的所有實例共享的屬性和方法:
class Dog:
kind = 'canine' # class variable shared by all instances
def __init__(self, name):
self.name = name # instance variable unique to each instance
>>> d = Dog('Fido')
>>> e = Dog('Buddy')
>>> d.kind # shared by all dogs
'canine'
>>> e.kind # shared by all dogs
'canine'
>>> d.name # unique to d
'Fido'
>>> e.name # unique to e
'Buddy'
正如在 術語相關 討論的, 可變 對象,例如列表和字典,的共享數據可能帶來意外的效果。例如,下面代碼中的 tricks 列表不應該用作類變數,因為所有的 Dog 實例將共享同一個列表:
class Dog:
tricks = [] # mistaken use of a class variable
def __init__(self, name):
self.name = name
def add_trick(self, trick):
self.tricks.append(trick)
>>> d = Dog('Fido')
>>> e = Dog('Buddy')
>>> d.add_trick('roll over')
>>> e.add_trick('play dead')
>>> d.tricks # unexpectedly shared by all dogs
['roll over', 'play dead']
這個類的正確設計應該使用一個實例變數:
class Dog:
def __init__(self, name):
self.name = name
self.tricks = [] # creates a new empty list for each dog
def add_trick(self, trick):
self.tricks.append(trick)
>>> d = Dog('Fido')
>>> e = Dog('Buddy')
>>> d.add_trick('roll over')
>>> e.add_trick('play dead')
>>> d.tricks
['roll over']
>>> e.tricks
['play dead']
總結後的知識點希望能幫到你

❻ Python函數和模塊的定義與使用,包括變數的類型及匿名函數用法

函數是組織好,可重復使用的,用來實現相關功能的代碼段

函數提高了代碼的重復利用率和應用的模塊性。

除Python自帶的函數之外,也可以自己創建函數,叫做自定義函數

語法:

函數代碼塊以 def 開頭

參數為 輸入值 ,放於函數名後口號裡面,

函數內容以冒號:開始,函數體縮進, return 返回 輸出值

函數調用使用關鍵字參數來確定傳入的參數值,此時,如果多個函數則不需要按照指定順序。

在定義函數時,指定參數默認值。調用時如果不傳入參數,則使用默認值

不定長部分如果沒有指定參數,傳入是一個空元組

加了 兩個星號 ** 的參數會以字典的形式導入

/ 用來指明函數形參必須使用指定位置參數,不能使用關鍵字參數的形式。

3.8版本之後的才能使用

不使用 def 定義函數,沒有函數名

lamdba主體時一個表達式,而不是代碼塊,函數體比def簡單很多

定義在函數內部的為局部變數,僅能在函數內部使用

定義在函數外部的為全局變數,可在全局使用

模塊是將包含所有定義的函數和變數的文件,一般將同類功能的函數組和在一起稱為模塊。

模塊需要導入後,在調用相應函數進行使用

模塊導入的方法:

從模塊中導入一個指定的部分

把一個模塊的所有內容全都導入

❼ python 類中的變數傳遞給類中的函數

為了把類中的變數傳遞給類中的函數,我們需要用到3個特定格式



① 第一個格式 @classmethod 的中文意思就是「類方法」,@classmethod聲明了函數1是類方法,這樣才能允許函數1使用類屬性中的數據。

 ② 第二個格式 cls 的意思是class的縮寫。如果類方法函數1想使用類屬性(也就是類中的變數),就要寫上cls為函數1的第一個參數,也就是把這個類作為參數傳給自己,這樣就能被允許使用類中的數據。

 ③ 第三個格式是 cls.變數 。類方法想使用類屬性的時候,需要在這些變數名稱前加上cls. 這就好比類方法和類之間的約法三章,所以但凡有任何格式錯誤都會報錯。

如果缺①,即缺了「@classmethod」,類方法就不能直接利用類中的屬性,於是報錯

❽ python函數中局部變數與全局變數遵守規則

(1)簡單數據類型變數無論是否與全局變數重名,僅在函數內部創建和使用,函數退出後變數被釋放,如有全局同名變數,其值不變。

(2)簡單數據類型變數在用global保留字聲明後,作為全局變數使用,函數退出後該變數保留且值被函數改變。

(3)對於組合數據類型的全局變數,如果在函數內部沒有被真實創建的同名變數,則函數內部可以直接使用並修改全局變數的值。

(4)如果函數內部真實創建了組合數據類型變數,無論是否有同名全局變數,函數僅對局部變數進行操作,函數退出後局部變數被釋放,全局變數值不變。

*《python語言程序設計基礎》.高等教育出版社

閱讀全文

與python函數使用類變數相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:758
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:383
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:893
app轉賬是什麼 瀏覽:163