gpt4 book ai didi

python - 如何覆盖像 round() 这样的默认 python 函数?

转载 作者:太空狗 更新时间:2023-10-30 00:21:53 27 4
gpt4 key购买 nike

我想覆盖 python 的默认 round() 函数,因为我必须将 round() 函数的结果转换为整数。默认情况下 round() 返回浮点值。下面给出的代码返回错误消息。

运行时错误:调用 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 - 如何覆盖像 round() 这样的默认 python 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32822046/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com