我的代码:
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 文档中我能找到与我的问题相关的详细信息的正是我感兴趣的内容。
或者可能有人直接在这里解释(?)
请您参考如下方法:
与标准输出无关,而是与打印值的时间有关。您的 f0 首先被调用,但它不打印任何内容。你的 f1 被称为 second,但它实际上打印了一些东西。
顶级 print() 调用不会打印任何东西,直到它评估了它的参数,这是按参数顺序执行的。因此,f0 被调用,除了返回 1 什么都不打印,f1 被调用并打印消息但返回 None . print 的参数值,即两个函数(1 和 None)的返回值,然后按顺序打印。
tl;dr:打印和返回是不同的东西
