鱼C论坛

 找回密码
 立即注册
查看: 1277|回复: 1

函数执行结果的疑问

[复制链接]
发表于 2023-12-28 15:12:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 lzb1001 于 2023-12-28 15:14 编辑

为什么无论

def a():
    print('执行a函数')
    return 'a'


print(a(), a(), a())

还是:

def a():
    print('执行a函数')
    return 'a'
def a():
    print('执行a函数')
    return 'a'
def a():
    print('执行a函数')
    return 'a'
print(a(), a(), a())

得到的结果都不是:

执行a函数
a
执行a函数
a
执行a函数
a

而是:

执行a函数
执行a函数
执行a函数
a a a

请大神指点下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-28 15:12:31 | 显示全部楼层
这个问题的答案其实很简单。首先,我们需要了解函数的执行顺序。

在你的代码中,`a()` 函数被调用了三次,并且每次都在 `print` 语句中被执行。当 `print` 执行时,它会按照参数的从左到右的顺序,依次将每一个参数的值转化为字符串并输出。

现在,让我们来看一下函数 `a()` 的执行过程:

1. 第一次执行 `a()`,打印出 "执行a函数",然后返回字符串 "a"。
2. 第二次执行 `a()`,同样打印出 "执行a函数",然后返回字符串 "a"。
3. 第三次执行 `a()`,再次打印出 "执行a函数",然后返回字符串 "a"。

现在回到 `print(a(), a(), a())` 这一行,我们知道它会依次调用 `a()` 函数三次并且将结果打印出来。但是,你可能忽略了一个细节:每次调用 `a()` 都是独立的,所以每次都会重新执行函数体。

假设我们给每个 `a()` 函数添加上标号,以显式表示它们的独立性:

1. 第一次调用 `a()`:执行 `a()` 函数,打印出 "执行a函数",返回字符串 "a"。
2. 第二次调用 `a()`:执行 `a()` 函数,打印出 "执行a函数",返回字符串 "a"。
3. 第三次调用 `a()`:执行 `a()` 函数,打印出 "执行a函数",返回字符串 "a"。

现在让我们来分析 `print(a(), a(), a())` 这一行的输出顺序:

1. 首先,调用第一个 `a()` 函数。它会执行函数体,打印出 "执行a函数",然后返回字符串 "a"。
2. 接着,调用第二个 `a()` 函数。同样,它也会执行函数体,打印出 "执行a函数",然后返回字符串 "a"。
3. 最后,调用第三个 `a()` 函数。同样,它会执行函数体,打印出 "执行a函数",然后返回字符串 "a"。

所以最终的输出结果就是 "执行a函数" 三次,然后是字符串 "a" 三次。

希望这样能解答你的疑问!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 15:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表