起因
这个起因相当朴素,就是下午了,办公室闷,不透气,实在没精力,想起来装饰器还没有搞懂,那就学习一下吧。
B站教程:
https://www.bilibili.com/video/BV11s411V7Dt?from=search&seid=2368106394264033096
这是一个博主自己写的汇总博客:
https://blog.csdn.net/happygjcd/article/details/103519479
函数嵌套
参考教程:
https://www.cnblogs.com/Henry121/p/12532676.html
函数对象
在python中涉及到值的传递都是内存传递,
以上都是为了说明函数的参数可以是另一个函数,因为函数本质上和变量的传递是相同的,都是一个地址。
python装饰器
用简单的例子说明。
import time
def display_time(func):
def wrapper(*args):
t1 = time.time()
result = func(*args)
t2 = time.time()
print('total_time:{:.4} s'.format(t2 - t1))
return result
return wrapper
@display_time
def prime_nums():
for i in range(2, 10000):
if is_prime(i):
print(i)
@display_time
def count_prime_nums():
count = 0
for i in range(2, 10000):
if is_prime(i):
count += 1
# print(i)
return count
@display_time
def count_prime_nums(maxnum):
count = 0
for i in range(2, maxnum):
if is_prime(i):
count += 1
# print(i)
return count
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
# 无参无返回值
prime_nums()
# 有返回值
count = count_prime_nums()
print(count)
# 有参有返回值
count = count_prime_nums(1000)
print(count)