#python #python-3.x #variables
#питон #python-3.x #переменные
Вопрос:
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. Я хотел бы сбросить глобальную переменную в функции. Почему я должен так это называть? Есть ли лучший СУХОЙ способ?
Комментарии:
1. Потому что именно так это должно / определено для работы. Лучший и более чистый способ-это не иметь глобальных переменных.
2. @luk2302 Я думаю, вы не согласны с
try_again
тем, что вас определяют. Это глобальная переменная.3. Потому что вы не должны использовать глобальные переменные. Конечно, для
global
этого также есть технические причины, но я их не знаю или мне все равно, я не использую глобальные переменные, и вам тоже не следует. Глобальное государство укусит вас только в какой-то момент.4. Если
user_count=0
по умолчанию назначены глобальные переменные, то для назначения переменных, локальных для функции, вам потребуется обратноеthisfunction inner_count
. Никто этого не хочет, потому что локальные переменные встречаются гораздо чаще, чем глобальные. Что касаетсяglobal user_count=0
, это кажется правдоподобным, но это еще более запутанно, потому что, похоже, это позволяетuser_count=2
сосуществовать местным жителям. Итак, какой из них вы используете, если видите что-то подобноеprint(user_count)
?global user_count
заявляет, что название определенно глобальное для ясности.5. И другие комментаторы правы. Вы хотите, чтобы функции не зависели от глобальных переменных, чтобы они могли вести себя надежно с учетом входных аргументов. Если вы хотите обновить глобальный
user_count
, вместоtry_again()
того, чтобы делать что-то вродеcomp_count, user_count = try_again(comp_count, user_count)
Ответ №1:
Когда переменная создается вне функции, по умолчанию для нее устанавливается значение global, но если вы создаете переменную внутри функции и хотите, чтобы к ней обращались и изменяли другие функции, вы устанавливаете для нее значение global.