一个基本的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

慕的地8271018
浏览 757回答 2
2回答

qq_花开花谢_0

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

慕村225694

作用域的问题,你把fs的值传给函def counter(fs)就好了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python