今天的我更强了 发表于 2020-6-5 15:11:33

局部变量

ass={}
def new():
    pro='请输入用户名:'
    while True:
      name=input(pro)
      if name in ass:
            pro='此用户名已存在,请重新输入:'
            continue
      else:
            break
    pw=input('请输入密码:')
    ass=pw
    print('注册成功,赶紧登录试一下')

这个函数对函数外的ass字典进行了修改,这是因为字典并不属于变量,所以不受 在未使用global 的前提下,局部变量不能修改全局变量的约束嘛?

今天的我更强了 发表于 2020-6-5 15:12:05

{:10_257:}{:10_254:}

qiuyouzhi 发表于 2020-6-5 15:13:27

今天的我更强了 发表于 2020-6-5 15:12


字典,列表等数据类型都没有作用域之分。

heidern0612 发表于 2020-6-5 15:18:30

可变类型可以不用global。

Twilight6 发表于 2020-6-5 15:19:11

本帖最后由 Twilight6 于 2020-6-5 15:23 编辑

可变容器类型的值不对容器本身进行改变,只对容器内部的元素进行变化是允许的

列表,字典等都是可变容器类型的值

对本身进行改变就会触发屏蔽效果如重新赋值:
ass = {'test':'帅'}


屏蔽机制:若在局部创建了个与全局变量同名变量,会触发屏蔽效果
在函数内部创建个与全局变量同名的局部变量,暂时屏蔽外部的全局变量
但是只要出了这个函数,这个局部变量就会消失变会原来的全局变量

今天的我更强了 发表于 2020-6-5 16:42:03

qiuyouzhi 发表于 2020-6-5 15:13
字典,列表等数据类型都没有作用域之分。

谢谢
页: [1]
查看完整版本: 局部变量