老男孩python全栈开发视频教程_老男孩Python全栈开发(92天全)视频教程 自学笔记16...
day16課程內容:
裝飾器:
def outer():
x=10
def inner():
print(x)
return inner
outer()() #inner 是局部變量,10
閉包:如果在一個內部函數里,對外部作用域(但不是對全局作用域)的變量進行引用,那么內部函數就認為就被認為是閉包。
對修改封閉,對擴展開放,開放封閉原則!
import time
def foo():
print('foo')
time.sleep(1)
def bar():
print('bar')
time.sleep(1)
def show_time(f):
start_time=time.time()
f()
end_time=time.time()
print(end_time-start_time)
show_time(foo) #實現了給任意函數增加計時的功能,但是同時也改變了函數的調用方式
#########
import time
def show_time(f): #簡單的裝飾器
def inner():
start=time.time()
f()
end=time.time()
print(end-start)
return inner
@show_time # 等價于:foo=show_time(foo)
def foo():
print('拆東墻,當年的明月換撥人看。')
time.sleep(1)
foo()
#拆東墻,當年的明月換撥人看。
#1.0000572204589844 裝飾器
@show_time
def bar():
print('興也苦亡也苦')
time.sleep(2)
bar()
######給功能函數加參數,的裝飾器###
import time
def show_time(f):
def inner(*x,**y):
start=time.time()
f(*x,**y)
end=time.time()
print(end-start)
return inner
@show_time
def foo(*a,**b):
sum=0
for i in a:
sum+=i
print(sum)
time.sleep(1)
foo(1,2,3,3,3,6)
# 18
# 1.0000569820404053
##給裝飾器加參數的裝飾器#####
import time
def logger(j=0):
def show_time(f):
def inner(*a,**b):
start=time.time()
f(*a,**b)
end=time.time()
print(end-start)
if j==1:
print('打印日志')
return inner
return show_time
@logger(1)
def foo(*x,**y):
sum=0
for i in x:
sum+=i
print(sum)
time.sleep(1)
foo(3,1,2,3)
# 9
# 1.0000572204589844
# 打印日志
總結
以上是生活随笔為你收集整理的老男孩python全栈开发视频教程_老男孩Python全栈开发(92天全)视频教程 自学笔记16...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么把一个控件放到tab页面上去?_移动
- 下一篇: st7789v tft 驱动电路_OLE