为了账号安全,请及时绑定邮箱和手机立即绑定

一个基本的python问题

一个基本的python问题

慕的地8271018 2018-07-10 13:08:58
利用闭包返回一个计数器函数,每次调用它返回递增整数: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
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

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

查看完整回答
反对 回复 2018-07-30
?
慕村225694

TA贡献1880条经验 获得超4个赞

作用域的问题,你把fs的值传给函def counter(fs)就好了

查看完整回答
反对 回复 2018-07-30
  • 2 回答
  • 0 关注
  • 755 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信