Что изначально возвращает While?
while difference == False:
difference()
Цикл while должен сработать хотя бы один раз, в самом цикле возвращается либо True (чтобы продолжить выполнение кода) либо False (чтобы повторить цикл). Так вот, сработает ли этот цикл хотя бы один раз?
Ответы (4 шт):
Нет, так как при входе в цикл difference это имя функции, то есть объект, а объект по умолчанию всегда исина.
def a:
return False
bool(a)
#True
bool(a())
#False
не путайте вызов функции и её имя
Это не сработает, т.к. difference будет равен по умолчанию True,объекты в пайтоне равны истине. Это ответ на основе того, что вы не показали функцию difference, поэтому поведение будет зависеть от функции.
Выполнение функции до True
import time
while not difference():
time.sleep(.01)
Тело цикла не выполнится ни разу:
difference = True
while difference == False:
difference()
Тело цикла выполнится бесконечное число раз:
class D:
def __eq__(self, other):
return True
def __call__(self):
pass
difference = D()
while difference == False:
difference()
Тело цикла выполнится заданное число раз. В этом примере десять:
class D:
def __init__(self):
self._n = 10
def __eq__(self, other):
return self._n != 0
def __call__(self):
self._n -= 1
difference = D()
while difference == False:
difference()