日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python中Function(函数)和methon(方法)

發布時間:2024/4/18 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python中Function(函数)和methon(方法) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先來看他們的定義,

?

函數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).

?

首先,從概念上去分。函數可以看成一個數學上的概念,比如說完成加減乘除的函數。它其實有一個內在的約束:就是如果參數相同,對一個函數的每次調用返回的結果應該始終一樣。

?

而方法是要和對象聯系起來的。而且它有一個銀行的參數:就是它所作用的對象。而這些更多地是在面向對象的語境里來說。

?

而從Python的定義來看,它將method作為function的一種特例來處理了。但當你在文檔里看到instance method object和function object的說法時,你應該了解他們的差異。

[python]?view plaincopy
  • >>>?class?MyClass:??
  • ????i?=?12345??
  • ????def?f(self):??
  • ????????return?"hello?world"??
  • >>>?x?=?MyClass()??
  • >>>?x.f.__class__??
  • <class?'method'>??
  • >>>?MyClass.f.__class__??
  • <class?'function'>??
  • ?

    從上面的例子可以看出,一個是method object,一個是function object。

    ?

    此外,Python里面還有staticmethod和classmethod的概念,他們和普通的method又有些區別。

    ->classmethod將類作為第一個隱含的參數

    ->而staticmethod沒有任何隱含的參數,有點類似于Java里的static

    [python]?view plaincopy
  • >>>?class?MyClass:??
  • ????i?=?12345??
  • ????@staticmethod??
  • ????def?f(self):??
  • ????????return?"hello?world"??
  • ????def?add(x,?y):??
  • ????????return?x+y??
  • ????@classmethod??
  • ????def?foo(cls):??
  • ????????print(cls)??
  • >>>?MyClass.f.__class__??
  • <class?'function'>??
  • >>>?MyClass.add.__class__??
  • <class?'function'>??
  • >>>?MyClass.foo.__class__??
  • <class?'method'>??
  • >>>?x?=?MyClass()??
  • >>>?x.f.__class__??
  • <class?'function'>??
  • >>>?x.add.__class__??
  • <class?'method'>??
  • >>>?x.foo.__class__??
  • <class?'method'>??
  • >>>?x.foo()??
  • <class?'__main__.MyClass'>??
  • ?

    ?

    當然,在很多語言里,這兩者的區別沒那么明顯。


    下面先來看看被選為最佳答案的回復(來自??Andrew Edgecombe?):

    函數是一段代碼,通過名字來進行調用。它能將一些數據(參數)傳遞進去進行處理,然后返回一些數據(返回值),也可以沒有返回值。

    所有傳遞給函數的數據都是顯式傳遞的。

    方法也是一段代碼,也通過名字來進行調用,但它跟一個對象相關聯。方法和函數大致上是相同的,但有兩個主要的不同之處:

  • 方法中的數據是隱式傳遞的;
  • 方法可以操作類內部的數據(請記住,對象是類的實例化–類定義了一個數據類型,而對象是該數據類型的一個實例化)
  • 以上只是簡略的解釋,忽略了作用域之類的問題。

    ?

    Raffi Khatchadourian?對?Andrew Edgecombe?答案的補充:

    對于 1),你應當再加上“ 方法在 C++ 中是被稱為成員函數”。因此,在 C++ 中的“方法”和“函數”的區別,就是“成員函數”和“函數”的區別。此外,諸如 Java 一類的編程語言只有“方法”。所以這時候就是“靜態方法”和“方法”直接的區別。

    對于2),你應當補上方法可以操作已在類中聲明的私有實例(成員)數據。其他代碼都可以訪問公共實例數據。

    ?

    Aaron?的回答:

    方法和對象相關;

    函數和對象無關。

    Java中只有方法,C中只有函數,而C++里取決于是否在類中


    總結

    以上是生活随笔為你收集整理的Python中Function(函数)和methon(方法)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。