繁体   English   中英

将参数更改为 python 中的 boolean 值

[英]Change parameter to a boolean value in python

我试图使用 python 在 pygame 中创建一个后退按钮,但我的参数(条件)没有设置为 false,我该怎么做? 这是我的代码:

def back(condition):  #condition - any boolean variable in my script
    mouse = pygame.mouse.get_pos()
    click = pygame.mouse.get_pressed()

    if 5 + 125 > mouse[0] > 5 and 5 + 125 > mouse[1] > 5:
        gameDisplay.blit(backBtn, (5, 5))
        if click[0] == 1:
            if condition:
                condition = False
    else:
        gameDisplay.blit(backBtn_hover, (5, 5))
    

如果您有任何答案,请回答。

谢谢::D

由于condition是不可变类型,因此对其的任何更改仅在 function 内部可见。

在调用 function 时,您需要将其归还并重新分配。

def back(condition):  #condition - any boolean variable in my script
    mouse = pygame.mouse.get_pos()
    click = pygame.mouse.get_pressed()

    if 5 + 125 > mouse[0] > 5 and 5 + 125 > mouse[1] > 5:
        gameDisplay.blit(backBtn, (5, 5))
        if click[0] == 1:
            if condition:
                condition = False
    else:
        gameDisplay.blit(backBtn_hover, (5, 5))
    return condition

...

condition = back(condition)

通常建议将其设为全局变量,因此我不建议这样做。

你期望这会发生吗?

condition = True
back(condition)
print(condition) # False

这不是 Python 的工作方式。 您不能更改传递给函数的变量。 这样的事情会奏效。

container = { 'condition': True }
back(container)
print(container['condition']) # False

因为在这种情况下,您不会更改变量,而是更改其内容。 但无论如何,这是糟糕的代码。 通常你会做这样的事情:

condition = True
condition = back(condition)
print(condition) # False

当然你需要在你的 function 中添加一个 return 语句。

您的答案可能是由于您的变量范围,下面提供的三个示例有望引导您找到解决方案:

情况一

condition = True

def back(condition):
    condition = False
    print(f"{condition=}")


def main():
    local_condition = back(condition)
    global_condition = condition
    print(f"{local_condition=}\n{global_condition=}")


if __name__ == '__main__':
    main()

结果:

condition=False
local_condition=None
global_condition=True

情况 2 在返回函数中添加了返回

condition = True

def back(condition):
    condition = False
    print(f"{condition=}")
    return condition

def main():
    local_condition = back(condition)
    global_condition = condition
    print(f"{local_condition=}\n{global_condition=}")


if __name__ == '__main__':
    main()

结果 2:

condition=False
local_condition=False
global_condition=True

情景三重新定义全球

condition = True

def back(condition):
    condition = False
    print(f"{condition=}")
    return condition

def main():
    global condition
    condition = back(condition)
    global_condition = condition
    print(f"{condition=}\n{global_condition=}")


if __name__ == '__main__':
    main()

结果 3:

condition=False
condition=False
global_condition=False

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM