python 全局变量 global 的使用方法

发布于 2021-09-16 20:22:28

python 全局变量 global 的使用方法?
在赋值之前引用局部变量,是什么意思?
UnboundLocalError: local variable 'list' referenced before assignment 错误是指?

查看更多

浏览量
3076
3 个回答
猫哥
猫哥 项目组成员 2021-09-16
希望我的回答能对你有所帮助
x = 5
def changex():
    if x > 5:
        x = 6
    return x

这种使用也是会报赋值前引用的错误的,原因应该就是在x=6赋值前进行了 x > 5的引用操作,所以报错。

猫哥
猫哥 项目组成员 2021-09-16
希望我的回答能对你有所帮助

这些问题都涉及一个概念:局部变量和全局变量
和很多程序语言类似,局部变量只在函数内部或特定变量作用域里起作用,而全局变量则在所有地方起作用。

在python中如果定于了局部变量,将不在使用全局变量,属于就近原则的模式。

当一个变量的值自身发生变化的时候,它是被当做一个局部变量看待的,而这个时候如果没在局部作用域内定义变量,就会报“在赋值之前引用局部变量”的异常,

x = 5
y = 10
def changex():
    x = x + 1
    z = y + 1
    reurn x,z

虽然有全局变量x,但是在函数内部x值发送了变化,他将已局部变量来使用,而在函数内没有x的定义,所有报错,对应y只是引用了并没赋值变动y本身的值,这时在内部没有找到定义,会向外查找,找到全局变量y,所以结果就是:

x 爆错
z 11

如果要是x能使用全局变量中的x,就用到了global关键字,修改代码

x = 5
def changex():
    global x
    x = x + 1
    return x
返回 6
猫哥
猫哥 项目组成员 2021-09-17
希望我的回答能对你有所帮助

在函数内部,字典、列表可以改变函数外部的值,但是数值不行,如果也想要改变,需要用到global关键字

x = {'num':5}
y = [1,2]
z = 7
def change():
    global z
    x['num'] = 6
    y.append(3)
    z = 9
change()
print(x,y,z)
>>>{'num': 6} [1, 2, 3] 9

学习
记录

发布
问题

分享
好友

手机
浏览

扫码手机浏览