python函數(shù)與方法的區(qū)別總結(jié)
(1)函數(shù)的分類:
內(nèi)置函數(shù):python內(nèi)嵌的一些函數(shù)。
匿名函數(shù):一行代碼實(shí)現(xiàn)一個(gè)函數(shù)功能。
遞歸函數(shù)
自定義函數(shù):根據(jù)自己的需求,來(lái)進(jìn)行定義函數(shù)。
(2)方法的分類:
普通方法:直接用self調(diào)用的方法。
私有方法:__函數(shù)名,只能在類中被調(diào)用的方法。
屬性方法:@property,將方法偽裝成為屬性,讓代碼看起來(lái)更合理。
特殊方法(雙下劃線方法):以__init__為例,是用來(lái)封裝實(shí)例化對(duì)象的屬性,只要是實(shí)例化對(duì)象就一定會(huì)執(zhí)行__init方法,如果對(duì)象子類中沒(méi)有則會(huì)尋找父類(超類),如果父類(超類)也沒(méi)有,則直接繼承object(python 3.x)類,執(zhí)行類中的__init__方法。類方法:通過(guò)類名的調(diào)用去操作公共模板中的屬性和方法。
靜態(tài)方法:不用傳入類空間、對(duì)象的方法, 作用是保證代碼的一致性,規(guī)范性,可以完全獨(dú)立類外的一個(gè)方法,但是為了代碼的一致性統(tǒng)一的放到某個(gè)模塊(py文件)中。
其次,從作用域的角度來(lái)分析:
(1)函數(shù)作用域:從函數(shù)調(diào)用開(kāi)始至函數(shù)執(zhí)行完成,返回給調(diào)用者后,在執(zhí)行過(guò)程中開(kāi)辟的空間會(huì)自動(dòng)釋放,也就是說(shuō)函數(shù)執(zhí)行完成后,函數(shù)體內(nèi)部通過(guò)賦值等方式修改變量的值不會(huì)保留,會(huì)隨著返回給調(diào)用者后,開(kāi)辟的空間會(huì)自動(dòng)釋放。
(2)方法作用域:通過(guò)實(shí)例化的對(duì)象進(jìn)行方法的調(diào)用,調(diào)用后開(kāi)辟的空間不會(huì)釋放,也就是說(shuō)調(diào)用方法中對(duì)變量的修改值會(huì)一直保留。
最后,調(diào)用的方式不同。
(1)函數(shù):通過(guò)“函數(shù)名()”的方式進(jìn)行調(diào)用。
(2)方法:通過(guò)“對(duì)象.方法名”的方式進(jìn)行調(diào)用。
class Foo(object): def func(self): pass#實(shí)例化obj = Foo()# 執(zhí)行方式一:調(diào)用的func是方法obj.func() #func 方法# 執(zhí)行方式二:調(diào)用的func是函數(shù)Foo.func(123) # 函數(shù)
更多Python相關(guān)技術(shù)文章,請(qǐng)?jiān)L問(wèn)Python教程欄目進(jìn)行學(xué)習(xí)!
相關(guān)文章
Keras預(yù)訓(xùn)練的ImageNet模型實(shí)現(xiàn)分類操作
Python常見(jiàn)數(shù)據(jù)結(jié)構(gòu)之棧與隊(duì)列用法示例
python輸出第n個(gè)默尼森數(shù)的實(shí)現(xiàn)示例
Keras 中Leaky ReLU等高級(jí)激活函數(shù)的用法
教你使用Python畫(huà)圣誕樹(shù)做浪漫的程序員

