Pythonでメソッドから一行で返すことは可能ですか
このようなものを探しています
return None if x is None
上記を試しましたが、無効な構文です
私は簡単に行うことができます:
if x is None:
return None
しかし、上記のifステートメントを1行に組み合わせることができるかどうか、ちょっと興味があります
Pythonでメソッドから一行で返すことは可能ですか
このようなものを探しています
return None if x is None
上記を試しましたが、無効な構文です
私は簡単に行うことができます:
if x is None:
return None
しかし、上記のifステートメントを1行に組み合わせることができるかどうか、ちょっと興味があります
免責事項: 実際にはこれを行わないでください。本当にワンライナーが必要な場合は、nakedfanatic のように、PEP-8 の経験則を破るだけです。しかし、なぜreturn
あなたが思ったように振る舞わないのか、そしてあなたが思ったように振る舞うのはどのように見えるのかを示していますreturn
.
と言えない理由は、それが式ではなくステートメントreturn None if x is None
を導入しているからです。return
したがって、それを括弧で囲む方法はありません(return None) if x is None else (pass)
。
大丈夫です、私たちはそれを修正できます。完全なステートメントではなく式であることを除いて、次のret
ように動作する関数を書きましょう。return
class ReturnValue(Exception):
def __init__(self, value):
Exception.__init__(self)
self.value = value
def enable_ret(func):
def decorated_func(*args, **kwargs):
try:
return func(*args, **kwargs)
except ReturnValue as exc:
return exc.value
return decorated_func
def ret(value):
raise ReturnValue(value)
@enable_ret
def testfunc(x):
ret(None) if x is None else 0
# in a real use-case there would be more code here
# ...
return 1
print testfunc(None)
print testfunc(1)
list[bool]
次の式を試すこともできます。
return [value, None][x == None]
2 番目のブラケットが true と評価された場合、None が返されます。それ以外の場合は、返したい値が返されます。