python - 为什么 "printing"出现在 "returning"之前?

标签 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 文档中我能找到与我的问题相关的详细信息的正是我感兴趣的内容。

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

最佳答案

与标准输出无关,而是与打印值的时间有关。您的 f0 首先被调用,但它不打印任何内容。你的 f1 被称为 second,但它实际上打印了一些东西。

顶级 print() 调用不会打印任何东西,直到它评估了它的参数,这是按参数顺序执行的。因此,f0 被调用,除了返回 1 什么都不打印,f1 被调用并打印消息但返回 None . print 的参数值,即两个函数(1None)的返回值,然后按顺序打印。

tl;dr:打印和返回是不同的东西

关于python - 为什么 "printing"出现在 "returning"之前?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54521426/

相关文章:

python - 如何激活Python虚拟环境并同时执行脚本?

python - 有没有办法在 MultiIndex 列上应用函数?

python - 对象提取与构建

python - 使用 Django Admin 中的 UserProfile 字段过滤用户列表

Python 3 : How to sum results into a dictionary

python - Vagrant,Flask — 应用程序未在 10.10.10.10、127.0.0.1 上运行

python - 在 Python 中打印两个数字的数字连接

python - 未实现错误 : Learning rate schedule must override get_config

python - 调用列表中元素的析构函数

python - 为什么 v*v 在 python 中比 v**2 快