加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 另一个UnboundLocalError:在赋值问题之前引用的局部

发布时间:2020-12-20 11:29:04 所属栏目:Python 来源:网络整理
导读:我偶然发现了一个让我理解 Pythons变量范围的情况. 这是代码: transaction_id = Nonedef parseFileContent(hostID,marketID,content,writeToDB=False): features = _buildObjects(StringIO.StringIO(content)) for feature in features: featureID = adapte
我偶然发现了一个让我理解 Pythons变量范围的情况.

这是代码:

transaction_id = None


def parseFileContent(hostID,marketID,content,writeToDB=False):
    features = _buildObjects(StringIO.StringIO(content))

    for feature in features:
        featureID =  adapter.addFeature(feature.name,boris)
        print transaction_id #breaks here UnboundLocalError: local variable 'transaction_id' referenced before assignment

        transaction_id = adapter.addFeatureTransactionToQueue(featureID,result[0],result[1],Command.ADD,boris,trans_id = transaction_id)

如果我替换最后一行

adapter.addFeatureTransactionToQueue(featureID,trans_id = transaction_id)

一切正常.我需要了解python不喜欢我在第一个场景中打印值.

解决方法

如果分配给函数,Python编译器会将名称标记为函数的本地名称.您的最后一行分配给transaction_id,因此它被视为本地名称,而不是全局名称.

您需要通过使用函数内部的global关键字明确告诉编译器transaction_id是全局的:

def parseFileContent(hostID,writeToDB=False):
    global transaction_id

如果没有分配,则名称将被视为非本地名称,您无需对其进行标记.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读