파이썬 여러 줄 if 조건
Python의 if
문의 여러 줄 조건은 PEP8에서 허용되는 다양한 방법으로 제공되었습니다.
우선 여러 조건문을 한 줄에 넣으면 안 됩니다. 대신 여러 조건의 이 한 줄을 분할하고 괄호로 묶습니다.
# do not define the multiple conditions in a single line like this
if (
firstcondition == "something"
and secondcondition == "something else"
and thirdcondition == "something different"
):
# something_to_be_done
pass
PEP8은 여러 줄의 조건문을 구분하기 위해 연속선을 사용하는 방법을 안내합니다. 이 줄은 세로로 정렬되어야 하며 새 줄의 시작 부분부터 4칸 들여쓰기로 간격을 두어야 합니다. 닫는 괄호와 콜론은 조건의 끝을 명확하게 보여줍니다.
분명히 Python에는 if
와 같은 2자 키워드, 단일 공백 및 여는 괄호를 결합할 때마다 4 공백 들여쓰기를 자동으로 생성하는 방법이 있습니다. 따라서 조건 나누기에 추가 들여쓰기를 추가할 필요가 없습니다.
예제 코드:
if (this_matches_condition, this_also_matches_condition): # end of conditions
get_something_done()
위와 같이 여러 조건에 스타일을 적용하면 코드 가독성이 좋다는 장점이 있습니다. 또한 복잡한 조건을 보다 깔끔하게 표현합니다.
and
및 or
와 같은 논리 연산자 키워드가 조건에 포함된 시나리오에서는 PEP8 가이드에 따라 연속 조건 행 앞에 논리 연산자(and, or)를 배치하는 것이 좋습니다. 이 스타일을 Knuth 스타일이라고 합니다. Python에서 설정한 자동 4칸 들여쓰기로 조건의 가독성을 높여 모든 조건을 수직으로 정렬합니다.
또한 괄호 안의 조건을 더 잘 보이게 하고 단락 평가의 이점을 가져옵니다.
예시:
if sttmt1 and (sttmt2 or sttmt3) or name == "Goodman":
something_happens
이러한 여러 줄 조건문의 스타일을 지정하는 다른 방법은 변수
를 정의하고 이러한 조건 표현식을 할당하는 것입니다. 그러나 이 방법은 후속 리팩토링을 제한하는 경향이 있으므로 완전히 권장되지는 않습니다. 그러나 변수를 사용하면 코드가 더 명확해 보이고 프로그램 제어 흐름을 더 잘 이해할 수 있습니다.
condition_list = (
condition_one == "number1"
and condition_two == "number2"
and condition_three == "number3"
)
if conditions_list:
# implement_something
pass
else:
# something_else _is _done
pass
위 코드의 if 문은 전체 condition_list
가 true인 경우에만 구현되도록 합니다. 그렇지 않으면 condition_list
의 조건 중 하나라도 거짓일 때 다른 것이 구현됩니다.
조건 표현식을 눈에 띄게 표시하기 위해 조건 주위에 추가 괄호 쌍을 감쌀 수 있습니다.
if sttmt1 and (sttmt2 or sttmt3) or name == "Goodman":
something_happens