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