当前位置: 首页 > 知识库问答 >
问题:

从另一个函数检查布尔值

双志强
2023-03-14

当另一个函数的布尔值设置为“True”时,我试图做一些事情。我尝试使用return(variable),但当涉及到请求布尔值的函数时,它总是说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个答案

方博学
2023-03-14
匿名用户

首先,不要使用名为< code>bool的变量。它是Python保留的,如< code>str,list,int等。

其次,bool处于全局范围内,因此,如果要在函数中对其进行编辑,则必须将其定义为全局

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
>>>

夏侯臻
2023-03-14

https://docs.python.org/3.4/tutorial/controlflow.html#defining-functions:

更准确地说,函数中的所有变量赋值都将值存储在局部符号表中;而变量引用首先在局部符号表中查找,然后在封闭函数的局部符号表中查找,然后在全局符号表中查找,最后在内置名称表中查找。因此,全局变量不能在函数中直接赋值(除非在全局语句中命名),尽管它们可以被引用。

您对functionA中的bool的赋值会在 >中创建一个局部变量;它不赋值给全局变量 bool

楚畅
2023-03-14

坚持你编写代码的方式,你有两个选择。选项 1 是使用全局变量,确保在要修改全局声明的函数中包含全局声明:

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

除此之外,不要使用名称< code>bool,使用< code>x == 0而不是< code>x是0,< code>functionA可以写成< code>return x == 0,使用< code>if bool:而不是< code > if bool True:,使用< code > snake _ case (< code > function _ a )而不是< code >

 类似资料:
  • 除了相等检查,Jasmine还提供了一些方法来检查布尔条件。 以下是帮助我们检查布尔条件的方法。 toBeTruthy() 此布尔匹配器在Jasmine中用于检查结果是等于true还是false。 以下示例将帮助我们理解toBeTruthy()函数的工作原理。 ExpectSpec.js describe("Different Methods of Expect Block",function (

  • 当我想检查可选布尔值是否为真时,这样做行不通: 它会导致以下错误: 可选类型“@IvalueBool?”不能用作布尔值;测试'!=而不是零 我不想检查nil;我想检查返回的值是否为真。 如果布尔值==true,我是否总是必须执行

  • 我正在制作一个函数来返回布尔值,以了解元素是否存在,但我得到 我怎么才能得到唯一的真实或虚假响应,请帮助,我使用了if条件,但它显示了该响应…… 这是我调用的函数

  • 问题内容: 我有一个mongo文档,其中包含一个日期字段,该日期字段也可以为false(或未定义),并且似乎无法找到如何检查该字段是否可用或为false或是否为日期(time.Time)的日期golang / mgo:S 问题答案: 如果您有一个字段,并且想知道它是否正确地设置了有效日期,则可以查询其方法。否则,如果您要在数据库中查询此类文档,则可以执行以下操作之一。 查询该字段是否为假: 使用$

  • 我在Java 8上工作,有一个简单的问题我还没有解决。 我有3个方法来验证来自数据库的数据,并根据它们是否得到一行来返回真或假。棘手的是,即使我知道第一部分返回false,我仍然希望它检查其他两个方法。我已经编写了这样的代码: 问题是,当validateMETOD1()返回false时,它没有调用validateMETOD2()。有人能解释一下为什么吗?我试过了: 仍然面临同样的问题。

  • 我正在从事一项与react基于本机应用程序的用户管理相关的任务。在他们成功注册为用户后,我添加了一个存储布尔值的数据,并将其命名为emailVerifiedAccount(如果他们成功注册,这是存储的数据,如果他们单击发送给他们的电子邮件验证链接,则表明他们是否为验证用户)。在登录屏幕中,我想检查我在onAuthStateChanged中从firestore获得的布尔值,并且仅当我获得的email