【发布时间】:2018-12-29 07:15:00
【问题描述】:
我正在测试一些东西,我写这段代码是为了举例。我觉得我得到的输出很奇怪。我希望函数调用一个接一个地执行,但根据这段代码,两个打印语句都在之后执行彼此,然后将返回值一起打印。这是什么意思,这种情况下的代码流程是什么?
global num
num=5
def demo(num):
num+=1
print("hi")
return(num)
print(demo(num),demo(num))
输出-
hi
hi
6 6
【问题讨论】:
-
@Patrick Haugh 这不是您标记的问题的副本。在这个问题中,这仅仅是因为最后一个
print函数需要对其所有参数进行评估,然后才能输出任何内容,因此对demo()的两个调用都必须先完成,因此两个his 都在数字之前打印. -
@blhsing 函数调用是否从左到右计算?
-
函数中的
num不是global num。它是同名的本地参数。您正在修改全局num的本地副本。要查看您想查看的内容,请从函数定义中删除形参并将global num移动到函数定义中。 -
您期待什么输出?我认为我已经猜到你的困惑在哪里,并写了一个答案来解释它,但我可能是错的。
标签: python python-3.x