【发布时间】:2020-04-18 11:17:27
【问题描述】:
我在处理基本数学运算时遇到了一个有趣的意外行为,因此我编写了这个简短的、希望是非常解释性的代码。
from collections import namedtuple
P = namedtuple('P', 'x y')
# euclidean distance with missing parentheses before sqroot
dist = lambda p1, p2:(p1.x-p2.x)**2 + (p1.y-p2.y)**2 ** 0.5
# correct_dist = lambda p1, p2: ((p1.x-p2.x)**2 + (p1.y-p2.y)**2)**0.5
A = P(0, 0)
B = P(1, 1)
AB = dist(A, B)
print(AB, type(AB)) # returns complex?!
print(-1**2 -1**2 **0.5) # -2.0 (as expected since root not applied to the sum)
顺便说一句,这更多是为了理解目的(不是为了实际使用)。
请帮助我更好地理解这一点!
【问题讨论】:
标签: python python-3.x int operator-overloading complex-numbers