You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python含print与return的函数调用输出差异问题求助

Python函数调用与print参数执行顺序问题

问题描述

存在如下Python函数定义:

def my_function():
    myvar = "a"
    print("2", myvar)
    return myvar

两段调用代码的输出结果不一致:

  • 调用方式一:
print("1")
print(my_function())

输出:

1
2 a
a
  • 调用方式二:
print("1", my_function())

输出:

2 a
1 a

原本预期第二种调用会先打印"1",再执行函数内部的print语句,实际结果相反。

原因解释

问题核心在于Python的函数参数求值顺序:
当调用任意函数(包括print)时,Python会先完成所有传入参数的计算与执行,之后才会执行函数本身的逻辑。

针对调用方式二的print("1", my_function()):

  1. 首先执行作为参数的my_function(),函数内部先打印2 a,再返回字符串"a";
  2. 等两个参数("1"和函数返回值"a")都准备完成后,才会触发print函数自身的逻辑,打印出1 a。

而调用方式一是两次独立的print调用:

  1. 先执行第一个print("1"),直接输出1;
  2. 再执行第二个print(my_function()),此时才会先运行my_function()输出2 a,拿到返回值后打印a。

这就是两段代码输出顺序不同的根本原因。

内容的提问来源于stack exchange,提问作者user3291057

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:35:39