#python
#python
Вопрос:
Предположим, у меня есть глобальная переменная time
, которая увеличивается на 1 единицу при каждом обновлении окна в соответствии с некоторым FPS (например, в Pygame). Тогда предположим, что у меня есть другая переменная, определенная в терминах time
, например:
def function():
global time
t = time // 3
final = t 100
if t < final:
pass
else:
pass
Поведение, которое я хочу, заключается в том, что переменная final
сохраняет значение t
только при первом вызове функции, а затем final
становится константой, t
продолжая работать вместе с. time
Таким образом, final
не всегда будет на 100 впереди t
, что и происходит, но будет на 100 впереди t
только тогда, когда функция сначала захватывает t
, а затем сохраняет это число неизменным. Как это можно сделать?
Ответ №1:
Вы можете сделать final
глобальным и проверить, было ли оно установлено.
final = None
def function():
global time, final
t = time // 3
if not final: final = t 100 # update once
if t < final:
pass
else:
pass
Вы также можете создать атрибут для самой функции.
def func():
global time
t = time // 3
if not 'final' in dir(func): func.final = t 100 # update once
print(func.final)
if t < func.final:
pass
else:
pass
time=10
func()
time=20
func()
time=30
func()
Вывод
103
103
103
Комментарии:
1. Хорошо, это работает, но я думаю, что эта новая глобальная переменная ограничит меня, когда я буду обобщать некоторые вещи.
2. Без глобальной переменной вам нужно будет перейти
final
в функцию и вернуть обновленное значение3. Вы также можете прикрепить атрибут к функции. Ответ обновлен.