我正在浏览django休息框架工作教程
http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/
在教程中有一行作者执行以下任务。
linenos = self.linenos and 'table' or False
options = self.title and {'title': self.title} or {}
我从来没有见过这种形式的条件赋值......我甚至都不确定。 我觉得在python中进行条件格式化的唯一方法是
var = something if something something_else
那么,床单和选项究竟会回归什么?
答案 0 :(得分:4)
代码正在利用逻辑运算符在python中的工作方式。语句从左到右解释,最后要评估的表达式提供结果。 and
和or
运算符也“短路”,这意味着如果第一个参数为假,它们只会评估它们的第二个参数。
可以利用这些功能来创建三元运算符(Python在2.5版之前没有 - 请参阅PEP 308 -- Conditional Expressions)。所以问题中的两行代码相当于:
linenos = 'table' if self.lineno else False
options = {'title': self.title} if self.title else {}