Відповіді:
Так, вони роблять абсолютно різні речі. 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 мене збентежили в тому, що я не знайшов ясної погоди, він поводиться рівнозначно, щоб продовжуватись у цьому випадку, або щось інше було призначено. Перше речення "Ухвальний вислів нічого не робить". характеризує всі відповіді на моє запитання, але якимось чином не потрапив на очі.