当参数具有相同名称时如何恢复内置函数?
Posted
技术标签:
【中文标题】当参数具有相同名称时如何恢复内置函数?【英文标题】: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
【问题讨论】:
范围是什么?响应时间范围?燃油效率范围?您应该可以在名称中添加一些内容以区别于通用内置。 显然它是foo
s 的范围。 ;)
@TigerhawkT3 显然是 foo 的范围。 foo(foo_range=(4,5))
将是多余的。 :)
【参考方案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'>
【讨论】:
这些答案都说你不应该那样做:***.com/q/11181519/125507以上是关于当参数具有相同名称时如何恢复内置函数?的主要内容,如果未能解决你的问题,请参考以下文章
excel表格里面的数字突然全部变成了#VALUE是怎么回事啊?要怎么恢复成文本,着急。谢谢!!
为啥构造函数总是与类具有相同的名称以及它们是如何被隐式调用的?