标签:python
# coding: utf-8
def func():
print 'x is', x
#x = 2 #if I add this line, there will be an error, why?
print 'Changed local x to', x
x = 50
func()
print 'Value of x is', x
>我没有在func函数中添加全局x,但它仍然可以找到x为50,为什么?
>当我在func函数中添加x = 2行时,会出现错误(UnboundLocalError:赋值前引用的局部变量’x’),为什么?
解决方法:
这里的诀窍是静态检测本地名称:
>只要在函数中未指定名称x,对x的引用将解析为全局范围
>如果在函数中的任何位置分配名称x,则Python假定x因此在函数中的任何位置都是本地名称.因此,第一行变为错误,因为在分配之前使用了本地名称x.
换句话说:赋值的名称在函数中的任何地方都被视为局部名称,而不仅仅是在赋值点之后.
标签:python 来源: https://codeday.me/bug/20190715/1470004.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。