装饰器
作用:扩展被装饰的函数功能。
参考链接: http://c.biancheng.net/view/2270.html
https://zhuanlan.zhihu.com/p/640193185
函数赋值
def func(message):
print('Got a message: {}'.format(message))
send_message = func
send_message('hello world')
# 输出
# Got a message: hello world
函数作为参数
def get_message(message):
return 'Got a message: ' + message
def root_call(func, message):
print(func(message))
root_call(get_message, 'hello world')
# 输出
Got a message: hello world
函数内定义函数
函数对象作为返回值
使用
对funB(args)使用@funA,本质就是:funB=funA(funB)
def funA(fn):
# 定义一个嵌套函数
def say(arc):
print("Python教程:",arc)
return say
@funA
def funB(arc):
print("funB():", a)
funB("http://c.biancheng.net/python")
def funA(fn):
# 定义一个嵌套函数
def say(arc):
print("Python教程:",arc)
return say
def funB(arc):
print("funB():", a)
funB = funA(funB)
funB("http://c.biancheng.net/python")
应用
@staticmethod
@classmethod
class People():
def run(self):
print('this is run')
@classmethod
def relax(cls):
print('this is relax')
xiaoming = People()
xiaoming.run()#this is run
People.relax()#this is relax
People.run()#TypeError: run() missing 1 required positional argument: 'self'
## @property