当前位置 博文首页 > zy010101博客:python——语句和表达式

    zy010101博客:python——语句和表达式

    作者:[db:作者] 时间:2021-06-26 18:20

    语句和表达式

    在python中,语句和表达式是不一样的。语句不能出现在应该是表达式的位置。最典型的例子莫过于赋值语句出现在了表达式的位置,然后就会导致语法错误。
    赋值语句出现在循环条件表达式处

    >>> i = 1
    >>> while i = 3:
      File "<stdin>", line 1
        while i = 3:
                ^
    SyntaxError: invalid syntax
    

    赋值语句出现在函数调用的参数中

    >>> i = ...
    >>> print(i=3)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'i' is an invalid keyword argument for print()
    
    
    >>> def fun(num):       # 定义函数fun
    ...     print(num)
    ... 
    >>> a = ...
    >>> fun(a=3)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: fun() got an unexpected keyword argument 'a'
    

    python和C的不同之处

    C语言的赋值表达式会返回一个值,但是python的赋值语句不会返回值。 因此,在C语言中,下面的代码是常见的操作。

    #include<stdio.h>
    int main()
    {
        int num;
        printf("%d\n",num=100);
        return 0;
    }
    

    而同样行为的代码在python中是不可行的。

    >>> num = ...
    >>> print(num=100)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'num' is an invalid keyword argument for print()
    

    由于python的赋值是语句,不是表达式,从而消除了一个在C语言中很容易犯的错误。

    int i = 0;
    if (i = 10)   //i == 10被写成了i = 10
    {
        //do something 
    }
    

    这个错误在C语言中是相当隐蔽的,一旦出现了这种错误,可能会导致你花费大量的时间来调试程序,以消除该bug。所以在C语言中,应该时刻谨记,涉及==运算符的时候,把常量写在左边,由于不能给常量赋值,可以避免一部分可能写错的代码。但是无法避免两个变量使用==比较的时候写错的可能。

    python中,下面的写法都会报错

    >>> i = 1
    >>> if i = 2:
      File "<stdin>", line 1
        if i = 2:
             ^
    SyntaxError: invalid syntax
    >>> i,j = 1,2
    >>> if i = j:
      File "<stdin>", line 1
        if i = j:
             ^
    SyntaxError: invalid syntax
    
    下一篇:没有了