python方法和函數(shù) python方法和函數(shù)的區(qū)別知乎

python中方法和函數(shù)的區(qū)別是什么?什么時候要帶self?

定義一個函數(shù)就是定義一個方法,self是自身,調(diào)用的時候如果需要傳入魔法方法__init__(初始定義的值【也就是參數(shù)】)時就需要帶self,不需要則可以在函數(shù)(即方法)前加修飾@staticmethod,就不用帶self參數(shù)了。

創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)品牌建設與網(wǎng)絡營銷,包括網(wǎng)站設計制作、成都網(wǎng)站建設、SEO優(yōu)化、網(wǎng)絡推廣、整站優(yōu)化營銷策劃推廣、電子商務、移動互聯(lián)網(wǎng)營銷等。創(chuàng)新互聯(lián)公司為不同類型的客戶提供良好的互聯(lián)網(wǎng)應用定制及解決方案,創(chuàng)新互聯(lián)公司核心團隊10年專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗,為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設服務,在網(wǎng)站建設行業(yè)內(nèi)樹立了良好口碑。

python 方法和函數(shù)的區(qū)別

在Python中,對這兩個東西有明確的規(guī)定:

函數(shù)function —— A series of statements which returns some value to a caller. It can also be passed zero or more arguments which may be used in the execution of the body.

方法method —— A function which is defined inside a class body. If called as an attribute of an instance of that class, the method will get the instance object as its first argument (which is usually called self).

從定義的角度上看,我們知道函數(shù)(function)就相當于一個數(shù)學公式,它理論上不與其它東西關系,它只需要相關的參數(shù)就可以。所以普通的在module中定義的稱謂函數(shù)是很有道理的。

那么方法的意思就很明確了,它是與某個對象相互關聯(lián)的,也就是說它的實現(xiàn)與某個對象有關聯(lián)關系。這就是方法。雖然它的定義方式和函數(shù)是一樣的。也就是說,在Class定義的函數(shù)就是方法。

從上面的角度看似乎很有道理。

def fun():

pass

type(fun)

class 'function' #沒有問題

class Cla():

def fun():

pass

@classmethod

def fun1(cls):

pass

@staticmethod

def fun2():

pass

i=Cla()

Cla.fun.__class__

class 'function' #為什么還是函數(shù)

i.fun.__class__ #這個還像話

class 'method'

type(Cla.fun1)

class 'method' #這里又是方法

type(i.fun1)

class 'method'#這里仍然是方法

type(Cla.fun2)

class 'function'?。_@里卻是函數(shù)

type(i.fun2)

class 'function'#這里卻是函數(shù)

事實上,上面的結果是可以解釋的:

1,普通方法(老版中直接就是"instancemethod")在module中與在Class中定義的普通函數(shù),從其本身而言是沒有什么區(qū)別的,他們都是對象函數(shù)屬性。 之所以會被說在Class中的定義的函數(shù)被稱為方法,是因為它本來就是面向?qū)淼膶嵗龑ο蟮?,其實他們就是實例方法,這些方法是與實例相聯(lián)系的(從實例出發(fā)訪問該函數(shù)會自動賦值)。所以你從Class訪問仍然是一個函數(shù)

2,類方法("classmethod"),因為類同樣是對象,所以如果函數(shù)與類進行聯(lián)系了話(與實例方法一樣的模式)那么就能夠這么說了!

3,靜態(tài)方法,雖然定義在內(nèi)部,并且也較方法,但是卻不與任何對象聯(lián)系,與從類訪問方法是一樣的,他們?nèi)匀皇呛瘮?shù)。

這樣看來上面的定義可以改改了:

函數(shù)的定義自然不變。

方法的定義可以是這樣的,與某個對象進行綁定使用的函數(shù)。注意哦。綁定不是指" . "這個符號,這個符號說實在的只有域名的作用。綁定在這里是指,會默認賦值該綁定的對象。

python類和函數(shù)的區(qū)別

類,class,用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。

函數(shù),是組織好的,可重復使用的,用來實現(xiàn)單一,或相關聯(lián)功能的代碼段。

函數(shù)能提高應用的模塊性,和代碼的重復利用率。你已經(jīng)知道python提供了許多內(nèi)建函數(shù),比如print()。但你也可以自己創(chuàng)建函數(shù),這被叫作用戶自定義函數(shù)。

python語言中類和函數(shù)的區(qū)別

1、規(guī)則不同

類是一種引用數(shù)據(jù)類型,類似于byte、short、int(char)、long、float、double等基本數(shù)據(jù)類型;

函數(shù)必須聲明后才可以被調(diào)用,調(diào)用格式為:函數(shù)名(實參)調(diào)用時函數(shù)名后的小括號中的實參必須和聲明函數(shù)時的函數(shù)括號中的形參個數(shù)相同。

2、主體不同

類是面向?qū)ο蟪绦蛟O計實現(xiàn)信息封裝的基礎;

函數(shù)是指一段在一起的、可以做某一件事的子程序。

3、特點不同

類是一種用戶定義的引用數(shù)據(jù)類型,也稱類類型,每個類包含數(shù)據(jù)說明和一組操作數(shù)據(jù)或者傳遞消息的函數(shù),類的實例稱為對象;

函數(shù)分為全局函數(shù)、全局靜態(tài)函數(shù),在類中還可以定義構造函數(shù)、析構函數(shù)、拷貝構造函數(shù)、成員函數(shù)、友元函數(shù)、運算符重載函數(shù)、內(nèi)聯(lián)函數(shù)等。

python如何定義和調(diào)用函數(shù)

1、函數(shù)定義

①使用def關鍵字定義函數(shù)

def 函數(shù)名(參數(shù)1.參數(shù)2.參數(shù)3...):

"""文檔字符串,docstring,用來說明函數(shù)的作用"""

#函數(shù)體

return 表達式

注釋的作用:說明函數(shù)是做什么的,函數(shù)有什么功能。

③遇到冒號要縮進,冒號后面所有的縮進的代碼塊構成了函數(shù)體,描述了函數(shù)是做什么的,即函數(shù)的功能是什么。Python函數(shù)的本質(zhì)與數(shù)學中的函數(shù)的本質(zhì)是一致的。

2、函數(shù)調(diào)用

①函數(shù)必須先定義,才能調(diào)用,否則會報錯。

②無參數(shù)時函數(shù)的調(diào)用:函數(shù)名(),有參數(shù)時函數(shù)的調(diào)用:函數(shù)名(參數(shù)1.參數(shù)2.……)

③不要在定義函數(shù)的時候在函數(shù)體里面調(diào)用本身,否則會出不來,陷入循環(huán)調(diào)用。

④函數(shù)需要調(diào)用函數(shù)體才會被執(zhí)行,單純的只是定義函數(shù)是不會被執(zhí)行的。

⑤Debug工具中Step into進入到調(diào)用的函數(shù)里,Step Into My Code進入到調(diào)用的模塊里函數(shù)。

本文名稱:python方法和函數(shù) python方法和函數(shù)的區(qū)別知乎
標題路徑:http://muchs.cn/article22/doedgcc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、域名注冊網(wǎng)站設計、App開發(fā)、網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)