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

时间:2009-07-30 15:23:27

标签: python django idioms

我发现自己输入了很多内容(为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)

2 个答案:

答案 0 :(得分:25)

假设你想在“不存在”的情况下保持myVariable不变为其先前的值,

myVariable = testVariable or myVariable

处理第一个案例,

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

处理第二个问题。这两者都与“存在”无关(这几乎不是Python的概念;-):第一个是关于真或假,第二个是关于集合中是否存在密钥。

答案 1 :(得分:7)

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

你可能的意思是当testVariable不是零长度字符串时将myVariable设置为testVariable,或者不是或者没有恰好评估为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")