检查另一个函数的布尔值

时间:2016-06-05 14:58:38

标签: python boolean

当其他函数的布尔值设置为" 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

3 个答案:

答案 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 0functionA可以写为return x == 0,请使用if bool:而不是if bool is True:,并使用snake_casefunction_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
>>>