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)

处理第二个。不过,两者都与“存在”没有太大关系(这几乎不是 Python 的概念;-):第一个是关于真或假,第二个是关于集合中键的存在或不存在。

于 2009-07-30T15:28:59.087 回答
7

第一个实例的陈述很奇怪......为什么将一个布尔值设置为另一个布尔值?

您可能的意思是将 myVariable 设置为 testVariable 当 testVariable 不是零长度字符串或不是 None 或不是碰巧评估为 False 的东西。

如果是这样,我更喜欢更明确的表述

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 回答