本文是《Python基础教程(第2版 修订版)》第 5 章 条件、循环和其他语句 的笔记,简要介绍了Python中的序列解包,链式赋值,比较运算符,布尔运算符,zip、enumerate,列表推导式,exec和eval等内容。
1. print
对很多应用程序而言,使用模块记日志会比语句更合适。
用逗号分隔可以打印多个表达式。如果在结尾处加上逗号,那么接下来的语句会与前一个语句在同一行打印。但只在脚本中有用,在交互式Python会话中则没有效果
2. import
从模块中导入函数,通常可以使用:
只有确定需要给定模块中的所有功能时,才应该使用。
当两个模块均含有同一个函数时:
通过导入,采用、调用。
使用子句。
3. assignment
3.1 sequence unpacking
将多个值的序列解开,然后放到变量的序列中,即序列解包或递归解包。
可以将多个赋值操作同时进行。也可以同时交换两个或者多个变量。
在Python3中可以使用星号运算符进行解包。
3.2 chained assignments
链式赋值是将同一个值赋值给多个变量的捷径。只处理一个值。
3.3 augmented assignments
对于、、等标准运算符,都适用增量赋值。例如。
4. Conditions
4.1 比较运算符
标准值、、所有类型的数字0(包括浮点型、长整型和其他类型)、空序列(如空字符串、元组和列表)以及空的字典都为假。
Python中的比较运算符:
: x 等于 y
: x 小于 y
: x 大于 y
: x 大于等于 y
: x 小于等于 y
: x 不等于 y
: x 和 y 是同一个对象
: x 和 y 是不同的对象
: x 是 y 容器的成员
: x 不是 y 容器的成员
比较运算符和赋值运算一样是可以连接的,例如:
比较对象的时候可以使用内建的函数。
运算符是判断同一性,而非相等性。应避免用运算符比较类似数值和字符串这类不可变值。
字符串可以按照字母顺序排列进行比较。其他序列和包含其他序列元素的序列也同样适用。
4.2 布尔运算符
布尔运算符:、、
短路逻辑或惰性求值: 布尔运算符只有在需要求值时才进行求值:
表达式: x为假,则返回x的值,否则返回y的值。
表达式: x为真,则返回x的值,否则返回y的值。
Python内置的条件表达式: 。b为真,返回a,否则返回c。
断言:可以在错误条件出现时直接让程序崩溃。条件后可以添加字符串,解释断言。
5. Loop
5.1 while 和 for
语句可以在任何条件为真时重复执行一个代码块。语句更适合为一个集合(序列或其他可迭代对象)的每个元素都执行一个代码块。
函数的工作方式类似于分片,包括下限,但不包括上限。与函数的区别在于,函数一次创建整个序列,而函数一次只创建一个数。因此在需要迭代一个巨大的序列时,函数会更高效。
循环最后的子句,仅在没有调用时执行。
循环遍历字典元素:
5.2 一些迭代工具5.2.1 zip
函数,并行迭代:同时迭代两个序列。函数可以把两个序列“压缩”在一起,返回一个元组的列表。可以处理不等长的序列,直到最短的序列结束为止。
5.2.2 enumerate
函数,按索引迭代:迭代访问序列中的对象,同时获得当前对象的索引。函数可以提供索引的可迭代索引-值对。
5.2.3 reversed函数和sorted函数
函数和函数,翻转和排序迭代:作用于任何序列或可迭代对象,返回翻转或排序后的版本。函数返回的是列表,但是函数返回的是一个可迭代对象。
6. list comprehension
列表推导式:利用其它列表创建新的列表。
7 执行存储在字符串中的Python代码
7.1 exec执行一个字符串的语句
执行一个字符串的语句。在Python3中是一个函数,而非语句。
语句的好处在于可以动态地创建代码字符串。
安全起见,可以增加一个字典,起到命名空间的作用。通过增加 来实现,其中的就是起放置代码字符串命名空间的作用。
字典中内建的字典自动包含所有的内建函数和值。
7.2 eval计算以字符串形式书写的Python表达式
会计算以字符串形式书写的Python表达式,并返回结果值。语句不返回任何对象,因为本身就是语句。
可以使用命名空间。可以给语句提供两个命名空间,一个全局的一个局部的。全局的必须是字典,局部的可以是任何形式的映射。
给或语句提供命名空间时,还可以在真正使用命名空间前放置一些值进去。
同理,或者调用的作用域也能在另外一个上面使用。
Python内没有任何执行不可信任代码的安全方式。一个可选方案是使用Python的实现,如,以及使用一些本地机制,如Java的功能。
8. Others
程序什么都不用做,但是空代码块又是非法的,此时可以在语句块中加上语句。可以在代码中做占位符。
使用语句,不仅会移除一个对象的引用,也会移除那个名字本身。
领取专属 10元无门槛券
私享最新 技术干货