Что изначально возвращает While?

while difference == False:
    difference()

Цикл while должен сработать хотя бы один раз, в самом цикле возвращается либо True (чтобы продолжить выполнение кода) либо False (чтобы повторить цикл). Так вот, сработает ли этот цикл хотя бы один раз?


Ответы (4 шт):

Автор решения: ganz

Нет, так как при входе в цикл difference это имя функции, то есть объект, а объект по умолчанию всегда исина.

def a:
   return False

bool(a)
#True
bool(a())
#False

не путайте вызов функции и её имя

→ Ссылка
Автор решения: Тв0р0бушек

Это не сработает, т.к. difference будет равен по умолчанию True,объекты в пайтоне равны истине. Это ответ на основе того, что вы не показали функцию difference, поэтому поведение будет зависеть от функции.

→ Ссылка
Автор решения: Namerek

Выполнение функции до True

import time

while not difference():
    time.sleep(.01)
→ Ссылка
Автор решения: Stanislav Volodarskiy

Тело цикла не выполнится ни разу:

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()
→ Ссылка