Python的面向對象更加完全。python
函數和類也是對象,屬於 python 的一等公民。app
類能夠理解爲模板,也是一個對象,能夠動態修改他的屬性。函數
一、賦值給一個變量
函數對象賦值給一個變量:code
def ask(name="baby",age=3): print(name, age) my_func = ask my_func("Bob",18) 輸出結果: Bob 18
類對象賦值給一個變量:對象
#類對象賦值給一個變量 class Person: def __init__(self): print("Person class") my_class = Person my_class() 輸出: Person class
二、能夠添加到集合對象中it
def ask(name="baby",age=3): print(name, age) class Person: def __init__(self): print("Person class") obj_list = [] obj_list.append(ask) obj_list.append(Person) for item in obj_list: print(item) 輸出: <function ask at 0x106e320d0> <class '__main__.Person'>
三、能夠做爲參數傳遞給函數io
def ask(name="baby",age=3): print(name, age) class Person: def __init__(self): print("Person class") obj_list = [] obj_list.append(ask) obj_list.append(Person) for item in obj_list: print(item()) 輸出: baby 3 None Person class <__main__.Person object at 0x109f0d978> 解釋: baby 3 : ask 函數實例化後打印出來的結果 None:ask 函數沒有返回值 Person class:Person 類的 print 打印的結果 <__main__.Person object at 0x109f0d978>:對象的返回值是一個 Person object
注意和上面例子的區別在於:
for循環的print函數,對 item 作了實例化:item()for循環
四、能夠當作函數的返回值
函數能夠返回一個函數,這是 python 裝飾器的實現原理function
def ask(name="baby",age=3): print(name, age) def decorator_func(): print("desc start") return ask my_ask= decorator_func() my_ask("Tom",21) 輸出: desc start Tom 21