关于pip安装程序中代码的语法混淆," get-pip.py"

时间:2014-06-11 23:34:53

标签: python syntax install pip

查看get-pip.py上的pip安装程序this page时,我注意到了一些我不熟悉的语法。

在文件的第17422行找到,这是一行:

packages += ["setuptools"]

我很困惑为什么它使用奇怪的+=语法而不是.append() 方法。我从来没有见过这种将字符串添加到字符串列表中的方式 以前,我想知道为什么在这里使用它。为什么不读这行:

packages.append("setuptools")

我怀疑这是出于兼容性原因,或者它是历史的工件。有谁知道这种语法的起源或原因?如果没有,我在哪里可以了解更多相关信息?

1 个答案:

答案 0 :(得分:0)

性能差异基本上很小。

In [9]: %%timeit 
   ...: packages=[]
   ...: packages+=["setuptools"]
   ...: 
10000000 loops, best of 3: 155 ns per loop

In [10]: %%timeit 
   ....: packages=[]
   ....: packages.append("setuptools")
   ....: 
10000000 loops, best of 3: 123 ns per loop

+=派上用场的方法是,如果您想附加多个项目而不附加下列列表:

In [11]: packages=[]

In [12]: packages += ["setuptools","other"]

In [13]: packages
Out[13]: ['setuptools', 'other']

In [14]: packages=[]

In [15]: packages.append(["setuptools","other"])

In [16]: packages
Out[16]: [['setuptools', 'other']]

使用extend v +=

In [52]: 
%%timeit packages=[]
packages.extend( ["setuptools","other"])
   ....: 
10000000 loops, best of 3: 173 ns per loop

In [53]: 
%%timeit packages=[]
packages += ["setuptools","other"]
   ....: 
10000000 loops, best of 3: 130 ns per loop