7

私は自分自身が以下をたくさんタイプしていることに気づいています(それが関連しているなら、Djangoのために開発しています):

if testVariable then:
   myVariable = testVariable
else:
   # something else

または、より一般的に(つまり、パラメータリストを作成する)

if 'query' in request.POST.keys() then:
   myVariable = request.POST['query']
else:
   # something else, probably looking at other keys

これを単純化するために私が知らないショートカットはありますか?ある種の論理でmyVariable = assign_if_exists(testVariable)何か?

4

2 に答える 2

25

「存在しない」場合にmyVariableを以前の値に変更せずに残したいとすると、

myVariable = testVariable or myVariable

最初のケースを扱い、そして

myVariable = request.POST.get('query', myVariable)

2番目のものを扱います。ただし、どちらも「存在する」とはあまり関係がありません(これは、Pythonの概念ではありません;-)。最初の問題はtrueまたはfalseに関するもので、2番目の問題はコレクション内のキーの有無に関するものです。

于 2009-07-30T15:28:59.087 に答える
7

最初のインスタンスは奇妙に述べられています...なぜブール値を別のブール値に設定するのですか?

testVariableが長さゼロの文字列ではないか、Noneでない場合、またはFalseと評価されるものでない場合は、myVariableをtestVariableに設定することを意味します。

もしそうなら、私はより明確な定式化を好みます

myVariable = testVariable if bool(testVariable) else somethingElse

myVariable = testVariable if testVariable is not None else somethingElse

辞書に索引を付けるときは、単に。を使用しますget

myVariable = request.POST.get('query',"No Query")
于 2009-07-30T15:27:20.557 に答える