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相同
答案 0 :(得分:1)
由于您的代码已经在全局范围内,因此无需使用import React from 'react'
// Function Searchbar
//Looks for products
function Search(props){
return(
<input
type="search"
className="search"
placeholder={props.placeholder}
onChange={props.handleInput}/>
)
}
export default Search
。所有变量已经是全局变量。
出现错误是因为在if语句的范围内定义了一些变量。如果该if子句不执行,则该变量以后将不可用。要解决此问题,只需在if语句之前将变量初始化为一个合理的值:
global
答案 1 :(得分:1)
如果所有这些代码实际上都在模块范围内,那么global
关键字将无济于事。您只需要初始化所有名称,因为并非所有分支都必须分配给它们。
nzero = None
ntrue = None
nzero2 = None
ntrue2 = None
n = None # Or something? Who knows?
if admin.isUserAdmin():
if n == 0:
nzero = df.to_string()
print(nzero)
elif n > 0:
ntrue = df.head(n).to_string()
print(ntrue)
while live_update:
if n == 0:
nzero2 = df.to_string()
print(nzero2)
elif n > 0:
ntrue2 = df.head(n).to_string()
print(ntrue2)
答案 2 :(得分:0)
问题出在这里:
if n == 0:
global nzero
nzero = df.to_string()
print(nzero)
elif n > 0:
global ntrue
ntrue = df.head(n).to_string()
print(ntrue)
如果n
不是0
,则永远不会定义nzero
。