我敢肯定这很简单,但是我无法使其正常工作。
我想在模块中将布尔变量转换为True
并将其返回给我的main。
文件:测试
import module as mo
value = False
mo.x(value)
print(value)
2。文件:模块
def x(value):
value = True
return value
但是此代码不起作用。当我打印出该值时,它会给我一个False
。
有人知道如何返回值True
吗?
还是有可能在另一个模块中更改布尔值然后再返回?
答案 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”变量。因此,您只是在调用该函数,而不使用返回值。