首页
Python中文网
在线手册
Python入门
Linux教程
Python高级教程
登录
注册
用户名
Email
自动登录
找回密码
密码
登录
立即注册
扫一扫,访问微社区
只需一步,快速开始
论坛
BBS
Python教程
在线手册
Python入门
Linux教程
Python高级教程
Python函数详解
搜索
本版
帖子
用户
道具
勋章
任务
设置
退出
Python论坛 - 国内最好的Python中文社区
»
论坛
›
技术交流
›
python问答 - 求助悬赏区 Help!
›
关于类中变量作用域的问题
返回列表
查看:
2118
|
回复:
2
[已解决]
关于类中变量作用域的问题
pikefreeman
当前离线
积分
6
1
主题
6
帖子
6
积分
贫民
贫民, 积分 6, 距离下一级还需 54 积分
贫民, 积分 6, 距离下一级还需 54 积分
积分
6
发消息
pikefreeman
发表于 2019-6-17 21:43:43
|
显示全部楼层
|
阅读模式
本帖最后由 pikefreeman 于 2019-7-4 23:57 编辑
是这样的,我在一个类中定义了两个函数,其中一个函数套用了另外一个函数,然后我在外层函数中定义了一个变量activate,在内层函数中用了nonlocal修改这个变量,外层函数返回这个变量,可是还是会报错
SyntaxError: no binding for nonlocal 'activate' found
复制代码
然后我把内外两层的变量都改为global就不报错了,请问这是怎么一回事?
回复
使用道具
举报
pikefreeman
当前离线
积分
6
1
主题
6
帖子
6
积分
贫民
贫民, 积分 6, 距离下一级还需 54 积分
贫民, 积分 6, 距离下一级还需 54 积分
积分
6
发消息
pikefreeman
楼主
|
发表于 2019-6-27 00:04:11
|
显示全部楼层
自顶zsbd
回复
使用道具
举报
wwhywhy
当前离线
积分
15
0
主题
15
帖子
15
积分
贫民
贫民, 积分 15, 距离下一级还需 45 积分
贫民, 积分 15, 距离下一级还需 45 积分
积分
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()
回复
支持
反对
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表