1

コードレビューでこれに出くわしました:

def some_method(self, path):
   path = os.path.abspath(os.path.expanduser(path or ""))

私の最初の反応は「ああ、悪い!」でした。しかし、よく考えてみると…そうですか?

4

2 に答える 2

2

これは、式の最初の部分がFalseと評価された場合に、ある種のデフォルト値またはフォールバック値を実装するための一般的なパターンです。それをベストプラクティスと考えてください-好むと好まざるとにかかわらず。Noneを空の文字列に変換するためにも使用できます。

于 2011-04-28T12:38:38.910 に答える
1

ただし、この例では、次のように呼び出すため、少し意味がありません。

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()
于 2011-04-28T12:41:48.213 に答える