鱼C论坛

 找回密码
 立即注册
查看: 2162|回复: 2

[已解决]关于全局变量的问题

[复制链接]
发表于 2020-2-15 14:53:33 | 显示全部楼层 |阅读模式

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

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

x
下面的代码里全局变量m的值为什么经过函数mima()后变了,不再是空字典?函数里应该不能改变全局变量的值呀
m={}
def mima():
    a=input("指令:")
    if a=='n':
        b=input("名字:")
        c=input('密码:')
        m[b]=c
        print("设置成功")
    elif a=='e':
        b=input("名字:")
        c=input('密码:')
        if m[b]==c:
            print('欢迎')
        else:
            print("错")

mima()
print(m)
最佳答案
2020-2-15 15:33:37
全局变量在函数内部使用,如果没有用globa声明,是无法修改的。如果是基础类型,传递的是值,因此值无法修改。但如果传递的是对象(列表、字典、或自定义类型对象),则传递的是地址,该地址无法修改,即无法修改为指向另外的对象,但地址内的各变量仍然是可以修改的。
详情参见python 值传递 引用传递 全局变量共享, 深拷贝,浅拷贝
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-15 15:08:46 | 显示全部楼层
只是不能直接修改。像在函数中执行 m += {'1': '2'} 才是错的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-15 15:33:37 | 显示全部楼层    本楼为最佳答案   
全局变量在函数内部使用,如果没有用globa声明,是无法修改的。如果是基础类型,传递的是值,因此值无法修改。但如果传递的是对象(列表、字典、或自定义类型对象),则传递的是地址,该地址无法修改,即无法修改为指向另外的对象,但地址内的各变量仍然是可以修改的。
详情参见python 值传递 引用传递 全局变量共享, 深拷贝,浅拷贝
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-3 05:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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