python基础学习——函数和方法的区别与联系
以下是綜合多家說法的個人理解總結(jié),僅為做到理解它們的區(qū)別與聯(lián)系,不保證嚴(yán)謹(jǐn)。
函數(shù)
函數(shù)是封裝了一些獨(dú)立的功能,可以直接調(diào)用,python內(nèi)置了許多函數(shù),同時可以自建函數(shù)來使用。
獨(dú)立的函數(shù)是函數(shù)(像 python3 里print()),類里封裝的一些可被直接使用或是被類直接調(diào)用的都可以叫做函數(shù)(如os.path.join(path, paths))。
方法
方法是對象可調(diào)用的函數(shù)。
聯(lián)系
方法是與對象緊密相連的函數(shù)。通常像下面這樣調(diào)用:
object.method(arguments)
所以,函數(shù)在面向不同角色的時候只是發(fā)生了身份的轉(zhuǎn)變,這對實(shí)現(xiàn)它的功能并沒什么影響。
?
用 python 內(nèi)置函數(shù)驗證:
In [6]: from types import FunctionType, MethodType
In [7]: class Foo(object):
...: def func(self):
...: pass
In [8]: obj = Foo()
In [9]: obj.func()
In [11]: Foo.func(123)
In [12]: print(isinstance(obj.func,MethodType))
True
In [13]: print(isinstance(Foo.func,FunctionType))
True
或者用下面的方法驗證
In [21]: type(obj.func)
Out[21]: method
In [22]: type(Foo.func)
Out[22]: function
上面的例子很清晰的反映了函數(shù)與方法的區(qū)別與聯(lián)系。
?
補(bǔ)充一個概念,方便自己溫故。
關(guān)鍵字
關(guān)鍵字是python內(nèi)置的,具有特殊意義的標(biāo)識符,自定義標(biāo)識符命名時不可與之重復(fù)。可通過以下代碼查看python內(nèi)置的關(guān)鍵字內(nèi)容
import keyword
In [16]: print(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except',?
'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return',
'try', 'while', 'with', 'yield']
?
PS:
驗證函數(shù)和方法舉例的時候,我使用類調(diào)用內(nèi)置方法(這里把類作為函數(shù)的對象,所以我稱它為內(nèi)置方法),當(dāng)未提供參數(shù)時,出現(xiàn)如下報錯:
In [10]: Foo.func()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-10-9c47b1c912d3> in <module>()
----> 1 Foo.func()
TypeError: func() missing 1 required positional argument: 'self'
這里可引出“靜態(tài)方法”、“類方法”的概念,我在下一博文中總結(jié)了自己的理解。
?
本文參考了HYESC博主的文章
轉(zhuǎn)載于:https://www.cnblogs.com/nimo97/p/9723526.html
總結(jié)
以上是生活随笔為你收集整理的python基础学习——函数和方法的区别与联系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【技巧总结】Penetration Te
- 下一篇: Linux下网络socket编程——实现