Piszę skrypt, w którym muszę przetestować liczby pod pewnymi warunkami. Jeśli warunki są spełnione, chcę zwrócić True
i chcę to zrobić w najszybszy możliwy sposób.Czy ktoś() jest leniwie oceniany?
Moim pierwszym pomysłem było użycie any()
zamiast zagnieżdżonych if
instrukcji lub wielu or
łączących moje warunki. Ponieważ byłbym usatysfakcjonowany, gdyby którykolwiek z warunków był True
mógłbym naprawdę skorzystać z tego, że any()
jest leniwy i powraca Prawdziwy tak szybko, jak tylko mógł.
Na podstawie faktu, że poniższy wydruk następuje natychmiast, a nie po 10 (= 0 + 1 + 2 + 3 + 4) sekundach, zakładam, że tak jest. Czy to przypadek, czy też jestem w błędzie?
import time
def some(sec):
time.sleep(sec)
return True
print(any(some(x) for x in range(5)))
Tak - jest leniwy ... –
dzięki! To samo dotyczy 'all()' i wyobrażam sobie –
Tak, poprawne ... –