Интересно, как выразить любой код формы
Код: Выделить всё
while True:
state_before = some_function(my_object)
# algorithmic code goes here
state_after = some_function(my_object)
if some_condition(state_before, state_after, my_object):
break
Код: Выделить всё
while iteration_operates_in_some_way(my_object):
# algorithmic code goes here
Код: Выделить всё
while iteration_operates_in_some_way(my_object):
# algorithmic code goes here
while iteration_operates_in_some_way(my_object):
# more algorithmic code
# even more algorithmic code
Скажем, вы хотите написать этот фрагмент
Код: Выделить всё
prev_length = -1
while len(my_list) != prev_length:
prev_length = len(my_list)
# algorithmic code goes here
Код: Выделить всё
while length_changed(my_list):
# algorithmic code goes here
Код: Выделить всё
tracker = LengthTracker(my_list)
while tracker.changed():
# algorithmic code goes here
Думаю, поскольку мне нужна автоматическая инициализация, я мог бы искать концепцию, которая структурно связана с ключевым словом while точно так же, как концепция итератор связана с ключевым словом for. Например, когда вы делаете for x в range(10), тогда range обрабатывает как инициализацию перед циклом, так и шаг итерации, поэтому вы можете создать его на лету внутри оператора for.
Но предыдущий абзац является всего лишь умозрительным, подход с объектом трекера - это всего лишь пример неудачной попытки, а проблема с длиной - просто для иллюстрации.
Моя цель – найти решение общей проблемы с шаблонами, приведенной в начале сообщения.
Подробнее здесь: https://stackoverflow.com/questions/798 ... eadability
Мобильная версия