为什么在“返回”之前进行“打印”?

时间:2019-02-04 17:34:56

标签: python python-3.x

我的代码:

def f0():
    return 1

def f1():
    print("I don't deserve to be first :(")

print(f0(), f1())

预期输出:

1 I don't deserve to be first :(
None

实际输出:

I don't deserve to be first :(
1 None

我认为它必须采取默认行为sys.__stdout__

在Python文档中的确切位置,我可以找到与我的问题有关的细节是我感兴趣的东西。

或者可能有人在这里直接解释(?)

1 个答案:

答案 0 :(得分:7)

与stdout无关,而与何时打印值无关。您的f0首先被调用,但它不会打印任何内容。您的f1被称为第二,但是它实际上会打印出一些东西。

顶级print()调用在评估完参数之前不会打印任何内容(按参数顺序执行)。因此,将调用f0,除了返回1之外什么也不打印,调用f1并打印消息但返回None。然后依次打印print的参数值,即两个函数(1None)的返回值。

tl; dr:打印和退货是不同的

相关问题