【发布时间】: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