在尝试将其放入函数之前,我的代码可以正常工作。定义函数,缩进代码并调用函数后,我收到错误消息:
“分配前已引用局部变量'print'。
为什么我要更改的所有内容将其放入函数中时会弹出?我从不分配变量“打印”。请帮忙!
我屏蔽了令牌以访问要保护安全性的服务器。
<div class="combo-display">
<div class="combo-item">
israeli couscous salad
</div>
<div class="combo-item">
vegetable egg fried rice
</div>
<div class="combo-item">
vegetable egg fried rice1
</div>
<div class="combo-item">
roasted salmon
</div>
</div>
答案 0 :(得分:0)
我从不分配变量'print'。
是的:
print:("No email found")
这是一个annotated assignment statement,它用类型print
注释"No email found"
,但没有赋值。
带注释的赋值始终创建一个局部变量,即使您没有赋值也是如此。从文档中:
如果在函数作用域中标注了名称,则该名称在该作用域中是本地的。
如果您想知道,对于这种情况,空的带注释的分配很有用:
n: int
if spam:
n = spam**2
else:
n = -1
这是告诉Mypy之类的静态类型检查器以验证n
最终持有int
的唯一方法,无论您采取哪个if
分支。
答案 1 :(得分:-1)
“我在代码的其他位置分配了parsed_json”
这就是问题所在。您必须将变量传递给代码,或者将其全局声明,但最好避免这种情况。您可以像这样进行简单的更改。
def printSet(parsed_json):
for user in range (0,len(parsed_json['members'])-1):
userDict=parsed_json['members'][user]
#####do a bunch of stuff or whatever
printSet(parsed_json)
请注意,您需要对函数中使用的每个变量执行此操作
还有一些可以简化您的代码并帮助调试的东西将摆脱所有的try-excepts
keylist=["id", "real_name", ..... "last_name"] #not required, but helpful if you want to print "not found" type messages
for k in keylist:
if k in userDict.keys():
print('{}: {}'.format(k, userDict[k]))
else:
print('No {} found'.format(k))