Я не могу заставить кнопку перезапуска работать на моем секундомере. Использование Pythonista на iPhone
import ui
from time import *
start = int(time())
def stop_time(sender):
finish = int(time())
total_time = int(finish - start)
button1 = str("Your time is %i seconds." % (total_time))
sender.title = None
sender.title = str(button1)
Как разрешить кнопке перезагрузки изменить переменную запуска?
def restart_time(sender):
start = int(time())
button2 = str("Stopwatch restarted.")
sender.title = None
sender.title = str(button2)
ui.load_view('stop_time').present('sheet')
1 ответ
Решение
По умолчанию, когда вы впервые назначаете идентификатор функции, она создает локальную переменную, даже если есть глобальная переменная с таким же именем. Попробуй это:
def restart_time(sender):
global start
start = int(time())
button2 = str("Stopwatch restarted.")
sender.title = None
sender.title = str(button2)
Из соответствующей записи в Python FAQ:
В Python переменные, на которые ссылаются только внутри функции, неявно глобальны. Если переменной в любом месте внутри тела функции назначается новое значение, оно считается локальным. Если переменной когда-либо присваивается новое значение внутри функции, переменная неявно является локальной, и вам необходимо явно объявить ее как "глобальную".