Відповіді:
Так, вони роблять абсолютно різні речі. 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:
То навіщо переходити в пітон?
Якщо ви хочете створити порожній клас, метод або блок.
Приклади:
class MyException(Exception):
pass
try:
1/0
except:
pass
без 'проходу' у наведених вище прикладах викине IndentaError.
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.
Пропуск нічого не робить. На обчислення це не впливає. Але продовження повертається до вершини циклу до наступного обчислення.
Розглянемо це так:
Пас: Python працює виключно на відступ! Немає порожніх фігурних дужок на відміну від інших мов.
Тож, якщо ви не хочете нічого робити, якщо умова справжня, немає іншого варіанту, крім пропуску.
Продовжити: Це корисно лише у випадку циклів. У випадку, якщо для діапазону значень ви не хочете виконувати решта операторів циклу після того, як ця умова відповідає справжньому пропуску, тоді вам доведеться використовувати продовжити.
pass
якщо оператор is True
і виконайте операцію, якщо вона є False
. Це дозволяє ефективно сканувати багатоцільові списки.
pass
може використовуватися в сценаріях, коли вам потрібні деякі порожні функції, класи або цикли для майбутніх реалізацій, і немає необхідності виконувати будь-який код.
continue
використовується в сценаріях, коли немає, коли в циклі виконується якась умова, і вам потрібно пропустити поточну ітерацію та перейти до наступної.
while True:; pass # Busy-wait for keyboard interrupt (Ctrl+C)
у програмі python мене збентежили в тому, що я не знайшов ясної погоди, він поводиться рівнозначно, щоб продовжуватись у цьому випадку, або щось інше було призначено. Перше речення "Ухвальний вислів нічого не робить". характеризує всі відповіді на моє запитання, але якимось чином не потрапив на очі.