在python中,函數和類也是對象,具有如下特點:
1.可以指派給一個變量
将函數指派給變量
def ask(name='bobby'):
print(name)
my_func = ask
my_func('hello Kitty')
運作結果:
hello kitty
将類指派給變量:
class Person:
def __init__(self):
print('bobby')
my_class = Person
my_class()
運作結果:
bobby
2.可以添加到集合對象中
obj_list = []
obj_list.append(ask)
obj_list.append(Person)
for item in obj_list:
print(item())
運作結果:
bobby #調用函數ask
None #print函數ask 因為ask沒有傳回值,是以傳回None
bobby #調用類Person
<__main__.Person object at 0x0000015D311A7B50> #print 類Person
3.可以作為參數傳遞給函數
上面已經可以展現函數和類可以作為參數傳遞的屬性,如obj_list.append(ask)
4.可以當作函數的傳回值
def decorator_func():
print("dec start")
return ask
my_ask = decorator_func()
my_ask('tom')
運作結果:
dec start
tom
這裡先調用decorator_func,傳回ask,并将參數'tom'傳遞給ask,其實這就是裝飾器的運作原理