当其他函数的布尔值设置为" True"时,我正在尝试做某事。我尝试使用return(变量),但是当涉及bool的函数时,它总是说False。我在问这个之前先看了一下,因为我觉得这似乎是非常基本的东西。但我找不到任何有用的东西。我希望有人可以帮助我。 这是我的代码。
x = 0
bool = False
def functionA(x,bool):
if x is 0:
bool = True
def functionB(bool):
print bool
if bool is True:
print "Halleluhja"
functionA(x,bool)
functionB(bool)
print x, bool
答案 0 :(得分:1)
坚持编写代码的方式,您有两种选择。选项1是使用全局变量,确保在要修改它的函数中包含global
声明:
x = 0
bool = False
def functionA(x):
global bool
if x is 0:
bool = True
def functionB():
print bool
if bool is True:
print "Halleluhja"
functionA(x)
functionB()
print x, bool
选项2(首选)是实际返回的东西,以便它们可以传递到其他地方:
x = 0
def functionA(x):
if x is 0:
return True
else:
return False
def functionB(bool):
print bool
if bool is True:
print "Halleluhja"
bool = functionA(x)
functionB(bool)
print x, bool
除此之外,请勿使用名称bool
,使用x == 0
而不是x is 0
,functionA
可以写为return x == 0
,请使用if bool:
而不是if bool is True:
,并使用snake_case
(function_a
)而不是camelCase
。
答案 1 :(得分:0)
https://docs.python.org/3.4/tutorial/controlflow.html#defining-functions:
更确切地说,函数中的所有变量赋值都将值存储在本地符号表中;而变量引用首先在本地符号表中查找,然后在封闭函数的本地符号表中查找,然后在全局符号表中查找,最后在内置名称表中查找。因此,全局变量不能直接在函数内赋值(除非在global语句中命名),尽管它们可能被引用。
bool
中对functionA
的作业在functionA
中创建了一个局部变量;它不会分配给全局变量bool
。
答案 2 :(得分:-1)
首先,不要使用名为bool
的变量。它由Python保留,例如像str,list,int
等。
其次,bool
属于全局范围,因此如果要在函数中编辑它,则必须将其定义为global
。
x = 0
bool1 = False
def functionA(x,bool):
global bool1 #now we have access to bool1 variable which is in global scope
if x is 0:
bool1 = True
def functionB(bool):
print (bool1)
if bool is True:
print ("Halleluhja")
functionA(x,bool1)
functionB(bool1)
print (x, bool1)
输出
>>>
True
Halleluhja
0 True
>>>