使用print函数调用作为函数参数的执行顺序混淆

时间:2015-12-13 12:51:37

标签: python python-3.x

当我跑步时

def func(one,two):
    print(one)
    two

func("1",print("hi"))
func("2",print("hello"))

在解释器会话中,我得到输出:

hi
1
hello
2 

代码不应该从上到下运行吗?我期望的输出是:

1
hi
2
hello

2 个答案:

答案 0 :(得分:4)

print语句返回None,您将作为第二个参数传递给您的函数。

致电func("1", print("hi"))时会发生什么,print("hi")会被执行,因此您会先看hi。 之后,调用func("1", None),这将执行

print("1")
None

,您将看到的唯一输出是1,因为声明

None

什么也没做。

答案 1 :(得分:2)

调用函数时,首先计算参数。因此,“hi”已经打印出来。在计算参数时,会将它们传递给函数,并调用函数打印“1”。