鱼C论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1751|回复: 2

[已解决]函数调用变量的问题:

[复制链接]
发表于 2017-5-21 17:13:49 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 自然水 于 2017-5-21 17:16 编辑
  1. a = 1
  2. def test():
  3.         a = 2
  4. print(a)
复制代码


结果为1

这个之前课程说过了: 为了防止对全局变量的干扰,就创建了一个同名局部变量,存储的内容镜像全局变量a的。

  1. a = []
  2. def test():
  3.         a =2
  4. print(a)
复制代码


结果为[]
原因同上.

但是如果是用 方法进行操作的时候,不用声明也可以调用全局中的a:

  1. a = []
  2. def test():
  3.         a.append(233)
  4.         print(a)
复制代码



>>> test()
[233]
>>> test()
[233, 233]
>>> test()
[233, 233, 233]
>>> a
[233, 233, 233]


为什么没有和之前的方式一样,去创建一个镜像a空列表,只在函数体内生效呢
最佳答案
2017-5-21 23:15:14
本帖最后由 yongxi 于 2017-5-21 23:16 编辑

a = 2  是对  a这个变量名字进行赋值

a.append(233) 是访问a这个变量所对应的列表,并进行添加

函数内部是可以访问全局变量所对应的对象并用其内置函数进行修改的。
不能改的是这个变量名字和对象之间的映射关系。
就是说 你不加global 就不能把a这个变量名字重新贴到其他对象上面去!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-5-21 17:18:13 | 显示全部楼层
本帖最后由 iVi 于 2017-5-21 17:25 编辑

应该是这样的吧, list是可变对象,每次调用函数如果改变了a的内容,则下次调用的时候内容就变了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-21 23:15:14 | 显示全部楼层    本楼为最佳答案   
本帖最后由 yongxi 于 2017-5-21 23:16 编辑

a = 2  是对  a这个变量名字进行赋值

a.append(233) 是访问a这个变量所对应的列表,并进行添加

函数内部是可以访问全局变量所对应的对象并用其内置函数进行修改的。
不能改的是这个变量名字和对象之间的映射关系。
就是说 你不加global 就不能把a这个变量名字重新贴到其他对象上面去!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-27 15:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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