持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情
大家好,我是木大木大,因为疫情和环境原因啊,在家开始了自学python的路子,从此深坑加一人。后面我会每天持续更新一些学习python的过程,当然一开始就是一些基础啦,希望大家多多支持,莫嫌弃啦~
闭包与装饰器
1.1 闭包
def f():
x = 10
def g():
print(x)
return g
f()() #f()——》g
def f():
x = 10
def g():
print(x)
return g
h = f() #f()——》g
h()
闭包:如果在一个内部函数里面,对在外作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包
闭包 = 内部函数 + 定义函数时的环境
def f(x):
def g():
print(x)
return g
h = f(1)
h()
1.2 装饰器
2.2.1 无参
模块 time 时间模块
要导包 import time
time.time() # 指的是1970年01月01日00时00分00秒起止到现在的总秒数
import time
def foo():
start = time.time()
print("foo..")
time.sleep(1) # sleep可以休眠程序,括号里面是休眠几秒
end = time.time()
print(f"运行了{end-start}秒")
foo()
# 计算时间的代码分离出来单独作为一个函数,原函数不动
import time
def foo():
print("foo..")
time.sleep(1) # sleep可以休眠程序,括号里面是休眠几秒
def show_time(func): # 这个函数的功能是帮忙展示时间的
start = time.time()
func()
end = time.time()
print(f"运行了{end - start}秒")
show_time(foo)
func调用位置
time是如何调用的
装饰器:在不修改源代码的基础上给函数添加一个新的功能
import time
def foo():
print("foo..")
def bay():
print("bay...")
def show_time(func): # 这个函数的功能是帮忙展示时间的
def inner():
start = time.time()
func()
time.sleep(1) # sleep可以休眠程序,括号里面是休眠几秒
end = time.time()
print(f"运行了{end - start}秒")
return inner
foo = show_time(foo)
foo()
bay = show_time(bay)
bay()
@ 语法糖
import time
def show_time(func): # 这个函数的功能是帮忙展示时间的
def inner():
start = time.time()
func()
time.sleep(1) # sleep可以休眠程序,括号里面是休眠几秒
end = time.time()
print(f"运行了{end - start}秒")
return inner
@ show_time # foo = show_time(foo)
def foo():
print("foo..")
foo()
@ show_time
def bay():
print("bay...")
bay()
2.2.2 原函数参数
import time
def show_time(func): # 这个函数的功能是帮忙展示时间的
def inner(a,b):
start = time.time()
func(a,b)
time.sleep(1) # sleep可以休眠程序,括号里面是休眠几秒
end = time.time()
print(f"运行了{end - start}秒")
return inner
@ show_time
def add(a,b):
print(a+b)
add(1,2)
import time
def show_time(func): # 这个函数的功能是帮忙展示时间的
def inner(*args,**kwargs):
start = time.time()
func(*args,**kwargs)
time.sleep(1) # sleep可以休眠程序,括号里面是休眠几秒
end = time.time()
print(f"运行了{end - start}秒")
return inner
@show_time # add1 = show_time(add1)
def add1(*args,**kwargs):
result = 0
for i in args:
result+=i
print(result)
add1(1,2,3,4,5,6)
今天的内容就到这里啦,感谢观看吖~