找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1923|回复: 2

[已解决] 关于类中变量作用域的问题

1

主题

6

帖子

6

积分

贫民

积分
6
pikefreeman 发表于 2019-6-17 21:43:43 | 显示全部楼层 |阅读模式
本帖最后由 pikefreeman 于 2019-7-4 23:57 编辑

是这样的,我在一个类中定义了两个函数,其中一个函数套用了另外一个函数,然后我在外层函数中定义了一个变量activate,在内层函数中用了nonlocal修改这个变量,外层函数返回这个变量,可是还是会报错
  1. SyntaxError: no binding for nonlocal 'activate' found
复制代码
然后我把内外两层的变量都改为global就不报错了,请问这是怎么一回事?
回复

使用道具 举报

1

主题

6

帖子

6

积分

贫民

积分
6
pikefreeman  楼主| 发表于 2019-6-27 00:04:11 | 显示全部楼层
自顶zsbd
回复

使用道具 举报

0

主题

15

帖子

15

积分

贫民

积分
15
wwhywhy 发表于 2019-7-1 10:23:09 | 显示全部楼层
nonlocal 只寻找上一层,不寻找全局。所以定义的时候只能在嵌套的子函数中定义。
另外,需要先定义后使用。eg:
def b():
        x = 99
        def a():
                nonlocal x
                x = 10
                print('in a x is %s' % x)
        a()
        print('in b x = %s' % x)
if __name__ == '__main__':
        b()
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表