利用闭包返回一个计数器函数,每次调用它返回递增整数:def createCounter():fs = [0]def counter():fs[0] = fs[0] + 1return fs[0]return counter我不明白为什么不能写成下面这样def createCounter():fs = 0def counter():fs = fs + 1return fsreturn counter
1 回答
![?](http://img1.sycdn.imooc.com/533e4c0500010c7602000200-100-100.jpg)
婷婷同学_
TA贡献1844条经验 获得超8个赞
函数默认只能读取函数外变量,不可给外部变量赋值,如果写赋值式会被默认为一个新创建的局部变量。如果想更改外部变量,则需在函数内容开头写“global 要使用的外部变量名”。
但是虽然外部变量不可变,但外部变量的属性可以变。对于外部列表,不可以更改的是列表本身,列表中的值是可以改变的。列表就像一个书架,你可以从函数里往里放书或拿书,但不能把书架换掉。而整数、字符串等等就像书,是最小单位,没法直接改。
添加回答
举报
0/150
提交
取消