Python 에 삼항 조건부 연산자 가 있습니까?
예, 버전 2.5 에 추가 되었습니다. 표현식 구문은 다음과 같습니다.
a if condition else b
먼저 평가된 다음 의 부울 값 에 따라 or condition
중 하나 가 평가되고 반환 됩니다. 로 평가 되면 then 은 평가되어 반환되지만 무시됩니다. 그렇지 않으면 when 이 평가되어 반환되지만 무시됩니다.a
b
condition
condition
True
a
b
b
a
condition
이것은 참일 때만 a
평가되고 b
전혀 평가되지 않고, condition
거짓일 때만 b
평가되고 전혀 평가되지 않기 때문에 단락을 허용 a
합니다.
예를 들어:
>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'
조건문은 문 이 아니라 표현식 입니다. 즉, 조건식 내에서 할당 문 이나 다른 문 을 사용할 수 없습니다 .pass
>>> pass if False else x = 3
File "<stdin>", line 1
pass if False else x = 3
^
SyntaxError: invalid syntax
그러나 조건식을 사용하여 다음과 같이 변수를 할당할 수 있습니다.
x = a if True else b
조건식은 두 값 사이를 전환하는 것으로 생각하십시오. 그것은 당신이 '한 가지 가치 또는 다른 가치' 상황에 있을 때 매우 유용하지만, 다른 많은 일을 하지는 않습니다.
명령문을 사용해야 하는 경우 조건식 대신 일반 명령문 을 if
사용해야 합니다 .
몇 가지 이유로 일부 Pythonistas에 의해 눈살을 찌푸리게 한다는 점을 명심하십시오.
- 인수의 순서는 다른
condition ? a : b
많은 언어(예: C , C++ , Go , Perl , Ruby , Java , JavaScript 등)의 고전적인 삼항 연산자의 순서와 다르므로 사람들이 Python의 " 놀라운" 행동은 그것을 사용합니다(인수 순서를 바꿀 수 있음). - 어떤 사람들은 그것이 정상적인 생각의 흐름(조건을 먼저 생각하고 그 다음에 효과를 생각함)과 반대되기 때문에 그것을 "조금 다루기 힘들다"고 생각합니다.
- 문체 이유. ('inline
if
'이 정말 유용하고 스크립트를 더 간결하게 만들 수 있지만 실제로 코드를 복잡하게 만듭니다)
순서를 기억하는 데 문제가 있는 경우 큰 소리로 읽을 때 (거의) 의미하는 바를 말하는 것을 기억하십시오. 예를 들어, x = 4 if b > 8 else 9
는 로 소리 내어 읽습니다 x will be 4 if b is greater than 8 otherwise 9
.
공식 문서:
튜플로 색인을 생성할 수 있습니다.
(falseValue, trueValue)[test]
test
True 또는 False 를 반환해야 합니다 .
항상 다음과 같이 구현하는 것이 더 안전할 수 있습니다.
(falseValue, trueValue)[test == True]
또는 내장을 사용하여 부울 값 bool()
을 보장 할 수 있습니다.
(falseValue, trueValue)[bool(<expression>)]
2.5 이전 버전의 경우 트릭이 있습니다.
[expression] and [on_true] or [on_false]
on_true
잘못된 Boolean 값을 가질 때 잘못된 결과를 줄 수 있습니다 . 1
표현식을 왼쪽에서 오른쪽으로 평가하는 이점이 있지만 내 의견으로는 더 명확합니다.
'파이썬' 카테고리의 다른 글
[Python] 단일 표현식에서 두 개의 사전을 병합하려면 어떻게 해야 합니까? (0) | 2022.07.31 |
---|---|
[Python] 파일이 예외 없이 존재하는지 어떻게 확인합니까? (0) | 2022.07.31 |
[Python] 파이썬에서 메타클래스란 무엇입니까? (0) | 2022.07.31 |
[Python] if __name__ == "__main__": 하면 어떻게 되나요? (0) | 2022.07.31 |
[Python] "yield" 키워드는 무엇을 합니까? (0) | 2022.07.31 |