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 如果没有分配,则名称将被视为非本地名称,您无需对其进行标记. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容