全局变量和局部变量
在函数中定义的称之为局部变量,只在函数内部生效
在函数外部的变量,称之为全局变量,全部变量的作用域从他定义开始到整个程序
例如:
def hanshu(a):
a+=3
print('函数内部',a)
x=10
hanshu(x)
print('x=',x)
结果:
x= 10
函数内部 13
x= 10*
其中a=3是函数变量
a=10是全局变量
全局变量的规则
1.全局变量是不可变的类型(这里的类型是整形,字符串)函数无法修改函数变量的值
例如:
def hanshu(a):
a+=3
print('函数内部',a)
x=10
hanshu(x)
print('x=',x)
***结果:
x= 10
函数内部 13
x= 10`
开始分析
其中x=10 是全局变量,改变,所以print(‘x=’,x)输入10
2.全局变量是个修改数据类型(这里的数据类型指的是列表,字典),函数可以修改全局变量的值
例如:
def hanshu(a):
a.append(3)
x=[1,2]
hanshu(x)
print(x)
结果:
[1, 2, 3]
开始分析
调用了函数a.append 加入x列表中所以结果而如上
练习:
1.
def hanshu(a=[]):
a.append(10)
print(a)
hanshu()
hanshu()
结果:
[10]
[10, 10]
开始分析
首先调用了函数一次a.append加入了列表
所以第一次输入[10]
然后又调用了一次在[10]的基础上又添加了一个10
所以结果:[10,10]
2.
def hanshu(a=[]):
a.append(10)
print(a)
hanshu()#函数1
b=[8]
hanshu(b)#函数2
hanshu()#函数3
结果:
[10]
[8, 10]
[10, 10]
开始分析
首先我们调用了函数1输出结果[10]
然后我们调用了函数2在这里[8,10]实参对形参没有任何的痕迹b=[8]是全局变量所以[8,10]
第三个函数在函数1 的基础上有添加了10所以[10,10]
def hanshu(a):
a=[1,2]
b=[3,4]
hanshu(b)
print(b)
结果:
[3, 4]
开始分析:
函数中的a=[1,2]是新的赋值,重新定义了a,b=[3,4]是全局变量,所以结果[3, 4]