从其他库导入类似命名的函数后,从标准库导入函数

时间:2014-09-10 05:32:01

标签: python numpy standard-library

这是一种好奇心。假设我以交互方式使用 IPython ,默认导入

from numpy import sum

之后我决定使用标准库中的sum。说,做一些像

这样的事情
texts = [['a','good','day'],['a','lovely','day']]
sum(texts, [])

我能这样做吗?怎么样?

  • 请注意,我不需要解决方法来展平列表。我想要一个导入标准库的通用解决方案,就像我导入任何其他库一样,或者是一种绕过函数阴影的方法。

1 个答案:

答案 0 :(得分:2)

您可以在__builtin__(Python 2)或builtins(Python 3)下访问它:

>>> from numpy import sum
>>> texts = [['a','good','day'],['a','lovely','day']]
>>> sum(texts, [])
Traceback (most recent call last):
[...]
TypeError: cannot perform reduce with flexible type
>>> __builtin__.sum(texts, [])
['a', 'good', 'day', 'a', 'lovely', 'day']
>>> from __builtin__ import sum
>>> sum(texts, [])
['a', 'good', 'day', 'a', 'lovely', 'day']

但有两点:

(1)IPython默认导入numpy的总和 - 除非你在遗留pylab模式下工作,在这种情况下你不应该。 : - )

(2)sum不是一个很好的例子,因为使用sum(something, [])连接列表会显示二次行为,因此通常应该避免。