python基础学习——函数和方法的区别与联系
以下是綜合多家說法的個人理解總結,僅為做到理解它們的區(qū)別與聯(lián)系,不保證嚴謹。
函數
函數是封裝了一些獨立的功能,可以直接調用,python內置了許多函數,同時可以自建函數來使用。
獨立的函數是函數(像 python3 里print()),類里封裝的一些可被直接使用或是被類直接調用的都可以叫做函數(如os.path.join(path, paths))。
方法
方法是對象可調用的函數。
聯(lián)系
方法是與對象緊密相連的函數。通常像下面這樣調用:
object.method(arguments)
所以,函數在面向不同角色的時候只是發(fā)生了身份的轉變,這對實現它的功能并沒什么影響。
?
用 python 內置函數驗證:
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
上面的例子很清晰的反映了函數與方法的區(qū)別與聯(lián)系。
?
補充一個概念,方便自己溫故。
關鍵字
關鍵字是python內置的,具有特殊意義的標識符,自定義標識符命名時不可與之重復。可通過以下代碼查看python內置的關鍵字內容
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:
驗證函數和方法舉例的時候,我使用類調用內置方法(這里把類作為函數的對象,所以我稱它為內置方法),當未提供參數時,出現如下報錯:
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)方法”、“類方法”的概念,我在下一博文中總結了自己的理解。
?
本文參考了HYESC博主的文章
轉載于:https://www.cnblogs.com/nimo97/p/9723526.html
總結
以上是生活随笔為你收集整理的python基础学习——函数和方法的区别与联系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【技巧总结】Penetration Te
- 下一篇: Linux下网络socket编程——实现