print()的其他参数
>>> print("I", "wish", "to", "register", "a", "complaint", sep="_",end="") #end参数替换默认的换行符 I_wish_to_register_a_complaint序列解包
将一个序列(或任何可迭代对象)解包,并将得到的值存储到一系列变量中。
>>> values = 1, 2, 3 >>> values (1, 2, 3) >>> x, y, z = values >>> x 1 >>> x, y, z = 1, 2, 3 # 这其实就是运用了序列解包可使用星号运算符`(*)来收集多余的值
>>> a, b, *rest = [1, 2, 3, 4] >>> rest [3, 4]链式赋值
x = y = somefunction() #上述代码与下面的代码等价: y = somefunction() x = y #请注意,这两条语句可能与下面的语句不等价: x = somefunction() y = somefunction()增强赋值
增强赋值也可用于其他数据类型(只要使用的双目运算符可用于这些数据类型)。
>>> fnord = 'foo' >>> fnord += 'bar' >>> fnord *= 2 >>> fnord 'foobarfoobar'虽然[]和""都为假(即bool([]) == bool("") == False),但它们并不相等(即[] != "")。对其他各种为假的对象来说,情况亦如此(一个更显而易见的例子是() != False)
条件表达式——C语言中三目运算符的Python版本:
status = "friend" if name.endswith("Gumby") else "stranger"
is运算符:
x is y代表 x和y是同一个对象。
>>> x = y = [1, 2, 3] >>> z = [1, 2, 3] >>> x == y True >>> x == z True >>> x is z False字符串和序列的比较:
要获悉字母的顺序值,可使用函数ord。chr与之作用相反。
链式比较 1 <= number <= 10
短路逻辑
如果知道必须满足特定条件,程序才能正确地运行,可在程序中添加assert语句充当检查点,这很有帮助。还可在条件后面添加一个字符串,对断言做出说明。
>>> age = -1 >>> assert 0 < age < 100, 'The age must be realistic' Traceback (most recent call last):d.items以元组的方式返回键-
for key, value in d.items(): print(key, 'corresponds to', value)函数zip,它将两个序列“缝合”起来,并返回一个由元组组成的序列。返回值是一个适合迭代的对象,要查看其内容,可使用list将其转换为列表。
当序列的长度不同时,函数zip将在最短的序列用完后停止“缝合”。
迭代时获取索引函数enumerate。这个函数让你能够迭代索引值对,其中的索引是自动提供的。
反向迭代和排序后再迭代
函数reversed和sorted, 可用于任何序列或可迭代的对象,且不就地修改对象,而是返回反转和排序后的版本。
要按字母表排序,可先转换为小写。为此,可将sort或sorted的key参数设置为str.lower。例如,sorted("aBc", key=str.lower)返回['a', 'B', 'c']
else子句,它仅在没有调用break for:...else:平行
从其他列表创建列表的方式
>>> [x*x for x in range(10) if x % 3 == 0] [0, 9, 36, 81] >>> [(x, y) for x in range(3) for y in range(3)] [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]圆括号代替方括号并不能实现元组推导,而是将创建生成器,
然而,可使用花括号来执行字典推导。
>>> squares = {i:"{} squared is {}".format(i, i**2) for i in range(10)} >>> squares[8] '8 squared is 64'pass
在你编写代码时,可将其用作占位符
也可不使用注释和pass语句,而是插入一个字符串。这种做法尤其适用于未完成的函数 和 类,因为这种字符串将充当文档字符串。
del
对于你不再使用的对象,Python通常会将其删除, 这通常被称为垃圾收集。
使用del语句。不仅会删除到对象的引用,还会删除名称本身。
>>> x = ["Hello", "world"] >>> y = x >>> y[1] = "Python" >>> x ['Hello', 'Python'] #你可能认为通过删除x,也将删除y,但情况并非如此。 >>> del x >>> y ['Hello', 'Python']x和y指向同一个列表,但删除x对y没有任何影响,因为你只删除名称x,没有删除列表本身(值)。事实上,在Python中,根本就没有办法删除值,而且你也不需要这样做,因为对于你不再使用的值,Python解释器会立即将其删除。
使用exec和eval执行字符串及计算其结果
exec
函数exec将字符串作为代码执行。(exec什么都不返回,因为它本身是条语句)。
>>> exec("print('Hello, world!')") Hello, world!在大多数情况下,还应向它传递一个命名空间——用于放置变量的地方;否则代码将污染你的命名空间,即修改你的变量。
第二个参数——字典,用作代码字符串的命名空间。
>>> from math import sqrt >>> scope = {} >>> exec('sqrt = 1', scope) >>> sqrt(4) 2.0 >>> scope['sqrt'] 1eval
eval计算用字符串表示的Python表达式的值,并返回结果
xrange([start,] stop[, step]) 创建一个用于迭代的xrange对象
