Python变量
局部变量
定义:
在函数内部定义的变量
#定义:在函数内部声明的变量
def test():
a = 10
print(a)
#调用函数
test()
def test2():
a = 20
print(a)
#调用函数
# test2()
"""
总结:在函数里面声明的变量-->局部变量
只能作用于当前这个函数,在其他函数里面不能使用
在多个函数里面,可以声明同名的变量,它们彼此之间不受影响
为了临时(临时工)保存数据在函数里面定义局部变量
作用:临时保存数据
"""
全局变量
#定义:在函数外面声明的变量,能够在所有函数里面使用,全局变量必须在所有使用函数的最上方
a = 100
def test3():
print(a)
#调用函数
test3()
def test():
print(a)
#调用函数
test()
def test2():
print(a)
#调用函数
test2()
全局变量和局部变量名字相同的问题
a = 300 #声明一个全局变量
def test():
a = 100 #声明一个局部变量
print(a)
a = 200
print(a)
#调用函数
test()
def test2():
print(a)
#调用函数
test2()
"""
总结:就近原则
先找局部->全局->报错
"""
修改全局变量
global关键字
格式:
global 需要修改变量名
#修改全局变量
#语法格式:global 需要修改的变量名
a = 0
def test():
global a
a = 100
print(a)
#调用函数
test()
# print(a)
def test2():
print(a)
#调用函数
test2()
函数使用外层的变量
nonlocal关键字
格式:
nonlocal 外层函数变量名
def test():
num = 2
def test2():
nonlocal num
num *= 2
print(num)
return test2()
test()
局部变量和全局变量的区别
"""
区别:本质上作用域
在函数内部声明变量-->局部变量
只能作用于当前这个函数,不能在其他函数里面使用
在函数外部声明的变量->全局变量
可以在所有函数里面使用,如果想要修改全局变量
global 需要修改的变量名
"""
def get_wendu():
wendu = 20
return wendu
def print_wendu(a):
print(a)
#调用函数
# result = get_wendu()
# print(result)
# print_wendu(result)
wendu = 0
def get_wendu2():
global wendu
wendu = 25
print(wendu)
def print_wendu2():
print(wendu)
#调用函数
get_wendu2()
print_wendu2()
可变类型的全局变量
可变类型: 列表 字典 集合
当不可变的数据类型作为全局变量,需要用global声明,进行修改
可变的数据类型 不一定
#以列表为例
li = []
def test(fun):
fun.append(10)
print(fun)
#调用函数
# test(li) #调用test函数把li列表作为参数传递
# print(li)
li2 = [1,2]
def test2(a):
a += a
print(a)
# test2(li2) #调用test2函数把li2列表作为参数传递
# print(li2)
li3 = [0,1,2,3]
def test3():
global li3
li3 = [99,100]
print(li3)
#调用函数
test3()
print(li3)
不可变类型的全局变量
不可变类型: 数字 元祖 字符串
#以数字为例
a = 0
def test():
# a = 2
# a += 1
# print(a)
global a
a = 4
print(a)
#调用函数
test()
print(a)