首页
Python中文网
在线手册
Python入门
Linux教程
Python高级教程
登录
注册
用户名
Email
自动登录
找回密码
密码
登录
立即注册
扫一扫,访问微社区
只需一步,快速开始
论坛
BBS
Python教程
在线手册
Python入门
Linux教程
Python高级教程
Python函数详解
搜索
本版
帖子
用户
道具
勋章
任务
设置
退出
Python论坛 - 国内最好的Python中文社区
»
论坛
›
技术交流
›
python问答 - 求助悬赏区 Help!
›
关于局部变量的问题
返回列表
查看:
1606
|
回复:
2
[求助]
关于局部变量的问题
velscode
当前离线
积分
0
0
主题
0
帖子
0
积分
贫民
贫民, 积分 0, 距离下一级还需 60 积分
贫民, 积分 0, 距离下一级还需 60 积分
积分
0
发消息
velscode
发表于 2019-3-25 10:59:30
|
显示全部楼层
|
阅读模式
本帖最后由 velscode 于 2019-3-25 11:01 编辑
def f1():
i=1
def f2():
i=i+1
复制代码
类似这样的代码会报
UnboundLocalError: local variable 'i' referenced before assignment
我的想法是
f2
中修改
f1-i
的值
但是我让解释器不理解
f2-i
是否就是
f1-i
了,是吗?
请问这样的逻辑错误在哪里?应该如何修改?谢谢
回复
使用道具
举报
help
当前离线
积分
1
0
主题
1
帖子
1
积分
贫民
贫民, 积分 1, 距离下一级还需 59 积分
贫民, 积分 1, 距离下一级还需 59 积分
积分
1
发消息
help
发表于 2019-3-25 21:37:01
|
显示全部楼层
内部函数,不能修改全局变量但可以访问全局变量
内部函数,在尝试修改同名全局变量时,Python 会认为它是一个局部变量,并引发 UnboundLocalError
在内部函数修改同名全局变量之前尝试访问变量名称(如: print l; l = l + 1),也会引发 UnboundLocalError
摘抄别人的回答,但基本上就是这个意思
回复
支持
反对
使用道具
举报
sheeboard
当前离线
积分
956
0
主题
956
帖子
956
积分
圣骑士
圣骑士, 积分 956, 距离下一级还需 44 积分
圣骑士, 积分 956, 距离下一级还需 44 积分
积分
956
发消息
sheeboard
发表于 2019-3-25 22:10:28
|
显示全部楼层
本帖最后由 sheeboard 于 2019-3-25 22:11 编辑
nonlocal关键词。
def scope_test():
def do_local():
spam = "local spam"
def do_nonlocal():
nonlocal spam
spam = "nonlocal spam"
def do_global():
global spam
spam = "global spam"
spam = "test spam"
do_local()
print("After local assignment:", spam)
do_nonlocal()
print("After nonlocal assignment:", spam)
do_global()
print("After global assignment:", spam)
scope_test()
print("In global scope:", spam)
结果
After local assignment: test spam
After nonlocal assignment: nonlocal spam
After global assignment: nonlocal spam
In global scope: global spam
回复
支持
反对
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表