2012-02-28 2 views
136

파이썬의 for 루프에서`continue`와`pass` 사이에 차이점이 있습니까?

for element in some_list: 
    if not element: 
     pass 

for element in some_list: 
    if not element: 
     continue 

내가 알고 있어야처럼 두 파이썬 키워드 사이 continuepass 사이에 유의 한 차이가 있습니까?

+4

@ S.Lott : 예 :'while True :; [python docs] (http://docs.python.org/tutorial/controlflow.html#pass-statements)의 # 키보드 인터럽트 대기 중 (Ctrl + C)'을 통과하면 그 동안 혼란 스럽습니다. 이 사건에서 계속해서 동등한 행동을하거나 또는 의도 된 다른 것이 명백한 날씨임을 알 수 있습니다. 첫 번째 문장 * "통과 문은 아무 것도하지 않습니다."*는 내 질문에 대한 모든 대답을 특징 짓지 만, 어쨌든 그것은 내 눈을 잡지 못했습니다. – Aufwind

답변

213

예, 완전히 다른 작업을 수행합니다. 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 
+2

답변에 완전히 동의합니다. 하지만 난 여전히 패스 키워드에 관한 질문이 필요합니까? 필요하지만 왜? 고맙습니다. –

+12

@HardikGajjar :'pass' 키워드는 아무 것도하지 않으므로 구문 적으로 들여 쓰기 된 스위트가 필요하지만 아무 것도하고 싶지 않을 때만 유용합니다. 일반적인 예는 어떤 예외를 무시하고 싶다면'exceptExceptionException : pass'를 사용하는 것입니다. 다른 많은 유스 케이스가 있습니다. 아무 것도하지 않는 다른 명령문 (예 : '0'은 효과가없는 완전한 명령문)을 사용할 수 있기 때문에 엄격하게 키워드를 필요로하지는 않지만 키워드를 사용하면 당신은 무엇이든하고 싶지 않다는 것에 대해 더 명백하게 밝혀야합니다. –

3

이러한 예에서, 아니오. 문이 이 아니고이 아니라면 루프의 마지막 부분에 매우 다른 효과가 있습니다.

6

continue은 루프의 맨 위로 돌아갑니다. pass은 계속 처리됩니다.

패스가 패스의 끝 부분에 있으면 그 차이는 무시할 수 있습니다. 흐름이 ​​루프의 맨 위로 돌아 가기 때문에 무시해도됩니다.

7

두 예제 모두 루프의 끝 부분에 나타나므로 아무런 차이가 없습니다. pass은 아무 것도 수행하지 않는다는 점에서 단순히 자리 표시 자일뿐입니다 (은 다음 문장으로 실행을 전달합니다). 반면에 continue에는 명확한 목적이 있습니다. 루프가 으로 계속 진행하는 것처럼 마치처럼 계속 진행됩니다.

for element in some_list: 
    if not element: 
     pass 
    print element 

for element in some_list: 
    if not element: 
     continue 
    print element 
45

예는 매우 다르다, 차이가있다. 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 
4

예, 차이가 있습니다. Continue은 실제로 루프의 현재 반복 부분을 건너 뜁니다 (처음으로 돌아갑니다). Pass은 아무것도 수행하지 않는 공백 문입니다.

이 그들 사이에 차이가있는 python docs

1

를 참조
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 
0
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. 

패스는 아무것도하지 않습니다. 계산은 영향을받지 않습니다. 하지만 계속해서 다음 계산으로 처리하기 위해 루프의 맨 위로 돌아갑니다.

+3

다른 답변과의 특별한 차이점은 무엇입니까? –

관련 문제