Python 3.5 + :
- 擴(kuò)展了
*可迭代解包操作符和**字典解包操作符
# 例如應(yīng)用在字典融合中
x = {'a': 1, 'b': 2}
y = {'b': 3, 'd': 4}
# 在python3.5+ 中:
z = {**x, **y}
# >>> z
# >>> {'d': 4, 'b': 3, 'a': 1}
# 取出所有的key, 當(dāng)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.])
- 為標(biāo)準(zhǔn)庫增加了一個新的目錄迭代函數(shù)
os.scandir()
# scandir返回一個迭代器,而不是返回一個文件名列表
# 這會在遍歷非常大的目錄時提高內(nèi)存效率
# 下例將顯示給定路徑中不以'a'開頭的所有文件(不包括目錄) entry.is_file()調(diào)用通常不會進(jìn)行額外的系統(tǒng)調(diào)用
for entry in os.scandir(path):
if not entry.name.startswith('a') and entry.is_file():
print(entry.name)