질문 : 파이썬에 삼항 조건 연산자가 있습니까?
파이썬에 삼항 조건 연산자가없는 경우 다른 언어 구조를 사용하여 하나를 시뮬레이션 할 수 있습니까?
답변
예, 버전 2.5에서 추가되었습니다. 표현식 구문은 다음과 같습니다.
a if condition else b
첫 번째 condition
이 평가 된 다음 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
조건식 대신 일반 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
.
공식 문서 :
출처 : https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator
'프로그래밍 언어 > Python' 카테고리의 다른 글
macOS 또는 OS X에 pip를 설치하는 방법 (0) | 2021.09.13 |
---|---|
Python 객체를 올바르게 정리하는 방법 (0) | 2021.09.10 |
표준 파이썬 문서 문자열 형식에 대해서 (0) | 2021.09.10 |
Python의 ISO 시간 (ISO 8601) (0) | 2021.09.08 |
pip를 사용하여 Python 패키지를 다른 디렉토리에 설치 하는 방법 (0) | 2021.09.08 |