我想覆盖python的默认round()函数,因为我必须将round()函数的结果转换为整数。默认情况下,round()返回float值。
下面给出的代码是返回错误消息。
RuntimeError:调用Python对象时,超出了最大递归深度。
def round(number):
if type(number) is float: return int(round(number))
return None
最佳答案
当前代码的问题在于,在覆盖内置round()
方法之后,当您在自己的round()
中调用round()
时,您将递归调用自己的函数,而不是内置的round
函数。
对于Python 3.x,您可以使用 builtins
模块访问round()
内置函数-
import builtins
def round(number):
if type(number) is float: return int(builtins.round(number))
return None
对于Python 2.x,它将是
__builtin__
模块-import __builtin__
def round(number):
if type(number) is float: return int(__builtin__.round(number))
return None
尽管我真的建议不要这样做,但是应该为您的round函数使用一个新名称,例如
round_int
之类的。请注意,另一件事是您的代码将返回
float
类型的舍入数字,对于所有其他类型,它将返回None
,我不确定这是否是有意的,但是我想您会希望返回其他类型的number
(至少int
吗?)。关于python - 如何覆盖默认的Python函数,例如round()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32822046/