从python模块正确返回布尔变量

时间:2020-02-18 10:56:50

标签: python module

我敢肯定这很简单,但是我无法使其正常工作。

我想在模块中将布尔变量转换为True并将其返回给我的main。

文件:测试

import module as mo

value = False
mo.x(value)
print(value)

2。文件:模块

def x(value):
    value = True
    return value

但是此代码不起作用。当我打印出该值时,它会给我一个False。 有人知道如何返回值True吗? 还是有可能在另一个模块中更改布尔值然后再返回?

4 个答案:

答案 0 :(得分:2)

您不打印功能的返回值。为此,您应该

v = mo.x(value)
print(v)

否则,您正在打印局部变量value

答案 1 :(得分:2)

您正在打印value,而不是mo.x(value)的结果。

在您的test.py中,尝试以下操作:

import module as mo

value = False
value = mo.x(value)
print(value)

,输出将是:

>>> True

请注意,在函数内部定义的变量具有局部作用域。这意味着函数value中的x变量只能在函数内访问,并且与value模块中的test.py变量不同。

答案 2 :(得分:1)

问题在于,原始类型(例如整数)是通过值而不是通过引用传递的。因此,发生的事情是,您没有将变量“ value”传递给函数x(),而是复制了“ value”中的值。

一种解决方法是使用任何对象,因为它们始终通过引用传递。例如:列表:

value[0] = False
mo.x(value)

def x(value: list):
    value[0] = True
    return value

答案 3 :(得分:0)

发生这种情况是因为您返回的是“ True”值,但没有将其分配给“ value”变量。因此,您只是在调用该函数,而不使用返回值。