답변:
다음은 간단한 예입니다.
for letter in 'Django':
if letter == 'D':
continue
print("Current Letter: " + letter)
출력은 다음과 같습니다.
Current Letter: j
Current Letter: a
Current Letter: n
Current Letter: g
Current Letter: o
루프의 다음 반복을 계속합니다.
continue
않습니다하지만 당신은 할 수있을 때, 지나치게 유용한 아니다if letter != 'D': print 'Current Letter:', letter
"사업 중단"에 도달하기 전에 충족해야 할 조건이 많은 곳에서 계속 루프를 사용하고 싶습니다. 따라서 다음과 같은 코드 대신
for x, y in zip(a, b):
if x > y:
z = calculate_z(x, y)
if y - z < x:
y = min(y, z)
if x ** 2 - y ** 2 > 0:
lots()
of()
code()
here()
나는 이와 같은 코드를 얻는다 :
for x, y in zip(a, b):
if x <= y:
continue
z = calculate_z(x, y)
if y - z >= x:
continue
y = min(y, z)
if x ** 2 - y ** 2 <= 0:
continue
lots()
of()
code()
here()
이 방법으로 그렇게하면 매우 깊이 중첩 된 코드를 피할 수 있습니다. 또한 가장 자주 발생하는 경우를 먼저 제거하여 루프를 최적화하는 것이 쉽습니다. 따라서 다른 쇼 토퍼가 없을 때 드물지만 중요한 경우 (예 : 제수는 0) 만 처리하면됩니다.
continue
이 방식으로 사용 하는 것은을 사용하는 것과 유사합니다 GOTO
. 그러나 이것이 올바른 사용 방법 GOTO
입니다.
일반적으로 continue가 필요 / 유용한 상황은 루프의 나머지 코드를 건너 뛰고 반복을 계속하려는 경우입니다.
필자는 if 문을 사용하여 동일한 논리를 제공 할 수 있기 때문에 실제로 필요하다고 생각하지 않지만 코드의 가독성을 높이는 것이 유용 할 수 있습니다.
if <condition>: continue
하지 if not <condition>: ...
않고 쓰면 필요할 수있는 들여 쓰기 수준을 피하기 보다는 오히려 사용하는 것이 좋습니다 .
continue
문 을 사용할 때마다 기본적으로 조건부 테스트 섹션에서 벗어나 루프 반복을 진행할 수 있습니다. 다음 반복으로? 이것이을 사용하는 것보다 낫다는 것은 분명하지 않습니다 else
. 가독성과 런타임 성능이 향상 되었습니까?
import random
for i in range(20):
x = random.randint(-5,5)
if x == 0: continue
print 1/x
continue는 매우 중요한 제어문입니다. 위의 코드는 일반적인 응용 프로그램을 나타내며 0으로 나누는 결과를 피할 수 있습니다. 프로그램의 출력을 저장해야 할 때 자주 사용하지만 프로그램이 충돌하면 출력을 저장하고 싶지 않습니다. 위의 예제를 테스트하려면 마지막 명령문을 print 1 / float (x)로 바꾸십시오. 그렇지 않으면 randint가 정수를 리턴하므로 분수가있을 때마다 0을 얻습니다. 명확성을 위해 생략했습니다.
어떤 사람들은 가독성에 대해 논평했습니다. "아, 가독성이 그다지 도움이되지 않습니까?
메인 코드 전에 확인이 필요하다고 가정하십시오.
if precondition_fails(message): continue
''' main code here '''
어쨌든 코드를 변경하지 않고 메인 코드를 작성한 후에이 작업을 수행 할 수 있습니다 . 코드를 비교하면 기본 코드에 대한 간격 변경이 없으므로 "계속"이 추가 된 행만 강조 표시됩니다.
프로덕션 코드의 breakfix를 수행해야한다고 상상해보십시오. 계속해서 계속해서 줄을 추가하는 것으로 나타났습니다. 코드를 검토 할 때 이것이 유일한 변화임을 쉽게 알 수 있습니다. 메인 코드를 if / else로 래핑하기 시작하면 간격 변경을 무시하지 않는 한 diff는 새로 들여 쓴 코드를 강조 표시합니다. 특히 Python에서 위험합니다. 짧은 통지로 코드를 롤아웃 해야하는 상황이 아니라면이 점을 완전히 이해하지 못할 수도 있습니다.
def filter_out_colors(elements):
colors = ['red', 'green']
result = []
for element in elements:
if element in colors:
continue # skip the element
# You can do whatever here
result.append(element)
return result
>>> filter_out_colors(['lemon', 'orange', 'red', 'pear'])
['lemon', 'orange', 'pear']
continue
문은 추가 여기에? 를 사용하여 제거 할 수 있으며 element not in colors
코드는 읽을 수 있습니다.
3과 5의 배수가 아닌 모든 숫자를 인쇄하고 싶다고 가정 해 봅시다.
for x in range(0, 101):
if x % 3 ==0 or x % 5 == 0:
continue
#no more code is executed, we go to the next number
print x
if x %3 == 0 or x % 5 == 0:
, pass
, else:
,print x
continue
. 필자의 결론은 필요 가 없지만 어떤 경우에는 (이와 같은) 코드를 사용하여 더 읽기 쉽다는 것이다 continue
. 아주 좋은 예입니다.
IF를 사용하여 수행 할 수 있으므로 반드시 필요한 것은 아니지만 런타임에 더 읽기 쉽고 비용도 저렴합니다.
데이터가 일부 요구 사항을 충족하지 않으면 루프에서 반복을 건너 뛰기 위해 사용합니다.
# List of times at which git commits were done.
# Formatted in hour, minutes in tuples.
# Note the last one has some fantasy.
commit_times = [(8,20), (9,30), (11, 45), (15, 50), (17, 45), (27, 132)]
for time in commit_times:
hour = time[0]
minutes = time[1]
# If the hour is not between 0 and 24
# and the minutes not between 0 and 59 then we know something is wrong.
# Then we don't want to use this value,
# we skip directly to the next iteration in the loop.
if not (0 <= hour <= 24 and 0 <= minutes <= 59):
continue
# From here you know the time format in the tuples is reliable.
# Apply some logic based on time.
print("Someone commited at {h}:{m}".format(h=hour, m=minutes))
산출:
Someone commited at 8:20
Someone commited at 9:30
Someone commited at 11:45
Someone commited at 15:50
Someone commited at 17:45
당신이 볼 수 있듯이, 잘못된 값은 continue
진술 후에 그것을 만들지 못했습니다 .
if
continue
모든 코드가 블록에 포함 된 경우 에만 수행 할 수 있습니다 . 블록 continue
밖에있는 코드를 건너 뜁니다 if
.
예를 들어 변수 값에 따라 다른 작업을 수행하려는 경우 :
my_var = 1
for items in range(0,100):
if my_var < 10:
continue
elif my_var == 10:
print("hit")
elif my_var > 10:
print("passed")
my_var = my_var + 1
위의 예 break
에서 인터프리터를 사용 하면 루프를 건너 뜁니다. 그러나 continue
if-elif 문만 건너 뛰고 루프의 다음 항목으로 바로 이동합니다.
my_var
의이 0
.
continue
.
elif
는이어야합니다 if
. 코드는 당신이하고있는 일을 알고있는 것처럼 보이지 않습니다.