답변:
예, 그들은 완전히 다른 일을합니다. 다음 루프 반복으로 진행 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
이 예에서는 아닙니다. 명령문이 루프에서 마지막 이 아닌 경우 에는 매우 다른 효과가 있습니다.
패스와 차이점은 for 루프에서 계속됩니다.
그렇다면 왜 파이썬을 전달합니까?
빈 클래스, 메소드 또는 블록을 작성하려는 경우.
예 :
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.
패스는 아무것도하지 않습니다. 계산에는 영향을 미치지 않습니다. 그러나 계속해서 루프의 맨 위로 돌아가 다음 계산을 진행합니다.
이런 식으로 생각하십시오 :
통과하다: 파이썬은 들여 쓰기에 순전히 작동합니다! 다른 언어와 달리 빈 중괄호는 없습니다.
따라서 조건이 참일 때 아무것도하지 않으려면 통과 이외의 옵션이 없습니다.
계속 : 이것은 루프의 경우에만 유용합니다. 특정 범위의 값에 대해 특정 패스에 대해 해당 조건이 충족 된 후에 루프의 나머지 명령문을 실행하지 않으려면 continue를 사용해야합니다.
pass
하고 명령문이 True
이면 작업을 수행하십시오 False
. 이를 통해 다목적 목록을 효율적으로 스캔 할 수 있습니다.
while True:; pass # Busy-wait for keyboard interrupt (Ctrl+C)
에 파이썬 문서 내가 다른 의도이 경우 또는 무언가에 계속 해당 동작 분명히 날씨 찾지 못했음을, 길에서 나를 혼동. 첫 번째 문장은 "통과 진술은 아무것도하지 않는다"는 것입니다. 내 질문에 대한 모든 대답의 특징을 나타내지 만 어떻게 든 내 눈을 사로 잡지 못했습니다.