是否有用于变量检查和赋值的Python快捷方式?

7 python django idioms

我发现自己打了很多以下内容(为Django开发,如果相关的话):

if testVariable then:
   myVariable = testVariable
else:
   # something else
Run Code Online (Sandbox Code Playgroud)

或者,更常见的是(即建立参数列表)

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

是否有一条我不知道的捷径简化了这一点?有什么逻辑myVariable = assign_if_exists(testVariable)吗?

Ale*_*lli 25

假设您希望将myVariable保持不变为"不存在"情况下的先前值,

myVariable = testVariable or myVariable
Run Code Online (Sandbox Code Playgroud)

处理第一个案件,和

myVariable = request.POST.get('query', myVariable)
Run Code Online (Sandbox Code Playgroud)

处理第二个.这两者都与"存在"无关(这几乎不是Python概念;-):第一个是关于真或假,第二个是关于集合中是否存在键.


S.L*_*ott 7

奇怪地说第一个例子......为什么要将布尔值设置为另一个布尔值?

你可能的意思是当testVariable不是一个零长度的字符串时,将myVariable设置为testVariable,或者不是或者没有恰好评估为False的东西.

如果是这样,我更喜欢更明确的配方

myVariable = testVariable if bool(testVariable) else somethingElse

myVariable = testVariable if testVariable is not None else somethingElse
Run Code Online (Sandbox Code Playgroud)

索引到字典时,只需使用get.

myVariable = request.POST.get('query',"No Query")
Run Code Online (Sandbox Code Playgroud)