python(6)——裝飾器的定義和使用
阿新 • • 發佈:2021-01-31
技術標籤:python
1.閱讀下面的程式,分析程式碼能否編譯通過。如果能編譯通過,請列出執行結果,並說明原因;否則說明編譯失敗的原因。
程式1:
def funX():
x=5
def funY():
nonlocal x
x+=1
return x
return funY
a=funX()
print(a())
print(a())
print(a())
def funX():
x=5
def funY():
nonlocal x#定義在閉包裡
x+=1
return x
return funY
a=funX( )
print(a())
print(a())
print(a())
#定義了一個裝飾器 能夠編譯通過,在裝飾器裡面 對x變數進行了加1操作 ,因為x初始值為5,所以第一次輸出a為6 第二次為7,第三次為9
程式2:
def funX():
x=5
def funY():
nonlocal x
x+=1
return x
return funY
a=funX
print(a()())
print(a()())
print(a()())
def funX():
x=5
def funY():
nonlocal x
x+=1
return x
return funY
a=funX
print(a()())
print(a()())
print(a()())
#和上面的函式一樣,也同樣定義了裝飾器,能夠編譯通過,但是由於輸出格式為 print(a()()) 導致結果不變
2.已知有個列表[1,2,3,4,5],讓列表的每個元素加1,把結果不能被2整除的元素篩選出來。
a=[1,2,3,4,5]
print(a)
b=list(map(lambda x:x+1,a))
print(b)
for i in b:
if(i%2!=0):
print(i,end=" ")