我的代码:
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文档中的确切位置,我可以找到与我的问题有关的细节是我感兴趣的东西。
或者可能有人在这里直接解释(?)
答案 0 :(得分:7)
与stdout无关,而与何时打印值无关。您的f0
首先被调用,但它不会打印任何内容。您的f1
被称为第二,但是它实际上会打印出一些东西。
顶级print()
调用在评估完参数之前不会打印任何内容(按参数顺序执行)。因此,将调用f0
,除了返回1
之外什么也不打印,调用f1
并打印消息但返回None
。然后依次打印print
的参数值,即两个函数(1
和None
)的返回值。
tl; dr:打印和退货是不同的