【问题标题】:How to restore a builtin when parameter has same name?当参数具有相同名称时如何恢复内置函数?
【发布时间】:2015-09-19 10:58:24
【问题描述】:

我知道你“not supposed to”使用内置名称作为函数的参数,但有时它们最有意义:

def foo(range=(4,5), type="round", len=2):

但是如果这已经完成,并且 range 变量已经被处理并且不再需要,我如何回到内置的 range 并在 foo() 中使用它?

del range 不恢复内建:

UnboundLocalError: local variable 'range' referenced before assignment

【问题讨论】:

  • 范围是什么?响应时间范围?燃油效率范围?您应该可以在名称中添加一些内容以区别于通用内置。
  • 显然它是foos 的范围。 ;)
  • @TigerhawkT3 显然是 foo 的范围。 foo(foo_range=(4,5)) 将是多余的。 :)

标签: python parameters built-in


【解决方案1】:

对于Python 2.x

import __builtin__
range = __builtin__.range

对于Python 3.x

import builtins
range = builtins.range

【讨论】:

    【解决方案2】:

    同样对于两个 python 版本,您可以使用 __builtins__ 而不导入任何内容。

    例子-

    >>> def foo(range=(4,5)):
    ...     print(range)
    ...     range = __builtins__.range
    ...     print(range)
    ...
    >>> foo()
    (4, 5)
    <class 'range'>
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多