在学习装饰器的过程中,程序运行时出现TypeError: ‘NoneType’ object is not callable的错误,但程序可以运行出结果,查了半天没找到原因。上网查询,原来是在第12行return wrapper()中,不需要括号()。
# Decorator装饰器
# https://www.bilibili.com/video/av25698102?from=search&seid=12784503354175672100
import time
# 下面就是一个装饰器,把本来在函数prime_nums()内执行的过程(注释掉的部分),单独写在这个装饰器中
def display_time(func):
def wrapper():
t1 = time.time()
func()
t2 = time.time()
print(t2 - t1)
return wrapper()
def is_prime(num):
if num<2:
return False
elif num==2:
return True
else:
for i in range(2,num):
if num%i ==0:
return False
return True
print(is_prime(19))
@display_time
def prime_nums():
# t1=time.time()
for i in range(2,10001):
if is_prime(i):
print(i)
# t2=time.time()
# print(t2-t1)
prime_nums()
学习程序就是不断地敲代码,多运行,多出错,经验就积累下来了。