你应该知道的Python新方法(一 )

Python 3.5 + :

  • 扩展了*可迭代解包操作符和**字典解包操作符
# 例如应用在字典融合中
x = {'a': 1, 'b': 2}
y = {'b': 3, 'd': 4}
# 在python3.5+ 中:
z = {**x, **y}
# >>> z
# >>> {'d': 4, 'b': 3, 'a': 1}
# 取出所有的key, 当key相同时,后面覆盖前面的value

# 在python2.x中
w = dict(x, **y)
# >>> w
# >>> {'d': 4, 'b': 3, 'a': 1}
>>> *range(4), 4
(0, 1, 2, 3, 4)

>>> [*range(4), 4]
[0, 1, 2, 3, 4]

>>> {*range(4), 4, *(5, 6, 7)}
{0, 1, 2, 3, 4, 5, 6, 7}

>>> {'x': 1, **{'y': 2}}
{'x': 1, 'y': 2}
  • 矩阵乘法添加了中缀运算符 @
>>> import numpy

>>> x = numpy.ones(3)
>>> x
array([ 1., 1., 1.])

>>> m = numpy.eye(3)
>>> m
array([[ 1., 0., 0.],
       [ 0., 1., 0.],
       [ 0., 0., 1.]])

>>> x @ m
array([ 1., 1., 1.])

  • 为标准库增加了一个新的目录迭代函数os.scandir()
# scandir返回一个迭代器,而不是返回一个文件名列表
# 这会在遍历非常大的目录时提高内存效率
# 下例将显示给定路径中不以'a'开头的所有文件(不包括目录) entry.is_file()调用通常不会进行额外的系统调用

for entry in os.scandir(path):
    if not entry.name.startswith('a') and entry.is_file():
        print(entry.name)

你可能感兴趣的:(你应该知道的Python新方法(一 ))