1、局部变量
局部变量,就是在函数内部定义的变量;其作用范围是这个函数内部,即只能在这个函数中使用,在函数的外部是不能使用的;
因为其作用范围只是在自己的函数内部,所以不同的函数可以定义相同名字的局部变量
当函数调用时,局部变量被创建,当函数调用完成后这个变量就不能够使用了
# 定义一个函数 def my_func(a,b): num = a + b print(num) my_func(23,23) # 定义一个局部变量相同的第二个函数 def my_func2(a,b): num = a * b print(num) my_func2(33,2)
两个函数各自内部的变量num都可以在函数各自内部正常使用 :在函数内部定义的局部变量名可以和其他函数中的局部变量名相同 是不冲突的
2、全局变量
全局变量和局部变量的区别在于作用域,全局变量在整个py文件中声明,全局范围内可以使用;局部变量是在某个函数内部声明的,只能在函数内部使用,如果超出使用范围(函数外部),则会报错
当函数内出现局部变量和全局变量相同名字时,函数内部中的 变量名 = 数据 此时理解为定义了一个局部变量,而不是修改全局变量的值
# 全局变量 num = 1 # 函数 def num_func(): # 局部变量 num = 10 print('函数内部',num) num_func() print('函数外面',num)
======================================
运行结果:
函数内部 10
函数外面 1
函数内部如果使用一个变量 他先从函数内部找 如果有直接使用;函数内部没有找到 会到函数外面找(全局变量)
若一个全局变量在函数中使用,修改全局变量,需要声明,如下:
# 定义一个变量 num = 1 def my_func1(): # 标识这函数内部不是定义一个局部变量 其实是对全局变量的进行修改 global num # 对全局变量的值进行修改 num = 20 print("my_func1", num) my_func1() # 打印也是20 print("外面", num)
==============================================================
运行结果:
my_func1 20
外面 20
如果在函数中出现 global +全局变量的名字 ,那么这个函数中即使出现和全局变量名相同的变量名 = 数据 也理解为对全局变量进行修改,而不是定义局部变量;执行过后,全局变量值也会改变。
如果全局变量是列表类型,可以通过list的列表方法去对列表进行修改,并且可以不用global来声明,如下:
list_1 = [1,2,56,"list"] def changeList(): list_1.append("over") print(list_1) changeList() print(list_1)