2016-10-13 3 views
0

내 초기 if else 코드 인 경우 한 줄 :구문 에러 : 유효하지 않은 구문 - 파이썬에서 문

if response.get('fulfillments') is None: 
    return (False, response) 
else: 
    return (True, response) 

하지만 one-line-if-else-statement로 변환 할 수 있습니다. 내가 잘못 뭐하는 거지,

return (False, response) if response.get('fulfillments') is None else return (True, response) 

를하지만 구문 오류가 제기된다 : 여기

내가 뭐하는 거지 무엇인가?

답변

6

한 줄 if-else가 아닌 블록과 동일합니다. 이는 하나의 명령문이나 여러 명령문이 아닌 표현식입니다. 다음과 같이 할 수 없습니다.

(x = 4) if x > 5 else (x = 6) 

하지만,

return (False, response) if response.get('fulfillments') is None else (True, response) 

당신은 정말 if-else 필요하지 않습니다 :

x = (4 if x > 5 else 6) 

또는 귀하의 경우 대신,이 같다. 그냥 이렇게 :

return (response.get('fulfillments') is not None, response) 
2

두 번째를 생략하십시오 return. 단순화하기 위해 :

>>> def foo(x): 
... return True if x == 2 else False 

는 "이 삼원 식의 결과를 반환"로 읽을 수 없습니다 "한 경우에이 일을 반환하지만 다른 경우에는 다른 일을 돌아"

2
return (False, response) if response.get('fulfillments') is None else (True, response) 

val_positive if expression else val_negative합니다. val_positive 또는 val_negative는 return 문을 포함 할 수 없습니다.

관련 문제