您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python嵌套函数变量作用域

Python嵌套函数变量作用域

当我运行您的代码时,出现以下错误

UnboundLocalError: local variable '_total' referenced before assignment
@H_301_5@

此问题是由以下行引起的:

_total += PRICE_RANGES[key][0]
@H_301_5@

有关范围和命名空间的文档 说:

Python的一个特殊怪癖是-如果没有有效的global语句- 。分配不复制数据,它们只是将名称绑定到对象。

因此,由于该行实际上是在说:

_total = _total + PRICE_RANGES[key][0]
@H_301_5@

_total在的名称空间中创建recurse()。由于这_total是新的未分配内容,因此您不能在其中使用它。

解决方法

我已经阅读了有关该主题的几乎所有其他问题,但是我的代码仍然无法正常工作。

我想我缺少关于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)

我得到

“未定义全局名称’_total’”

我知道问题出在_total作业上,但我不明白为什么。不应recurse()访问父函数的变量吗?

有人可以向我解释python变量范围我缺少什么吗?

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
_total += PRICE_RANGES[key][0]
@H_301_5@

有关范围和命名空间的文档 说:

Python的一个特殊怪癖是-如果没有有效的global语句- 。分配不复制数据,它们只是将名称绑定到对象。

因此,由于该行实际上是在说:

_total = _total + PRICE_RANGES[key][0]
@H_301_5@

_total在的名称空间中创建recurse()。由于这_total是新的未分配内容,因此您不能在其中使用它。

解决方法

我已经阅读了有关该主题的几乎所有其他问题,但是我的代码仍然无法正常工作。

我想我缺少关于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)

我得到

“未定义全局名称’_total’”

我知道问题出在_total作业上,但我不明白为什么。不应recurse()访问父函数的变量吗?

有人可以向我解释python变量范围我缺少什么吗?

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
_total = _total + PRICE_RANGES[key][0]
@H_301_5@

_total在的名称空间中创建recurse()。由于这_total是新的未分配内容,因此您不能在其中使用它。

解决方法

我已经阅读了有关该主题的几乎所有其他问题,但是我的代码仍然无法正常工作。

我想我缺少关于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)

我得到

“未定义全局名称’_total’”

我知道问题出在_total作业上,但我不明白为什么。不应recurse()访问父函数的变量吗?

有人可以向我解释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)

此问题是由以下行引起的:

有关范围和命名空间的文档 说:

Python的一个特殊怪癖是-如果没有有效的global语句- 。分配不复制数据,它们只是将名称绑定到对象。

因此,由于该行实际上是在说:

_total在的名称空间中创建recurse()。由于这_total是新的未分配内容,因此您不能在其中使用它。

我已经阅读了有关该主题的几乎所有其他问题,但是我的代码仍然无法正常工作。

我想我缺少关于python变量范围的东西。

这是我的代码:

我得到

“未定义全局名称’_total’”

我知道问题出在_total作业上,但我不明白为什么。不应recurse()访问父函数的变量吗?

有人可以向我解释python变量范围我缺少什么吗?

此问题是由以下行引起的:

_total += PRICE_RANGES[key][0]
@H_301_5@

有关范围和命名空间的文档 说:

Python的一个特殊怪癖是-如果没有有效的global语句- 。分配不复制数据,它们只是将名称绑定到对象。

因此,由于该行实际上是在说:

_total = _total + PRICE_RANGES[key][0]
@H_301_5@

_total在的名称空间中创建recurse()。由于这_total是新的未分配内容,因此您不能在其中使用它。

解决方法

我已经阅读了有关该主题的几乎所有其他问题,但是我的代码仍然无法正常工作。

我想我缺少关于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)

我得到

“未定义全局名称’_total’”

我知道问题出在_total作业上,但我不明白为什么。不应recurse()访问父函数的变量吗?

有人可以向我解释python变量范围我缺少什么吗?

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
_total = _total + PRICE_RANGES[key][0]
@H_301_5@

_total在的名称空间中创建recurse()。由于这_total是新的未分配内容,因此您不能在其中使用它。

解决方法

我已经阅读了有关该主题的几乎所有其他问题,但是我的代码仍然无法正常工作。

我想我缺少关于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)

我得到

“未定义全局名称’_total’”

我知道问题出在_total作业上,但我不明白为什么。不应recurse()访问父函数的变量吗?

有人可以向我解释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)

有关范围和命名空间的文档 说:

Python的一个特殊怪癖是-如果没有有效的global语句- 。分配不复制数据,它们只是将名称绑定到对象。

因此,由于该行实际上是在说:

_total在的名称空间中创建recurse()。由于这_total是新的未分配内容,因此您不能在其中使用它。

我已经阅读了有关该主题的几乎所有其他问题,但是我的代码仍然无法正常工作。

我想我缺少关于python变量范围的东西。

这是我的代码:

我得到

“未定义全局名称’_total’”

我知道问题出在_total作业上,但我不明白为什么。不应recurse()访问父函数的变量吗?

有人可以向我解释python变量范围我缺少什么吗?

有关范围和命名空间的文档 说:

Python的一个特殊怪癖是-如果没有有效的global语句- 。分配不复制数据,它们只是将名称绑定到对象。

因此,由于该行实际上是在说:

_total = _total + PRICE_RANGES[key][0]
@H_301_5@

_total在的名称空间中创建recurse()。由于这_total是新的未分配内容,因此您不能在其中使用它。

解决方法

我已经阅读了有关该主题的几乎所有其他问题,但是我的代码仍然无法正常工作。

我想我缺少关于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)

我得到

“未定义全局名称’_total’”

我知道问题出在_total作业上,但我不明白为什么。不应recurse()访问父函数的变量吗?

有人可以向我解释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)

_total在的名称空间中创建recurse()。由于这_total是新的未分配内容,因此您不能在其中使用它。

我已经阅读了有关该主题的几乎所有其他问题,但是我的代码仍然无法正常工作。

我想我缺少关于python变量范围的东西。

这是我的代码:

我得到

“未定义全局名称’_total’”

我知道问题出在_total作业上,但我不明白为什么。不应recurse()访问父函数的变量吗?

有人可以向我解释python变量范围我缺少什么吗?

_total在的名称空间中创建recurse()。由于这_total是新的未分配内容,因此您不能在其中使用它。

python 2022/1/1 18:51:53 有339人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶