day15 装饰器

装饰器
给不同的函数增加通用的功能
闭包:函数对象+函数内部需要使用的外部变量=函数返回的整体
装饰器可以传入一个函数,返回一个函数对象
没有括号的叫函数对象
有括号的叫函数调用
def prc():
return sum
>>> def func1(func): # func 是函数,函数,函数
... return func([1,2,3,4]) # sum([1,2,3,4])
...
>>> func1(sum)
10
闭包:
def func():
x = 100
def func1():
print(x)
return func1 # func1() 如果返回函数调用,会打印x,如果不加括号,返回函数内存地址
# 装饰器调用例子,(下面这种方式,装饰器要写在最前面)
import time
def timer(func):
def func1():
time1 = time.time()
func()
time2 = time.time()
print('共使用了%s' % str(time2-time1))
return func1
 
@timer
def a():
x = 1
while x<1000000:
x += 1
 
@timer
def b():
x = 1
while x<10000000:
x += 1
a()
b()
a ===>timer(a)
a()=====>timer(a)()
 
 
 
 
 
 
>>> for i in range(1,10):
... for m in range(1,i+1):
... # print(i,'*',m,'=',i*m)
... print('{}*{}={} '.format(i,m,i*m),end='')
... print()
...
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
 
>>> for i in range(len(l)):
... for k in range(i+1):
... if l[i]<l[k]:
... l[i],l[k] = l[k],l[i]
...
>>> l
[2, 3, 5, 6, 7]
 
for i in range(1,5):
... for k in range(1,5):
... for m in range(1,5):
... if i !=k and i != m and k != m:
... print(i,k,m)
 
 

原文地址:https://www.cnblogs.com/jueshilaozhongyi/p/12089099.html