老师,请问为什么列表没有被更改呢?

老师,请问为什么列表没有被更改呢?

id_ = [1, 2]

def zz():

    id_ = [1, 2, 3]

zz()

print(id_)


结果:[1, 2]

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
时间, 2022-06-09 14:33:07

同学,你好!同学输出的函数外的全局变量id_,函数中的id_是局部变量,因此没有改变列表的值

https://img1.sycdn.imooc.com//climg/62a1935709b8838402790288.jpg

可以在函数中使用global修改全局变量的值

https://img1.sycdn.imooc.com//climg/62a1940409e5c7bb03150413.jpg

祝学习愉快!

  • 提问者 呆呆桃 #1

    列表,字典是可更改的数据类型,不是不用global就可以更改吗



    2022-06-10 10:06:24
  • 好帮手慕凡 回复 提问者 呆呆桃 #2

    同学,你好!

    1、[1, 2]是一个列表对象(是被分配的一块内存,存储了列表的值);

    2、id_是变量名(id_ = [1, 2]引用了[1, 2]对象,形成了从变量名到对象的指针);

    3、数据类型是属于对象的,而非变量名;

    全局变量id_引用的对象是[1, 2],zz()函数中的局部变量id_引用的是对象[1, 2, 3],(一个是全局变量id_,一个是局部变量id_,引用的对象不同)所以列表并没有被修改,列表,字典是可更改的数据类型,同学可以不用global直接在zz( )函数中修改id_的值,如下图:

    https://img1.sycdn.imooc.com//climg/62a2b1370954718f04040314.jpg

    祝学习愉快~

    2022-06-10 10:53:35
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师