프로그래밍 언어/Python

파이썬의 삼항 조건 연산자

Rateye 2021. 9. 10. 10:16
728x90
반응형
질문 : 파이썬에 삼항 조건 연산자가 있습니까?

파이썬에 삼항 조건 연산자가없는 경우 다른 언어 구조를 사용하여 하나를 시뮬레이션 할 수 있습니까?

답변

예, 버전 2.5에서 추가되었습니다. 표현식 구문은 다음과 같습니다.

a if condition else b

첫 번째 condition 이 평가 된 다음 a 또는 b condition 의 부울 값을 기반으로 평가되고 반환됩니다. conditionTrue 평가되면 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
728x90
반응형