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()):
- 首先执行作为参数的
my_function(),函数内部先打印2 a,再返回字符串"a"; - 等两个参数(
"1"和函数返回值"a")都准备完成后,才会触发print函数自身的逻辑,打印出1 a。
而调用方式一是两次独立的print调用:
- 先执行第一个
print("1"),直接输出1; - 再执行第二个
print(my_function()),此时才会先运行my_function()输出2 a,拿到返回值后打印a。
这就是两段代码输出顺序不同的根本原因。
内容的提问来源于stack exchange,提问作者user3291057
相关产品推荐
相关产品推荐

