다음 코드가 있습니다
num1 = 10
someBoolValue = True
나는의 값으로 설정해야 num1
하는 20
경우 someBoolValue
입니다 True
; 그렇지 않으면 아무 것도하지 마십시오. 그래서 여기에 대한 코드가 있습니다.
num1 = 20 if someBoolValue else num1
어쨌든 ...else num1
깨끗하게 보이도록 부품을 피할 수 있습니까? 에 해당
if someBoolValue:
num1 = 20
나는 ...else pass
이것을 다음 과 같이 바꾸려고 시도했다 num1=20 if someBoolValue else pass
. 내가 가진 것은 구문 오류였습니다. 나도 그 ...else num1
부분을 생략 할 수 없었다 .
답변
파이썬에서 이것이 가능하지 않다고 생각합니다. 실제로하려는 일이 다음과 같이 확장 될 수 있기 때문입니다.
num1 = 20 if someBoolValue else num1
배제 else num1
하면 할당이 실제로 무언가를 반환해야하기 때문에 구문 오류가 발생합니다.
다른 사람들이 이미 언급 했듯이이 작업을 수행 할 수는 있지만 다음에 해당 코드를 읽을 때 혼란스러워 할 수 있기 때문에 좋지 않습니다.
if someBoolValue: num1=20
나는 num1 = someBoolValue and 20 or num1
똑같은 이유로 큰 팬이 아닙니다 . 나는 실제로 그 라인이 무엇을하고 있는지 두 번 생각해야합니다.
실제로 원하는 것을 달성하는 가장 좋은 방법은 원본 버전입니다.
if someBoolValue:
num1 = 20
가장 좋은 이유는 당신이하고 싶은 일이 매우 분명하기 때문에 자신을 혼란스럽게하지 않을 것입니다.
또한, num1 = 20 if someBoolValue
루비가 조금 다르게 작동하기 때문에 부수적 으로 유효한 루비 코드입니다.
답변
이것을 사용하십시오 :
num1 = 20 if someBoolValue else num1
답변
한 줄로 :
if someBoolValue: num1 = 20
하지만 그렇게하지 마십시오. 이 스타일은 일반적으로 예상되지 않습니다. 사람들은 명확성과 일관성을 위해 더 긴 형식을 선호합니다.
if someBoolValue:
num1 = 20
(동일하게 낙타 모자는 피해야합니다. 대신을 사용하십시오 some_bool_value
.)
참고 인라인 것을 표현 some_value if predicate
없는 else
술어가 거짓 인 경우 반환 값이되지 않을 것 때문에 부분은 존재하지 않습니다. 그러나 표현식은 모든 경우에 명확하게 정의 된 리턴 값을 가져야합니다. 이것은 Ruby 나 Perl과 같은 사용법과 다릅니다.
답변
다음 중 하나를 사용할 수 있습니다.
(falseVal, trueVal)[TEST]
TEST and trueVal or falseVal
답변
아니요. 같은 num1 = 20 if someBoolValue
것이 효과 가 있기를 바랐 지만 그렇지 않습니다. 가장 좋은 방법은 if
성명서를 작성하는 것입니다.
if someBoolValue:
num1 = 20
답변
num1 = 10 + 10*(someBoolValue is True)
이것이 나의 새로운 최종 답변입니다. 사전 답변은 다음과 같으며 명시된 문제에 대해 과도하게 사용되었습니다. Getting_too_clever == not Good
. 다음은 사전 답변입니다 … True
cond 에 하나를 추가 하고 다른 하나를 추가하려는 경우 여전히 좋습니다 False
.
num1 = 10 + (0,10)[someBoolValue is True]
num1
이미 언급 한 값은 이미 그대로 두어야합니다. 나는 그것이 num1 = 10
포스트의 첫 번째 진술이기 때문에 가정 했으므로 얻을 수있는 작업 20
은 add 10
입니다.
num1 = 10
someBoolValue = True
num1 = 10 + (0,10)[someBoolValue is True]
print(f'num1 = {num1}\nsomeBoolValue = {someBoolValue}')
이 출력을 생성
num1 = 20
someBoolValue = True
답변
num1 = 20 * someBoolValue or num1