当参数具有相同的名称时如何恢复内置?

How to restore a builtin when parameter has same name?

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

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

但是如果这已经完成,并且 range 变量已经被处理并且不再需要,我如何返回内置 range 并在 [=14= 中使用它]?

del range 不恢复内置:

UnboundLocalError: local variable 'range' referenced before assignment

对于Python 2.x

import __builtin__
range = __builtin__.range

对于Python 3.x

import builtins
range = builtins.range

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

例子-

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