【问题标题】:import function from standard library after importing similarly named function from other library从其他库导入类似名称的函数后从标准库导入函数
【发布时间】:2014-09-10 05:32:01
【问题描述】:

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

from numpy import sum

然后我决定使用标准库中的sum。说,做类似的事情

texts = [['a','good','day'],['a','lovely','day']]
sum(texts, [])

我可以这样做吗?怎么样?

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

【问题讨论】:

    标签: python numpy standard-library


    【解决方案1】:

    您可以在__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) 默认情况下,IPythonnot 会导入 numpy 的总和——除非你使用的是旧的 pylab 模式,在这种情况下你不应该这样做。 :-)

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

    【讨论】:

    猜你喜欢
    • 2014-09-07
    • 2017-10-15
    • 1970-01-01
    • 2018-10-19
    • 2022-08-19
    • 2021-08-17
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    相关资源
    最近更新 更多