본문 바로가기
파이썬

파이썬 if-condition-assignment 한 줄

by º기록 2020. 9. 27.
반응형

다음 코드가 있습니다.

num1 = 10
someBoolValue = True

someBoolValue True 인 경우 num1 의 값을 20 으로 설정해야합니다. 그렇지 않으면 아무것도하지 않습니다. 그래서 여기 내 코드가 있습니다.

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 및 20 또는 num1 의 열렬한 팬이 아닙니다. 그 라인이하는 일에 대해 실제로 두 번 생각해야합니다.

원하는 것을 실제로 달성하는 가장 좋은 방법은 원래 버전입니다.

if someBoolValue:
    num1 = 20

그게 최고의 버전 인 이유는 당신이하고 싶은 일이 매우 분명하고 자신을 혼동하지 않거나 다른 사람이 나중에 해당 코드와 접촉 할 것이기 때문입니다.

또한 부수적으로 num1 = 20 if someBoolValue 는 유효한 Ruby 코드입니다. Ruby는 약간 다르게 작동하기 때문입니다.

 

참조 페이지 https://stackoverflow.com/questions/7872838

 

 

반응형

댓글