Czy istnieje jakaś znacząca różnica między dwoma słowami kluczowymi w Pythonie continue
i pass
jak w przykładach
for element in some_list:
if not element:
pass
i
for element in some_list:
if not element:
continue
Powinienem być tego świadomy?
while True:; pass # Busy-wait for keyboard interrupt (Ctrl+C)
w python docs pomyliłem mnie w ten sposób, że nie uważałem, że jest czysta pogoda, że zachowuje się tak samo, aby kontynuować w tym przypadku lub coś innego było zamierzone. Pierwsze zdanie „Instrukcja pass nic nie robi”. charakteryzuje wszystkie odpowiedzi na moje pytanie, ale jakoś nie przykuło mnie to uwagę.Odpowiedzi:
Tak, robią zupełnie inne rzeczy.
pass
po prostu nic nie robi,continue
kontynuując iterację następnej pętli. W twoim przykładzie różnica stanie się widoczna, jeśli dodasz inną instrukcję poif
: Po wykonaniupass
, ta kolejna instrukcja zostanie wykonana. Późniejcontinue
nie.źródło
pass
słowo kluczowe nic nie robi, jest użyteczne tylko wtedy, gdy składniowo potrzebujesz wciętego pakietu, ale nie chcesz nic robić. Typowym przykładem jest użycie ignorowanego wyjątkuexcept SomeException: pass
. Istnieje również wiele innych przypadków użycia. Nie potrzebujesz do tego ściśle słowa kluczowego, ponieważ możesz użyć dowolnego innego wyrażenia, które nic nie robi (np.0
Jest całkowicie poprawnym stwierdzeniem, które nie ma efektu), ale posiadanie słowa kluczowego do tego pozwala ci być wyraźniej mówiąc o tym, że nie chcę nic robić.pass
?Tak, jest różnica.
continue
wymusza uruchomienie pętli przy następnej iteracji, a jednocześniepass
oznacza, że „nie ma tu kodu do wykonania” i będzie kontynuował przez resztę lub treść pętli.Uruchom je i zobacz różnicę:
źródło
continue
przeskoczy z powrotem na szczyt pętli.pass
będzie kontynuować przetwarzanie.jeśli pass jest na końcu dla pętli, różnica jest znikoma, ponieważ przepływ i tak powróciłby na samą górę pętli.
źródło
W twoim przykładzie nie będzie różnicy, ponieważ obie instrukcje pojawiają się na końcu pętli.
pass
jest po prostu symbolem zastępczym, ponieważ nic nie robi ( przekazuje wykonanie do następnej instrukcji).continue
z drugiej strony ma określony cel: nakazuje pętli kontynuowanie tak, jakby dopiero się zrestartowała.jest bardzo różny od
źródło
Istnieje między nimi różnica,
continue
pomija bieżącą iterację pętli i wykonuje następną iterację.pass
nic nie robi. Jest to symbol zastępczy pustego wyciągu.Wolę raczej podać przykład, który lepiej to wyjaśni.
źródło
Tak, jest różnica.
Continue
faktycznie pomija resztę bieżącej iteracji pętli (wracając do początku).Pass
jest pustym stwierdzeniem, które nic nie robi.Zobacz dokumentację Pythona
źródło
W tych przykładach nie. Jeśli instrukcja nie jest ostatnią w pętli, mają one bardzo różne skutki.
źródło
Różnica między przejściem a kontynuacją w pętli for:
Po co więc przekazywać pytona?
Jeśli chcesz utworzyć pustą klasę, metodę lub blok.
Przykłady:
bez „pass” w powyższych przykładach wyrzuci IndentationError.
źródło
Dane wyjściowe to
Ponownie uruchommy ten sam kod z niewielkimi zmianami.
Dane wyjściowe to -
Pass nic nie robi. Nie ma to wpływu na obliczenia. Ale kontynuuj wraca na początek pętli, aby przejść do następnego obliczenia.
źródło
Rozważ to w ten sposób:
Podanie: Python działa wyłącznie na wcięcia! W przeciwieństwie do innych języków nie ma pustych nawiasów klamrowych.
Tak więc, jeśli nie chcesz nic robić w przypadku, gdy warunek jest spełniony, nie ma innej opcji niż przejście.
Kontynuuj: Jest to przydatne tylko w przypadku pętli. W przypadku, gdy dla zakresu wartości nie chcesz wykonać pozostałych instrukcji pętli po spełnieniu tego warunku dla tego konkretnego przejścia, musisz użyć polecenia Kontynuuj.
źródło
pass
czy liczba zmienna jest zmienna, użyj instrukcji ifTrue
i wykonaj operację, jeśli jestFalse
. Pozwala to na wydajne skanowanie list wielofunkcyjnych.pass
może być stosowany w scenariuszach, w których potrzebne są puste funkcje, klasy lub pętle do przyszłych implementacji i nie ma potrzeby wykonywania żadnego kodu.continue
jest używany w scenariuszach, gdy nie, gdy jakiś warunek został spełniony w pętli i musisz pominąć bieżącą iterację i przejść do następnej.źródło