Python函数二

函数2

目标:

  • 变量作用域
  • 多函数程序执行流程
  • 函数的返回值
  • 函数的参数
  • 拆包和交换两个变量的值
  • 引用
  • 可变和不可变类型

一、变量作用域

变量的作用域指的是变量生效的范围,主要分为两类:局部变量全局变量

  • 局部变量

所谓局部变量是定义在函数体内的部的变量,即只在函数体内部生效

def testA():
	a=100
	print(a)
testA()#100
print(a)# 报错:name 'a' is not defined

变量a是定义在testA函数内部的变量,在函数外部访问则立即报错

局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量

  • 全局变量

所谓全局变量,指的是在函数体内,外都能生效的变量

思考:如果有一个数据,在函数A和函数B中都要使用,该怎么办?

答:将这个数据存储在一个全局变量里面

#定义全局变量a
a=100
def testA():
	print(a)
# 	访问全局变量a,并打印变量a存储的数据

def testB():
	print(a)#访问全局变量a,并打印变量a存储的数据

testA()#100
testB()#100

思考: testB 函数需求修改变量a的值为200,如何修改程序?

#定义全局变量a
a=100
def testA():
	print(a)
# 	访问全局变量a,并打印变量a存储的数据

def testB():
	a=200
	print(a)#访问全局变量a,并打印变量a存储的数据

testA()#100
testB()#200
print(f'全局变量a={a}') #全局变量a=100

image-20200912190727906

思考:在 testB 函数内部的 a = 200 中的变量a是在修改全局变量 a 吗?
答:不是。观察上述代码发现,15行得到a的数据是100,仍然是定义全局变量a时候的值,而没有返回testB 函数内部的200。综上: testB 函数内部的 a = 200 是定义了一个局部变量。
思考:如何在函数体内部修改全局变量?

#定义全局变量a
a=100
def testA():
	print(a)
# 	访问全局变量a,并打印变量a存储的数据

def testB():
	# global 关键字声明a是全局变量
	global a
	a=200
	print(a)

testA()#100
testB()#200
print(f'全局变量a={a}') #全局变量a=200

image-20200912191343093

posted @ 2020-09-12 19:15  秋弦  阅读(83)  评论(0编辑  收藏  举报