python全局变量和局部变量有什么区别



一、概念


全局变量:在第一层级,作用于整个代码块


局部变量:作用于所在函数域,局部变量变成全局变量需声明global(不建议使用,不便于复杂程序调试)


二、全局变量与局部变量最大的区别


python中全局变量和局部变量的最大区别在于局部变量只能通过函数去访问,而全局变量可以直接访问。


三、实例


1、直接在函数中调用全局变量的值


代码:


输出结果:

k1 = 10

k2 = 10


2、修改全局变量的值


【1】修改不可变数据类型(字符串、数字、元组)的全局变量


字符串相关代码:



输出结果:



数字相关代码:



输出结果:



元组相关代码:



输出结果:


在函数中修改不可变数据类型(字符串、数字、元组)的全局变量,会报错。


【2】修改可变数据类型(列表、集合、字典)的全局变量


列表相关代码:



输出结果:



集合相关代码:



输出结果:



字典相关代码:



输出结果:



在函数中修改可变数据类型(列表、集合、字典)的全局变量,可以修改

3、函数体内调用与全局变量同名的局部变量


【情况1】


输出结果:


m1: 5

m2: 10


在函数体内,定义了一个局部变量,这个局部变量覆盖住了全局变量。

【情况2】



输出结果:



原因:在未被赋值之前引用的错误。因为在函数的内部,解释器探测到var被重新赋值了,所以var成为了局部变量,但是在没有被赋值之前就想使用var,便会出现这个错误。


3、使用global关键字

代码



输出结果:


m: 10

m1: 5

m2: 5


global第一次是只能定义不能赋值的;

global需要在函数内部声明,若在函数外声明,则函数依然无法操作x

python全局变量和局部变量有什么区别