python2中關於閉包計數器的疑惑

2021-08-14 16:23:08 字數 474 閱讀 7110

看教程的時候,看到了閉包,教程後面說用閉包實現一直計數器,我嘗試了下

def

createcounter

(): num = 100

cnt = [0]

i = 0

defcounter

():print num

cnt[0] = cnt[0] +1

i = i + 1

return i

#return cnt[0]

#return ("%d" %(num+1))

return counter

countera = createcounter()

print(countera(), countera(), countera(), countera(), countera())

使用i的這種方式會報錯,然後看了下使用列表就是可以的,找了下,看到下面的文章做了解釋

python中閉包和裝飾器

前言 程式語言發展的過程中,我們為了提高 利用率,發明了函式式程式設計。函式將 封裝起來,我們需要用到此功能函式的時候,呼叫一下就可以了。但是使用的過程中,也遇到了一些問題,比如函式實現的功能不夠,或者跟我們要實現的功能有些差別。腫麼辦呢?開啟函式內部 重新寫?可以嗎?可以!但是這就違背了函式式程式...

Python中的閉包和修飾器

python對閉包的官方說法 閉包表示乙個內部函式裡對外部作用域 但不是全域性作用域 的變數進行引用,就認為內部函式是閉包。閉包可以形象的理解為乙個封閉的包裹,這個包裹就是乙個函式,且這個函式有乙個特點,它將外部作用域中的變數也包裹進去了。閉包意味著,如果呼叫乙個函式a,這個函式a返回乙個函式b,那...

關於python2中的string和unicode

一 d u 你好 print d d u xc4 xe3 xba xc3 e 你好 print e 你好 e xc4 xe3 xba xc3 發現了嗎,在idle中試圖輸入中文並指定為unicode失敗,編碼依舊是系統編碼 gbk 加了個字首u,成了偽unicode。於是考慮decode獲得unic...