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
從上面的例子可以看出,一個是method object,一個是function object。
?
此外,Python里面還有staticmethod和classmethod的概念,他們和普通的method又有些區別。
->classmethod將類作為第一個隱含的參數
->而staticmethod沒有任何隱含的參數,有點類似于Java里的static
[python]?view plaincopy
?
當然,在很多語言里,這兩者的區別沒那么明顯。
下面先來看看被選為最佳答案的回復(來自??Andrew Edgecombe?):
函數是一段代碼,通過名字來進行調用。它能將一些數據(參數)傳遞進去進行處理,然后返回一些數據(返回值),也可以沒有返回值。
所有傳遞給函數的數據都是顯式傳遞的。
方法也是一段代碼,也通過名字來進行調用,但它跟一個對象相關聯。方法和函數大致上是相同的,但有兩個主要的不同之處:
以上只是簡略的解釋,忽略了作用域之類的問題。
?
Raffi Khatchadourian?對?Andrew Edgecombe?答案的補充:
對于 1),你應當再加上“ 方法在 C++ 中是被稱為成員函數”。因此,在 C++ 中的“方法”和“函數”的區別,就是“成員函數”和“函數”的區別。此外,諸如 Java 一類的編程語言只有“方法”。所以這時候就是“靜態方法”和“方法”直接的區別。
對于2),你應當補上方法可以操作已在類中聲明的私有實例(成員)數據。其他代碼都可以訪問公共實例數據。
?
Aaron?的回答:
方法和對象相關;
函數和對象無關。
Java中只有方法,C中只有函數,而C++里取決于是否在類中。
總結
以上是生活随笔為你收集整理的Python中Function(函数)和methon(方法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用Python编写博客导出工具
- 下一篇: Python常见数据结构整理