후레임의 프로그래밍
파이썬에 삼항 조건 연산자가 있습니까? 본문
질문
Python에 삼항 조건 연산자가없는 경우 다른 언어 구조를 사용하여 시뮬레이션 할 수 있습니까?
답변
예, 추가됩니다. 표현식 구문은 다음과 같습니다.
a if condition else b
첫 번째 조건
이 평가 된 다음 a
또는 b
중 정확히 하나가 조건의 : //en.wikipedia.org/wiki/Boolean_data_type "rel ="noreferrer "title ="Boolean data type "> bool 값. condition
이 True
로 평가되면 a
가 평가되고 반환되지만 b
는 무시되거나 b
는 평가되고 반환되지만 a
는 무시됩니다.
condition
이 참일 때 a
만 평가되고 b
는 전혀 평가되지 않고 조건
이 평가되기 때문에 단락이 허용됩니다. >condition이 false이면 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에 의해 눈살을 찌푸리는 것을 명심하십시오.
- 인수의 순서가 고전적인
조건의 순서와 다릅니다.? a : b
다른 많은 언어 (예 : C, C ++, Go, Perl, Ruby, Java, Javascript 등)의 삼항 연산자. Python의 "놀라운"동작에 익숙하지 않은 사람들이이를 사용하면 버그가 발생할 수 있습니다. (인수 순서를 바꿀 수 있습니다). - 어떤 사람들은 그것이 정상적인 생각의 흐름 (상태를 먼저 생각한 다음 그 효과를 생각하는 것)에 어긋나 기 때문에 "다루기 어렵다"고 생각합니다.
- 문체적인 이유. ( '인라인
if
'이 정말유용하고 스크립트를 더 간결하게 만들 수 있지만 실제로 코드를 복잡하게 만듭니다)
주문을 기억하는 데 문제가있는 경우 큰 소리로 읽을 때 (거의) 의미를 말하는 것을 기억하십시오. 예를 들어 x = 4 if b > 8 else 9는 x will be 4 if b is greater than 8 otherwise 9.
공식 문서 :
'스택오버플로우(Stack Overflow)' 카테고리의 다른 글
파이썬의 메타 클래스는 무엇입니까? (0) | 2020.10.26 |
---|---|
"px", "dip", "dp"및 "sp"의 차이점은 무엇입니까? (0) | 2020.10.26 |
JavaScript 개체에서 속성을 제거하려면 어떻게합니까? (0) | 2020.10.26 |
__name__ ==“__main__”:하면 어떻게됩니까? (0) | 2020.10.26 |
C#에서 문자열과 문자열의 차이점은 무엇입니까? (0) | 2020.10.26 |