如果是可变类型可以执行修改变量的值,
2、如果全局变量是不可变类型,如果想要在函数中修改不可变类型,其实本质上是修改不可变类型的全局变量的引用,加上global 就可以修改不可变变量的引用。
到此,对于全局变量做一个小结:
A、在函数外边定义的变量叫做全局变量
B、全局变量能够在所有的函数中进行访问
C、如果在函数中修改全局变量,那么就需要使用global进行声明,否则出错
D、如果全局变量的名字和局部变量的名字相同,那么使用的是局部变量的,小技巧强龙不压地头蛇
以上就是关于全局变量和局部变量的所有问题以及需要注意的点。在这里我们在做一个总结。
在函数中不使用global声明全局变量时不能修改全局变量的本质是不能修改全局变量的指向,即不能将全局变量指向新的数据。
对于不可变类型的全局变量来说,因其指向的数据不能修改,所以不使用global时无法修改全局变量。
对于可变类型的全局变量来说,因其指向的数据可以修改,所以不使用global时也可修改全局变量。
可变类型:值可以修改(内存地址不变但是所保存的值变化了),引用可以修改(变量的内存地址变化了)
不可变类型:值不可以修改,可以修改变量的引用(=赋值号)。
在函数里面修改全局变量:
1、如果全局变量是可变类型:所以在函数里面任意修改(值,引用)
2、如果全局变量是不可变类型:在函数里面不能修改值,也不能修改引用,除非加上global 才能修改引用。
第一行就声明了ls = ['car', 'truck'],ls已经是一个全局变量了,所以在函数中可以直接调用ls对象的方法。你写的程序问题在于没有声明z,而不是没有声明global n。
这段日子迷惘又黑暗,撑过去了会有下一个黑暗的日子等着你。
哈哈哈哈彼此彼此哈哈哈
你把n的赋值放到最开头试试,应该就不会报错了