目录
一、变量的作用
变量的作用域是变量生效的范围,主要分为:全局变量和全局变量。
•局部变量
所谓局部变量是指在还能输内部的变量,即只在内部生效。
def test_a():
a=100
print(a)
test_a() #输出100
print(a) #报错:name ‘a’ is not defined
变量a是定义在函数内部的变量,在外不单独引用访问就会出错
局部变量的作用:在函数体内部临时保存变量,即当函数调用完成后则销毁局部变量。
•全局变量
所谓全局变量,指的是在函数体内、外都能生效的变量。
思考:有一个数据在两个函数A、B中都要使用,怎么办?
答:将数据存储在全局变量里。
a=100
def A()
print(a)
def B()
print(a)
A() #输出100
B() #输出100
思考:如果B函数需求修改变量为200,如何修改程序?
a=100
def A()
print(a)
def B()
a=200
print(a)
A() #输出100
B() #输出200
print(f'全局变量a={a}') #输出全局变量a=100
思考:在B函数中修改全局变量该如何修改?(即在B中定义的a=200是修改全局变量嘛?)
答:不是。观察以上代码可以发现上述代码块最后一行得到的a=100,仍然是之前定义的全局变量的值,而没有返回B()函数的200。综上:B()函数内部的a=200是定义的局部变量。
思考:如何修改全局变量?
a=100
def A()
print(a)
def B()
#global关键字声明a是全局变量
global a
a=200
print(a)
A() #输出200
B() #输出200
print(f'全局变量a={a}') #输出全局变量a=200
二、多函数程序执行流程
一般在开发中,一个程序由多个函数组成,并且多个函数共享某些数据:
•公用全局变量
#1.定义全局变量
a=100
def test1():
global a
#修改全局变量
a =200
def test2():
#调用test1中的全局变量
print(a)
#2.调用test1函数,执行函数内部代码:修改全局变量
test1()
#3.调用test2函数,执行代码:打印
test2()
•返回值作为参数传递
def test1():
return 50
def test2(num):
pritn(num)
#1.保存函数test1的返回值
result=test1()
#2.将函数返回值所在变量作为参数传递给test2函数
test2(result) #输出50
三、函数的返回值
思考:如果一个函数有多个返回值,程序如何执行?
def re_num():
return 1
return 2
result=re_num()
print(result) #输出1
答:指执行第一个return,因为return可以退出当前函数,所以return下面的代码不执行。
问题:如果一个函数有多个返回值该如何书写?
def re_num():
return 1,2
result=re_num()
print(result) #输出(1,2)
注意:1.return1,2这种写法,返回多个数据时,输出的是元祖类型。
2.return后面合一接列表、元祖、或字典,以返回多个值。
四、拆包和交换变量值
4.1 拆包
拆包:元祖
def num1():
return 10,20
n1,n2=num1()
print(n1) #输出10
print(n2) #输出20
拆包:字典
dict1={'name':'Tom','age':10}
a,b=dict1
print(a) #输出name
print(b) #输出age
print(dict[a]) #输出Tom
print(dict[b]) #输出10
4.2 交换变量值
提问:有两个变量a=10,b=20,交换连个变量的值
方法一
a=10
b=20
c=0
c=a
a=b
b=c
print(a) #输出20
print(b) #输出10
方法二
a,b=10,20
a,b=b,a
print(a) #输出20
print(b) #输出10