鱼C论坛

 找回密码
 立即注册
查看: 957|回复: 4

函数调用

[复制链接]
发表于 2019-7-21 18:55:14 | 显示全部楼层 |阅读模式

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

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

x
def f(a, L=[]):
        L.append(a)
        return L

f(f(1))
为何出来的结果是[1,[...]]而不是[1,1]
[1,[...]] = [1,[1,[1,[...]]]]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-7-21 19:00:50 | 显示全部楼层
这是函数嵌套,你是把 f(1) 的结果 作为参数a 传给了 f(a,L=[])
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-21 19:02:11 | 显示全部楼层
本帖最后由 s627995568 于 2019-7-21 19:13 编辑

如果想要得到你想要的结果 用  f(1,f(1))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-21 21:08:24 | 显示全部楼层
f(f(1))
f(L.append(1))//此时L = [1]
L.append(L) //函数返回的是L 相当于 L=[1].append([1])=[1,[1]] 简单来说就是第二次调用函数是给L添加第二个元素[1]
关键的地方是你的返回值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-22 11:04:30 | 显示全部楼层
我拿你代码试了一下
发现问题很大,我知道为什么会递归append,但是不知道内因,需要大佬来解释了
f(1)返回[1]没错,但是f(f(1))的时候,却是同一个[1]在循环的append,以至于那个结果
为什么外层的f()运行时候第二个参数不是默认的空列表[],不知道了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-17 03:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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