If和Inline if的优缺点是什么?
我对Python中if和inline if之间的区别有点好奇。哪一个更好?
除了更短的事实外,是否有任何理由使用 内联if ?
另外,这句话有什么问题吗?我收到语法错误:SyntaxError: can't assign to conditional expression
a = a*2 if b == 2 else a = a/w
-
内联
if
表达式的优点是它是一个表达式,这意味着您可以在其他表达式(列表推导,lambda函数等)中使用它。内联
if
表达式的缺点 还 在于它是一个表达式,这意味着您不能在其中使用任何语句。
缺点的一个完美例子就是导致错误的原因:这
a = a/w
是一条语句,因此您不能在表达式中使用它。您必须编写以下代码:if b == 2: a = a*2 else: a = a/w
除了在这种特殊情况下,您只想
a
在这两种情况下都分配一些东西,因此您可以编写以下代码:a = a*2 if b==2 else a/w
至于优势,请考虑以下几点:
odd_numbers = [number if number%2 else number+1 for number in numbers]
如果不使用
if
表达式,则必须将条件包装在命名函数中,这对于非平凡的情况而言是一件好事,但在这里过于冗长:def oddify(number): if number%2: return number else: return number+1 odd_numbers = [oddify(number) for number in numbers]
另外,请注意,以下示例 未 使用
if
(三进制条件)表达式,而是使用了if
(条件过滤器)子句:odd_numbers = [number for number in numbers if number % 2]