python - python中未定义全局变量名称错误
问题描述
if admin.isUserAdmin(): # This is on zero indent it's not inside a function or any other block
if n == 0:
global nzero
nzero = df.to_string()
print(nzero)
elif n > 0:
global ntrue
ntrue = df.head(n).to_string()
print(ntrue)
while live_update:
if n == 0:
global nzero2
nzero2 = df.to_string()
print(nzero2)
elif n > 0:
global ntrue2
ntrue2 = df.head(n).to_string()
print(ntrue2)
print(nzero) #error nzero is not defined
我有更复杂的代码,但为了方便起见,我简化了一些事情。
在上面的程序中,我想让nzero、nzero2、ntrue 和 ntrue2 成为全局的,也就是说它应该在 if 块之外可用。但是当我在外面使用它时,它给了我一个错误,说 nzero 没有定义同样适用于 nzero2,ntrue,ntrue2
解决方案
由于您的代码已经在全局范围内,因此无需使用global
. 所有变量都已经是全局的。
您会收到错误,因为某些变量是在 if 语句的范围内定义的。如果该 if 子句未执行,则该变量稍后将不可用。要解决此问题,只需在 if 语句之前将变量初始化为合理的值:
nzero = False
if admin.isUserAdmin():
...
推荐阅读
- c# - 在 Nest 中将 Elastic Search 完成建议器与 IBoolQuery 相结合
- java - 流操作中排序操作的执行
- apache-spark - 用于结构化流的 QueueStream 可能吗?
- java - Talend 日期:将 EST 时间解析为 UTC
- java - 数苹果和橙子
- coldfusion - ColdFusion FarCry CMS 安装问题
- java - 在java中以金字塔模式打印XO?
- android - 某些 unicode 字符无意中被转换为 Android TextView 中的标志表情符号
- c# - C# 字符串到所有样式或文化的十进制
- php - PHP 函数 stripcslashes 未按要求转换