【问题标题】:How come I have a to call "global" to set a global variable in a Python function为什么我必须调用“全局”来在 Python 函数中设置全局变量
【发布时间】:2021-12-01 06:46:33
【问题描述】:
def try_again():
    play_again = input("would you like to play again? ").lower()
    if play_again == "y":
        global comp_count
        comp_count = 0
        global user_count
        user_count = 0
        game()
    else:
        print(" Thanks for playing! Bye now! :) ")
        exit()

这是在 Python 3 中。我想在函数中重置一个全局变量。我怎么会这样称呼它?有没有更好的 DRY 方式?

【问题讨论】:

  • 因为这就是它应该/定义的工作方式。更好、更简洁的方法是不使用全局变量。
  • @luk2302 我猜你不同意 try_again 的定义。这是一个全局变量。
  • 因为你不应该使用全局变量。当然,global 的需要也有技术原因,但我不知道也不关心,我不使用全局变量,你也不应该使用。全局状态只会在某个时候咬你。
  • 如果 user_count=0 默认分配全局变量,那么要将变量分配给函数的局部变量,您需要一个逆 thisfunction inner_count。没有人想要这样,因为局部变量比全局变量更常见。至于global user_count=0,这似乎是合理的,但这更麻烦,因为它似乎允许本地user_count=2 共存。那么,如果您看到类似print(user_count) 的内容,您会使用哪一个?为清楚起见,global user_count 声明该名称绝对是全局的。
  • 其他评论者是对的。您希望函数不依赖于全局变量,以便在给定输入参数的情况下具有可靠的行为。如果您想更新全局 user_count,而不是 try_again(),请执行类似 comp_count, user_count = try_again(comp_count, user_count) 的操作

标签: python python-3.x variables


【解决方案1】:

在函数外部创建变量时,默认设置为全局,但如果在函数内部创建变量,并且希望其他函数访问和更改该变量,则将其设置为全局。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    相关资源
    最近更新 更多