慕的地8271018
2018-07-10 13:08:58
利用閉包返回一個(gè)計(jì)數(shù)器函數(shù),每次調(diào)用它返回遞增整數(shù):def createCounter():fs = [0]def counter():fs[0] = fs[0] + 1return fs[0]return counter我不明白為什么不能寫(xiě)成下面這樣def createCounter():fs = 0def counter():fs = fs + 1return fsreturn counter
2 回答

qq_花開(kāi)花謝_0
TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊
函數(shù)默認(rèn)只能讀取函數(shù)外變量,不可給外部變量賦值,如果寫(xiě)賦值式會(huì)被默認(rèn)為一個(gè)新創(chuàng)建的局部變量。如果想更改外部變量,則需在函數(shù)內(nèi)容開(kāi)頭寫(xiě)“global 要使用的外部變量名”。
但是雖然外部變量不可變,但外部變量的屬性可以變。對(duì)于外部列表,不可以更改的是列表本身,列表中的值是可以改變的。列表就像一個(gè)書(shū)架,你可以從函數(shù)里往里放書(shū)或拿書(shū),但不能把書(shū)架換掉。而整數(shù)、字符串等等就像書(shū),是最小單位,沒(méi)法直接改。
添加回答
舉報(bào)
0/150
提交
取消