5 python if-statement inline-if
我对Python中的if和inline之间的区别有点好奇.哪一个更好?
是否有任何理由使用内联,除了它更短的事实?
此外,这个陈述有什么问题吗?我收到语法错误:SyntaxError: can't assign to conditional expression
a = a*2 if b == 2 else a = a/w
Run Code Online (Sandbox Code Playgroud)
内联if表达式的优点是它是一个表达式,这意味着你可以在其他表达式 - 列表推导,lambda函数等中使用它.
内联if表达式的缺点还在于它是一个表达式,这意味着你不能在其中使用任何语句.
缺点的一个完美示例正是导致错误的原因:a = a/w是一个语句,因此您无法在表达式中使用它.你必须这样写:
if b == 2:
a = a*2
else:
a = a/w
Run Code Online (Sandbox Code Playgroud)
除了在这种特殊情况下,你只想a在任何一种情况下分配一些东西,所以你可以这样写:
a = a*2 if b==2 else a/w
Run Code Online (Sandbox Code Playgroud)
至于优势,请考虑这个:
odd_numbers = [number if number%2 else number+1 for number in numbers]
Run Code Online (Sandbox Code Playgroud)
如果没有if表达式,你必须将条件包装在一个命名函数中 - 这对于非平凡的情况是一件好事,但在这里过于冗长:
def oddify(number):
if number%2:
return number
else:
return number+1
odd_numbers = [oddify(number) for number in numbers]
Run Code Online (Sandbox Code Playgroud)
另请注意,以下示例不使用if(三元条件)表达式,而是使用if(条件过滤器)子句:
odd_numbers = [number for number in numbers if number % 2]
Run Code Online (Sandbox Code Playgroud)
使用条件表达式的正确方法是:
result = X if C else Y
Run Code Online (Sandbox Code Playgroud)
你有什么:
result = X if C else result = Y
Run Code Online (Sandbox Code Playgroud)
所以,你应该result =从那里删除部分.条件表达式的主要优点是,它是一个表达式.你可以在任何使用普通表达式的地方使用它们,作为赋值表达式的RHS,作为方法/函数参数,在lambdas中,在列表理解中,等等.但是,您不能在其中添加任何语句,例如say print语句.
例如,假设您想要列表中的所有偶数整数,但对于所有奇数,您希望值为0.您可以在列表理解中使用它,如下所示:
result = [x if x % 2 == 0 else 0 for x in li]
Run Code Online (Sandbox Code Playgroud)