Python里的@
函数修饰器:
python里面使用@
作为函数的修饰符,主要用在某块或者类里面对函数进行修饰。出现在函数名字上一行。
例如,要测试一个函数的运行时间,测试的函数又不要写在函数内部,则可以用下面的方法。
第一种:@函数名
import time
def times_long(fn):
def get_time(*args):
start = time.time()
num = args[0]
print("this is start!", num)
fn(*args)
end = time.time()
print("this is end!", end - start)
return fn(2*num)
return get_time
@times_long
def sum_a(m):
time.sleep(m)
print("this is sum_a!", m)
sum_a(4)
#输出
# this is start! 4
# this is sum_a! 4
# this is end! 4.000227212905884
# this is sum_a! 8
解释:
可以看到先执行测时间的函数,然后在测时间的函数内部调用了本函数,然后测时间的函数结束后,再执行本来应该执行的函数。return fn(2*num)
表示返回后还需要执行sum_a
, 如果不是返回同名函数,那么就不执行sum_a
第二种
@staticmethos:静态函数
class Demo:
def print_all(self, name):
print(name)
@classmethod
def print_all2(name):
pr