Rubyで面白い表現に出くわしました。
a ||= "new"
これは、aが定義されていない場合、「新しい」値がaに割り当てられることを意味します。それ以外の場合、aはそのままになります。DBクエリを実行するときに便利です。値が設定されている場合、別のDBクエリを実行したくありません。
そこで、Pythonで同様の考え方を試しました。
a = a if a is not None else "new"
失敗しました。aが定義されていないとPythonで「a=a」ができないからだと思います。
したがって、私が出てくる解決策は、locals()とglobals()をチェックするか、try...を使用することです。
myVar = myVar if 'myVar' in locals() and 'myVar' in globals() else "new"
また
try:
myVar
except NameError:
myVar = None
myVar = myVar if myVar else "new"
ご覧のとおり、ソリューションはそれほどエレガントではありません。質問したいのですが、これを行うためのより良い方法はありますか?