鱼C论坛

 找回密码
 立即注册
查看: 1552|回复: 9

[已解决]问题求助

[复制链接]
发表于 2021-1-20 22:51:21 | 显示全部楼层 |阅读模式

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

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

x
  1. def funlist(alist):
  2.     alist.append(1)
  3.     alist = [2, 3]

  4. l1 = [0]
  5. funlist(l1)
  6. print(l1)
复制代码



为什么我定义的函数中 alist = [2 ,3]  在下面使用时没有运行?
最后我print(l1) 不应该输出的结果是[2 ,3]吗?
最佳答案
2021-1-20 23:20:26
  1. def funlist(alist):
  2.     alist.append(1)
  3.     alist = [2, 3]
  4.     print(alist)  #你想要的那个列表只在局部可见

  5. l1 = [0]
  6. funlist(l1)
  7. print(l1)  #l1是全局的列表,传入函数运行后依旧存在
复制代码
  1. [2, 3]
  2. [0, 1]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-20 23:14:16 | 显示全部楼层
1. 运行了。
2. 不应该。
alist 是局部变量,函数运行结束就被销毁了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-20 23:17:06 | 显示全部楼层
°蓝鲤歌蓝 发表于 2021-1-20 23:14
1. 运行了。
2. 不应该。
alist 是局部变量,函数运行结束就被销毁了。

函数运行到哪一步才算结束    是运行完alist.qppend(1) 就结束了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-20 23:19:02 | 显示全部楼层
英俊男孩建坤 发表于 2021-1-20 23:17
函数运行到哪一步才算结束    是运行完alist.qppend(1) 就结束了吗?

整个运行完才算结束
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-20 23:20:26 | 显示全部楼层    本楼为最佳答案   
  1. def funlist(alist):
  2.     alist.append(1)
  3.     alist = [2, 3]
  4.     print(alist)  #你想要的那个列表只在局部可见

  5. l1 = [0]
  6. funlist(l1)
  7. print(l1)  #l1是全局的列表,传入函数运行后依旧存在
复制代码
  1. [2, 3]
  2. [0, 1]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-20 23:20:41 | 显示全部楼层
°蓝鲤歌蓝 发表于 2021-1-20 23:19
整个运行完才算结束

整个运行完才结束的话 也就是说运行的时候alist= 【2 ,3】 这个局部变量没有销毁   既然没有销毁最后print(l1)输出的结果不就应该是 [2 ,3] 吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-20 23:22:49 | 显示全部楼层

所以说 这就是一个优先级的问题    全局的优先级高于局部的优先级 ?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-20 23:25:29 | 显示全部楼层
英俊男孩建坤 发表于 2021-1-20 23:20
整个运行完才结束的话 也就是说运行的时候alist= 【2 ,3】 这个局部变量没有销毁   既然没有销毁最后pri ...

服了。
运行的时候是没有销毁啊,可是 print(l1) 是在 funlist(l1)  后面,那么程序运行到 print(l1) 的时候 funlist 已经运行完了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-20 23:26:14 | 显示全部楼层
英俊男孩建坤 发表于 2021-1-20 23:22
所以说 这就是一个优先级的问题    全局的优先级高于局部的优先级 ?

l1和alist是两个不同的变量,一个是全局变量,一个是局部变量,函数外部不能使用函数内的局部变量,只在函数内部有效。你print输出的是全局变量l1。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-20 23:27:39 | 显示全部楼层
英俊男孩建坤 发表于 2021-1-20 23:22
所以说 这就是一个优先级的问题    全局的优先级高于局部的优先级 ?

不是优先级啊,而且要说优先级:
在局部:局部变量>全局
在全局:就没局部哪儿来的比较。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 19:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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