AI は、PEP 8 に関連するものを見つけることができませんでした。戻り値のない関数の最も Pythonic な構文についてのあなたの考えに興味がありますか?
return 行のない関数を禁止する理由はありますか (例 3)?
例 1:
def foo():
print 'foo'
return None
例 2:
def foo():
print 'foo'
pass
例 3:
def foo():
print 'foo'
複雑にしないでおく。例 3 は最も Pythonic な方法です。
>>> import this
The Zen of Python, by Tim Peters
...
Simple is better than complex.
...
次の 2 つの使用例があります。
return None
そうしないと、読者が少し混乱する可能性があるため、個人的にはそこに置くことを好みます。例:
def find_user(name):
if database.is_ready():
return database.find_user_by_name(name)
else:
return None
技術的には、else
パーツを削除することはできますが、そうすると機能がわかりにくくなります。
関数が値を返す場合、それはNone
場合によってreturn None
は良いことです。
関数が値を返さないが、早期に返したい場合は、return
パラメーターなしで使用します。最後の行は省略できます。
pass
何もせず、構文エラーを回避するためにステートメントが必要な場合 (たとえば、空のクラス) にのみ役立ちます。
他の人が述べているように、オプション 3 が断然ベストです。
None
オプション 3 が良い考えであるさらに多くの理由は、 (他の言語では別名null
) は一般的に決して返されるべきではなく、例外をスローするか、Null オブジェクト パターンを使用する必要があるという意見を多くの人が持っているためです。None
私はそれに完全に同意するわけではありませんが、意味的に意味がなく、あいまいな場合に特に明示的に使用することを避けるのに有効なポイントがあると思います.
二度と戻ってはいけないと言っているわけではありませんNone
が、一般的には良い考えではないと思います.
これは、今日の Python でもblah['DOESNOTEXIST']
発生し、どこで例外がスローされ、Java ではmap.get("DOESNOTEXIST")
が返されnull
ます。