10个最难的 Python 问题!

本文列举并解析了Python编程中10个容易让人困惑的问题,涉及round()函数的四舍五入规则、实例属性查找顺序、负零与零的处理、lazy operators的行为、负数重复操作、一切都是对象、sum()函数的使用、函数延迟执行特性、属性访问的意外结果以及浮点数精度引发的错误。这些问题揭示了Python语言的一些独特之处和需要注意的陷阱。
摘要由CSDN通过智能技术生成

01、round() 函数

你认为以下代码的结果是什么:

print(round(9/2))
print(round(7/2))
print(round(3/2))

答案:4、4、2

为什么 print(round(7/2)) 输出4 而不是 3,或者为什么 print(round(9/2)) 输出 4 而不是 5?

这是因为,在 python 中,round 函数实现了银行式的四舍五入,其中所有的半值都被四舍五入到最接近的偶数。

02、实例

猜猜输出?

class A:
    ans = 9   
    def __init__(self):
        self.answer = 10
        self.__add__ = lambda x, y: x.answer + y    

    def __add__(self, y):
        return self.answer - y
print(A() + 4)

答案:6

现在,你一定想知道我们是如何得到 6 的!这是因为,为了解析属性名称,Python 首先在实例级别搜索它,然后,在类级别搜索,然后在父类中搜索。这适用于除 dunder 方法之外的所有内容。在搜索它们时,Python 会跳过实例检查并直接在类中搜索。

因此 (10–4) = 6 就是答案。

03、数学不起作用的地方

猜猜这种情况下的输出?

print(max(-0.0, 0.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值