一个基本的python问题?

利用闭包返回一个计数器函数,每次调用它返回递增整数:
def createCounter():
fs = [0]
def counter():
fs[0] = fs[0] + 1
return fs[0]
return counter

我不明白为什么不能写成下面这样

def createCounter():
fs = 0
def counter():
fs = fs + 1
return fs
return counter

翻过高山走不出你
浏览 654回答 1
1回答

婷婷同学_

函数默认只能读取函数外变量,不可给外部变量赋值,如果写赋值式会被默认为一个新创建的局部变量。如果想更改外部变量,则需在函数内容开头写“global 要使用的外部变量名”。但是虽然外部变量不可变,但外部变量的属性可以变。对于外部列表,不可以更改的是列表本身,列表中的值是可以改变的。列表就像一个书架,你可以从函数里往里放书或拿书,但不能把书架换掉。而整数、字符串等等就像书,是最小单位,没法直接改。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python