Ответы:
Да, они делают совершенно разные вещи. pass
просто ничего не делает, пока continue
идет следующая итерация цикла. В вашем примере разница станет очевидной, если вы добавите еще один оператор после if
: После выполнения pass
этот дополнительный оператор будет выполнен. После continue
этого не будет.
>>> 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
ключевое слово ничего не делает, оно полезно только тогда, когда вам нужен синтаксис с отступом, но вы не хотите ничего делать. Типичный пример: если вы хотите игнорировать какое-то исключение, вы используете except SomeException: pass
. Есть также много других вариантов использования. Вам не нужно строго ключевое слово для этого, так как вы можете использовать любой другой оператор, который ничего не делает (например 0
, это совершенно правильный оператор, который не имеет эффекта), но наличие ключевого слова для этого позволяет вам быть более явно о нежелании что-либо делать.
pass
?
Да, есть разница. continue
заставляет цикл запускаться на следующей итерации, в то время как pass
означает «здесь нет кода для выполнения» и будет продолжаться до конца или тела цикла.
Запустите эти и увидите разницу:
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
В вашем примере разницы не будет, так как оба оператора появляются в конце цикла. pass
это просто заполнитель в том смысле, что он ничего не делает (он передает выполнение следующему оператору). continue
с другой стороны, имеет определенную цель: он сообщает циклу продолжить, как будто он только что перезапустился.
for element in some_list:
if not element:
pass
print element
сильно отличается от
for element in some_list:
if not element:
continue
print element
Между ними есть разница, continue
пропускает текущую итерацию цикла и выполняет следующую итерацию. pass
ничего не делает. Это пустой заполнитель заявления.
Я бы лучше дал вам пример, который разъяснит это лучше.
>>> 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
Да, есть разница. Continue
фактически пропускает оставшуюся часть текущей итерации цикла (возвращаясь к началу). Pass
это пустое утверждение, которое ничего не делает.
Смотрите документы по питону
В тех примерах нет. Если утверждение не является последним в цикле, то они имеют очень разные эффекты.
Разница между проходом и продолжением цикла for:
Так зачем переходить на python?
Если вы хотите создать пустой класс, метод или блок.
Примеры:
class MyException(Exception):
pass
try:
1/0
except:
pass
без 'pass' в приведенных выше примерах выдает 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."
Выход
>>> This statement is from pass.
Опять же, давайте запустим тот же код с небольшими изменениями.
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."
Выход -
>>> 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: Python работает исключительно на отступах! Там нет пустых фигурных скобок, в отличие от других языков.
Итак, если вы хотите ничего не делать в случае, если условие истинно, нет другого выбора, кроме pass.
Продолжить: это полезно только в случае циклов. В случае, если для диапазона значений вы не хотите выполнять оставшиеся операторы цикла после того, как это условие истинно для данного конкретного прохода, вам придется использовать продолжить.
pass
if, если True
и выполнить операцию, если она есть False
. Это позволяет эффективно сканировать многоцелевые списки.
pass
может использоваться в сценариях, когда вам понадобятся некоторые пустые функции, классы или циклы для будущих реализаций, и нет необходимости выполнять какой-либо код.
continue
используется в сценариях, когда нет, когда какое-либо условие выполнено в цикле, и вам нужно пропустить текущую итерацию и перейти к следующей.
while True:; pass # Busy-wait for keyboard interrupt (Ctrl+C)
в документации по питону меня смутило то, что я не нашел ясной погоды, он ведет себя как продолжение в этом случае, или что-то еще было задумано. Первое предложение «Pass Pass ничего не делает». характеризует все ответы на мой вопрос, но почему-то это не бросилось в глаза.