コードレビューでこれに出くわしました:
def some_method(self, path):
path = os.path.abspath(os.path.expanduser(path or ""))
私の最初の反応は「ああ、悪い!」でした。しかし、よく考えてみると…そうですか?
コードレビューでこれに出くわしました:
def some_method(self, path):
path = os.path.abspath(os.path.expanduser(path or ""))
私の最初の反応は「ああ、悪い!」でした。しかし、よく考えてみると…そうですか?
これは、式の最初の部分がFalseと評価された場合に、ある種のデフォルト値またはフォールバック値を実装するための一般的なパターンです。それをベストプラクティスと考えてください-好むと好まざるとにかかわらず。Noneを空の文字列に変換するためにも使用できます。
ただし、この例では、次のように呼び出すため、少し意味がありません。
instance.some_method()
エラーが発生します。
あなたはそれをこのように呼ぶ必要があるでしょう:
instance.some_method(None)
それはより良いでしょう:
def some_method(self, path=None):
path = os.path.abspath(os.path.expanduser(path or ""))
または間違いなく:
def some_method(self, path=""):
path = os.path.abspath(os.path.expanduser(path))
...これはNone値を防ぐことはできません。その場合、泣き言を言うのが良いのか、それとも「デフォルト」にするのが良いのかを議論することができます。
とにかく、パスは完全に省略できるようになりました。
instance.some_method()