求助一个全局变量的问题
ls = ['F', 'f']def fun(a):
ls = []
ls.append(a)
return
fun('C')
print(ls)
请教一下这种情况为什么这个程序不会报错呢,不是属于函数内部修改了全局变量然后出现UnboundLocalError吗?是不是和ls是列表性质有关? 在一个 python 程序中,直接访问一个变量,会从内到外依次访问所有的作用域直到找到,所以局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。 本帖最后由 jackz007 于 2020-12-28 02:03 编辑
全局变量在函数内不用 global 关键字进行声明就不能更改,指的应该是不能用等号赋值,像列表、字典、集合等属于可变对象,可以通过对象的方法进行修改,这种修改并没有直接用等号进行赋值,所以,是被允许的。 不会报错呀,这相当于你在函数定义了一个ls的局部变量,函数执行完就被释放了。作用域只有在函数内,所以它跟外面的ls是两个东西。 你有赋值语句,就说明你已经声明了,出现UnboundLocalError这个错误是说你没有赋值就用比如a += 1,这时候需要先给a赋值 函数内直接用=赋值一个变量时相当于申明了一个局部变量,跟函数外是隔离的
页:
[1]