If和Inline if的优缺点是什么?

发布于 2021-01-29 16:03:39

我对Python中if和inline if之间的区别有点好奇。哪一个更好?

除了更短的事实外,是否有任何理由使用 内联if

另外,这句话有什么问题吗?我收到语法错误:SyntaxError: can't assign to conditional expression

a = a*2 if b == 2 else a = a/w
关注者
0
被浏览
152
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    内联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]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看