以下代码:
def a
print "Function 'a' called\n"
99
end
print "a=", a, "\n"
产生
Function 'a' called
a=99
为什么function 'a' called
首先出现?我希望首先显示a=
。
答案 0 :(得分:11)
在将参数传递给方法之前,会对它们进行求值(以便您传递值)。评估函数a
的调用会产生打印"function 'a' called
的副作用。这就是它首先打印的原因。
答案 1 :(得分:8)
首先,定义方法a
;什么也没有印刷。
然后,当你到达最后一行时,print
的参数首先在该语句打印任何内容之前进行评估。第一个和最后一个参数是字符串文字。中间参数是对方法a
的调用,在返回99之前打印"Function 'a' called\n"
。
然后,启动所有这一切的print
语句最终准备打印,因为它的每个参数都已经过评估。
答案 2 :(得分:3)
首先,方法a
完全执行,包括print "Function 'a' called\n"
。只有在方法返回99
后,才能执行第print "a=", a, "\n"
行。
以这种方式思考:a
的返回值需要先了解才能在最后一行打印。
答案 3 :(得分:1)
声明
print "a=", a, "\n"
作为
处理print("a=", a(), "\n")
所以调用print
的所有参数必须在调用之前进行评估。这意味着首先调用a
。
如果声明要在调用a=
之前先输出a()
,则必须包含对print
的三次单独调用。