【发布时间】:2023-03-30 02:46:01
【问题描述】:
在 python 3 中这有效:
Celsius = [39.2, 45.2, 37.3, 37.8, 89]
Fahrenheit = map(lambda x: ((float(9/5))*x + 32).__round__(3), Celsius)
print(list(Fahrenheit))
[102.56, 113.36, 99.14, 100.04, 192.2]
但是,这不起作用,为什么?:
Fahrenheit = map(lambda x: ((float(9/5))*x + 32).round(3), Celsius)
另外,现在很多 python 脚本不使用这种旧格式__round__,我认为是为了让脚本看起来更干净。还有其他核心原因吗?
【问题讨论】:
-
__round__是一个钩子方法。使用round()函数,它会根据需要使用钩子方法:round((float(9/5))*x + 32), 3)。但是,float(9/5)是非常错误的值,你想要9.0/5。 -
但是,为什么
round(2)不能与 float 一起使用。这真是令人困惑。 -
因为浮点数没有
.round方法...?这有什么不清楚的地方? -
我知道花车没有 .round 方法——错误信息就是这么说的。但是,令人困惑的是它的工作方式只是改变了。我想我现在很清楚了。
-
@everestial007:
round()适用于所有数字类型,而不仅仅是浮点数,这就是为什么它是一个函数。像len()和str()等。Python在多种类型可以支持一个操作的情况下更喜欢一个函数,以便为您提供一个新类型可以适应的通用API。
标签: python function python-3.x lambda rounding