免責を返されます。実際にこれをしません。 1本のライナーが本当に必要な場合は、nakedfanaticのように、PEP-8からの経験則を破るだけです。しかし、それはあなたが思ったようにreturn
がなぜ行動していないのかを示し、return
かもしれないと思うように振る舞います。
return None if x is None
と言うことができない理由は、return
が式ではなく文を導入しているからです。したがって、それをかっこする方法はありません。(return None) if x is None else (pass)
などです。
これで問題は解決します。のは、それが表現ではなく、完全な声明だことを除いてreturn
ように振る舞う機能ret
を書いてみましょう:
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)
リターンX ' 'で害は何? – thefourtheye
@thefourtheye 'x'がNoneでなかったらどうしますか? – TerryA
OPはelse部分について何も言及していませんでした。 – thefourtheye