Is there a difference between `continue` and `pass` in a for loop in python?
PythonSyntaxContinuePython Problem Overview
Is there any significant difference between the two python keywords continue
and pass
like in the examples
for element in some_list:
if not element:
pass
and
for element in some_list:
if not element:
continue
I should be aware of?
Python Solutions
Solution 1 - Python
Yes, they do completely different things. pass
simply does nothing, while continue
goes on with the next loop iteration. In your example, the difference would become apparent if you added another statement after the if
: After executing pass
, this further statement would be executed. After continue
, it wouldn't.
>>> 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
Solution 2 - Python
Yes, there is a difference. continue
forces the loop to start at the next iteration while pass
means "there is no code to execute here" and will continue through the remainder of the loop body.
Run these and see the difference:
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
Solution 3 - Python
continue
will jump back to the top of the loop. pass
will continue processing.
if pass is at the end for the loop, the difference is negligible as the flow would just back to the top of the loop anyway.
Solution 4 - Python
Difference between pass and continue in a for loop:
So why pass in python?
If you want to create a empty class, method or block.
Examples:
class MyException(Exception):
pass
try:
1/0
except:
pass
without 'pass' in the above examples will throw IndentationError.
Solution 5 - Python
In your example, there will be no difference, since both statements appear at the end of the loop. pass
is simply a placeholder, in that it does nothing (it passes execution to the next statement). continue
, on the other hand, has a definite purpose: it tells the loop to continue as if it had just restarted.
for element in some_list:
if not element:
pass
print element
is very different from
for element in some_list:
if not element:
continue
print element
Solution 6 - Python
There is a difference between them, continue
skips the loop's current iteration and executes the next iteration.pass
does nothing. It’s an empty statement placeholder.
I would rather give you an example, which will clarify this more better.
>>> some_list = [0, 1, 2]
... 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
Solution 7 - Python
Yes, there is a difference. Continue
actually skips the rest of the current iteration of the loop (returning to the beginning). Pass
is a blank statement that does nothing.
See the python docs
Solution 8 - Python
In those examples, no. If the statement is not the very last in the loop then they have very different effects.
Solution 9 - Python
Consider it this way:
Pass: Python works purely on indentation! There are no empty curly braces, unlike other languages.
So, if you want to do nothing in case a condition is true there is no option other than pass.
Continue: This is useful only in case of loops. In case, for a range of values, you don't want to execute the remaining statements of the loop after that condition is true for that particular pass, then you will have to use continue.
Solution 10 - Python
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."
The output is
>>> This statement is from pass.
Again, let run same code with minor changes.
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."
The output is -
>>> 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 doesn't do anything. Computation is unaffected. But continue gets back to top of the loop to procced with next computation.
Solution 11 - Python
pass
just continues the loop or the condition. It doesn't do anything. continue
, though is used to skip the current iteration, and get to the next iteration.
You may ask, why is pass
used at all if not needed? Consider the following case:
text = "I am a coder."
if text == "I am not a coder.":
print("Programming is interesting! You should try it out!")
elif text == "I am a coder.":
pass
pass
is just a syntactical placeholder used to fill up some space. If you don't want to do anything if a particular condition checks out, you can use pass
as a placeholder. You cannot just write an empty condition, loop or function in Python.
Solution 12 - Python
pass
could be used in scenarios when you need some empty functions, classes or loops for future implementations, and there's no requirement of executing any code.
continue
is used in scenarios when no when some condition has met within a loop and you need to skip the current iteration and move to the next one.