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

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

【问题讨论】:

范围是什么?响应时间范围?燃油效率范围?您应该可以在名称中添加一些内容以区别于通用内置。 显然它是foos 的范围。 ;) @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

以上是关于当参数具有相同名称时如何恢复内置函数?的主要内容,如果未能解决你的问题,请参考以下文章

具有相同名称的多个参数的函数如何工作?

如何防止恢复重复的 NSURLSessionTask

excel表格里面的数字突然全部变成了#VALUE是怎么回事啊?要怎么恢复成文本,着急。谢谢!!

为啥构造函数总是与类具有相同的名称以及它们是如何被隐式调用的?

当自我没有广播交易时,如何使用以太坊客户端从状态恢复异常中获取消息?

如何从子类访问父类数据成员,当父母和孩子的日成员具有相同的名称时