Learning Python Part II 之 表达式语句(Expression)

来源:互联网 发布:高频交易软件 编辑:程序博客网 时间:2024/05/17 06:56

在Python中,你也可以把表达式当做一条语句来用——自己独占一行。但因为表达式的值不会被保留,所以只有当有意义的时候才这样做。常见于下列两种情况:

为了调用函数或方法:

一些函数和方法完成自己的功能之后不需要返回值,可以通过表达式语句调用这些函数或方法。

为了在交互式提示符中打印值:

Python返回输入交互式命令行的表达式的值,其实这些也是表达式语句,服务于 print 语句

常见的表达式语句形式:
这里写图片描述

上表中的后两个有一点特殊,print在Python3.x中是一个函数并且时长独占一行;yield在生成器中也时常作为一个语句;这两种都是表达式语句的实例。
例如, 虽然在3.X中print作为表达式语句单独一行调用,它像其他函数调用一样返回一个值(返回值是None,没有任何意义)

>>> x  = print('spam')spam>>> print(x)None

并且要铭记,在Python中尽管表达式可以以语句的形式出现,但是语句并不能用作表达式。非表达式语句只能单独一行出现,不能嵌套在其他更大的语法结构中。例如:Python不允许将赋值语句=嵌套在其他表达式中。这么做是为了避免常见的错误,如你不能通过=突然改变一个变量的值当你真正想做的是==相等验证。

有一个常见的错误,表达式语句常用作列表方法去就地改变列表(in-place change)

>>> L = [1, 2]>>> L.append(3)>>> L[1, 2, 3]

但是,对于新手来说把这样的操作写成赋值语句的形式的情况并不罕见

>>> L = L.append(4)>>> print(L)   #已经关闭了列表LNone

尽管这并不会报错,调用一个就地改变的操作例如append sort reverse往往会就地改变列表,这些方法并不会返回一个改变过的列表,而是返回的None对象,而如果再赋值给列表,往往会关闭列表(会被Python的垃圾回收机制回收)

原创粉丝点击