Python練習題 函式作為函式的返回值(閉包)

2021-08-22 07:21:56 字數 1369 閱讀 7621

廖雪峰老師的教程

利用閉包返回乙個計數器函式,每次呼叫它返回遞增整數:

填充createcounter函式

# -*- coding: utf-8 -*-

defcreatecounter

():def

counter

():return

1return counter

# 測試:

countera = createcounter()

print(countera(), countera(), countera(), countera(), countera()) # 1 2 3 4 5

counterb = createcounter()

if [counterb(), counterb(), counterb(), counterb()] == [1, 2, 3, 4]:

print('測試通過!')

else:

print('測試失敗!')

我的答案:

def

createcounter

():#先整個生成器???

defgen1

(): n = 1

while

true:

yield n

n = n+1

o = gen1()

defcounter

():return next(o)

return counter

def

createcounter

(): a=[0]

defcounter

(): a[0] += 1

return a[0]

return counter

(顯然我的答案並沒有完全理解閉包函式的執行過程(╯°□°)╯)

def

createcounter

(): a = 0

defcounter

():nonlocal a

a = a+1

return a

return counter

疑問一:

答案1和答案2,相似,都是想通過改變變數a指向的值來不停的加1

還是不明白list可以直接改,int卻不能直接改為什麼

說是list是可變物件。。

疑問二(理解了這個我答案就不會寫那麼複雜了):

先是countera = createcounter()賦值之後

每輸出一次countera(),都會跑一次counter函式

也不懂,記住就行吧。。

python函式練習題

1 函式的定義 將可重複使用的,實現某種功能的 段組織在一起 2 函式的語法 def 函式名 引數 函式體 return 2.1 函式名是乙個變數,因此命名規則需遵守變數命名規則 3 函式的呼叫 函式名 4 函式的返回值 return 可空 none 單個 多個以tuple返回給呼叫者 5 函式的引...

python函式 練習題

1.寫函式,使用者傳入修改的檔名,與要修改的內容,執行函式,完成整個檔案的批量修改操作import os def modify file file name,content,new str new filename sfile name new.new file open new filename,...

函式練習題

1.打字軟體的正確率 編寫函式,計算字串匹配的準確率,類似於打字軟體 orginstr為原始內容,userstr為使用者輸入內容 2.模擬輪盤 遊戲 轉盤分為三部分 一等獎 二等獎和三等獎 輪盤轉的時候是隨機的,如果範圍在 0,0.08 之間,代表一等獎 如果範圍在 0.08,0.3 之間,代表二等...