装修器
装修器是程序开发中经常会用到的一个功用,用好了装修器,开发功率如虎添翼,所以这也是Python面试中必问的问题,但对于很多初度触摸这个常识的人来讲,这个功用有点绕,自学时直接绕过去了,然后面试问到了就挂了,由于装修器是程序开发的基础常识,这个都不会,别跟人家说你会Python, 看了下面的文章,确保你学会装修器。
函数也是目标
要了解Python装修器,首先要理解在Python中,函数也是一种目标,因而能够把界说函数时的函数名看作是函数目标的一个引证。既然是引证,因而能够将函数赋值给一个变量,也能够把函数作为一个参数传递或回来。一起,函数体中也能够再界说函数。
内嵌函数
在一个函数内部界说,只能该函数运用。
SCORE = 60 #100分的及格线
def check(score):
if score >= SCORE:
print('A')
else:
print('B')
def print_score(): #声明内嵌函数
print(score)
print_score() #调用内嵌函数
if __name__=='__main__':
check(90)
#打印成果
A
90
怎么保存被装修办法的元数据不被改动
这样就存在一个问题,咱们的办法被装修今后,本来的某些东西,咱们无法访问了,这肯定是不可的,那咱们有必要想办法能够在装修今后还坚持某些元数据是本来办法的元数据。
简略考虑今后咱们能够这样做:
defadd_cache(func):
"""
This add_cache
"""
cache = {}
defwrap(*args):
"""
This wrap
"""
if args not in cache:
cache[args] = func(*args)
return cache[args]
# 回来之前,咱们修正这个目标的元数据让它等于原办法的元数据
wrap.__name__ = func.__name__
wrap.__doc__ = func.__doc__
return wrap
@add_cache
deffibonacci(n):
"""
This fibonacci
"""
if n <= 1:
return 1
return fibonacci(n - 1) + fibonacci(n - 2)
print(fibonacci.__name__)
print(fibonacci.__doc__)
成果和咱们想象的相同:
fibonacci
This fibonacci
“咱们信任人人都能够成为一个IT大神,现在开端,挑选一条阳光大路,助你入门,学习的路上不再苍茫。这里是北京尚书院,初学者转行到IT职业的聚集地。"