我试图找出下面python程序的输出。对我来说最令我困惑的程序部分是主print(c2.clown(c1.clown(2)))
中的print语句在这一行中究竟发生了什么?我对该计划结果的预测如下:
现在小丑。
从3
创建一个Bozo从4
创建一个Bozo小丑3
18
3 + 6 =返回9
小丑4 </ p>
32
4 + 8 =返回12
print(c2.clown(c1.clown(2))= 12 * 2 = 24 ????
但输出/答案是:
现在小丑。
创建一个Bozo:3
创建一个Bozo:4
小丑2
12
小丑8
64
16
class Bozo:
def __init__(self, value):
print("Create a Bozo from:", value)
self.value = 2 * value
def clown(self, x):
print("Clown", x)
print(x * self.value)
return x + self.value
def main():
print("Clowning around now.")
c1 = Bozo(3)
c2 = Bozo(4)
print(c2.clown(c1.clown(2)))
main()
答案 0 :(得分:1)
# c1.clown(2) works as :
def clown(self, x): #x=2, c1.value = 6
print("Clown", x) #print("Clown, 2")
print(x * self.value) #print(12) 12=6*2
return x + self.value #return 2+6=8
# c2.clown(8) works as :
def clown(self, x): #x=8, c1.value = 8
print("Clown", x) #print("Clown, 8")
print(x * self.value) #print(64) 64=8*8
return x + self.value #return 8+8=16
print(16)
答案 1 :(得分:1)
由内而外......
c1.clown(2)
在任何事情之前运行并返回。
它打印小丑2,然后打印2 * c1.value = 2 * 6 = 12
返回2 + c1.value = 2 + 6 = 8
,传递给c2.clown()
4 + 8
永远不会跑。它的8 + 8
因为小丑值乘以2