前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python——语句和表达式

python——语句和表达式

作者头像
zy010101
发布2021-06-17 18:45:36
4220
发布2021-06-17 18:45:36
举报
文章被收录于专栏:程序员

语句和表达式

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

代码语言:javascript
复制
>>> i = 1
>>> while i = 3:
  File "<stdin>", line 1
    while i = 3:
            ^
SyntaxError: invalid syntax

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

代码语言:javascript
复制
>>> 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语言中,下面的代码是常见的操作。

代码语言:javascript
复制
#include<stdio.h>
int main()
{
    int num;
    printf("%d\n",num=100);
    return 0;
}

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

代码语言:javascript
复制
>>> 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语言中很容易犯的错误。

代码语言:javascript
复制
int i = 0;
if (i = 10)   //i == 10被写成了i = 10
{
    //do something 
}

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

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

代码语言:javascript
复制
>>> 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
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/06/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 语句和表达式
    • python和C的不同之处
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档