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ę po if
: Po wykonaniu pass
, ta kolejna instrukcja zostanie wykonana. Później continue
nie.
>>> a = [0, 1, 2]
>>> for element in a:
... if not element:
... pass
... print element
...
0
1
2
>>> for element in a:
... if not element:
... continue
... print element
...
1
2
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ątku except 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śnie pass
oznacza, że „nie ma tu kodu do wykonania” i będzie kontynuował przez resztę lub treść pętli.
Uruchom je i zobacz różnicę:
for element in some_list:
if not element:
pass
print 1 # will print after pass
for element in some_list:
if not element:
continue
print 1 # will not print after continue
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.
for element in some_list:
if not element:
pass
print element
jest bardzo różny od
for element in some_list:
if not element:
continue
print element
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.
>>> for element in some_list:
... if element == 1:
... print "Pass executed"
... pass
... print element
...
0
Pass executed
1
2
>>> for element in some_list:
... if element == 1:
... print "Continue executed"
... continue
... print element
...
0
Continue executed
2
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
W tych przykładach nie. Jeśli instrukcja nie jest ostatnią w pętli, mają one bardzo różne skutki.
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:
class MyException(Exception):
pass
try:
1/0
except:
pass
bez „pass” w powyższych przykładach wyrzuci IndentationError.
x = [1,2,3,4]
for i in x:
if i==2:
pass #Pass actually does nothing. It continues to execute statements below it.
print "This statement is from pass."
for i in x:
if i==2:
continue #Continue gets back to top of the loop.And statements below continue are executed.
print "This statement is from continue."
Dane wyjściowe to
>>> This statement is from pass.
Ponownie uruchommy ten sam kod z niewielkimi zmianami.
x = [1,2,3,4]
for i in x:
if i==2:
pass #Pass actually does nothing. It continues to execute statements below it.
print "This statement is from pass."
for i in x:
if i==2:
continue #Continue gets back to top of the loop.And statements below continue are executed.
print "This statement is from continue."
Dane wyjściowe to -
>>> This statement is from pass.
This statement is from pass.
This statement is from pass.
This statement is from pass.
This statement is from continue.
This statement is from continue.
This statement is from continue.
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.
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.
pass
czy liczba zmienna jest zmienna, użyj instrukcji if True
i wykonaj operację, jeśli jest False
. 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.
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ę.