首页 / PYTHON / Python嵌套函数变量作用域
Python嵌套函数变量作用域
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python嵌套函数变量作用域,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1293字,纯文字阅读大概需要2分钟。
内容图文
参见英文答案 > UnboundLocalError with nested function scopes 4个
我已经阅读了关于该主题的几乎所有其他问题,但我的代码仍然不起作用.
我想我错过了一些关于python变量范围的东西.
这是我的代码:
PRICE_RANGES = {
64:(25, 0.35),
32:(13, 0.40),
16:(7, 0.45),
8:(4, 0.5)
}
def get_order_total(quantity):
global PRICE_RANGES
_total = 0
_i = PRICE_RANGES.iterkeys()
def recurse(_i):
try:
key = _i.next()
if quantity % key != quantity:
_total += PRICE_RANGES[key][0]
return recurse(_i)
except StopIteration:
return (key, quantity % key)
res = recurse(_i)
我明白了
“global name ‘_total’ is not defined”
我知道问题出在_total赋值上,但我无法理解为什么.
recurse()不应该访问父函数的变量吗?
有人可以向我解释一下我对python变量范围缺少什么吗?
解决方法:
当我运行你的代码时,我收到此错误:
UnboundLocalError: local variable '_total' referenced before assignment
此问题是由此行引起的:
_total += PRICE_RANGES[key][0]
The documentation about Scopes and Namespaces说:
A special quirk of Python is that – if no
global
statement is in effect – assignments to names always go into the innermost scope. Assignments do not copy data — they just bind names to objects.
因为这条线有效地说:
_total = _total + PRICE_RANGES[key][0]
它在recurse()的命名空间中创建_total.由于_total是新的并且未分配,因此您无法在添加中使用它.
内容总结
以上是互联网集市为您收集整理的Python嵌套函数变量作用域全部内容,希望文章能够帮你解决Python嵌套函数变量作用域所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。