python函数详解_INDEX函数( 二 )

< num:print_line()i += 1print_lines(5)
复制
2. 函数计算 求三个数之和
def sum_num(a, b, c):return a + b + cresult = sum_num(1, 2, 3)print(result)# 6
复制
求三个数平均值
def average_num(a, b, c):sumResult = sum_num(a, b, c)return sumResult / 3result = average_num(1, 2, 3)print(result)# 2.0
复制
八. 变量作用域
变量作用域指的是变量生效的范围,主要分为两类:局部变量和全局变量 。
所谓局部变量是定义在函数体内部的变量,即只在函数体内部生效 。
def testA():a = 100print(a)testA()# 100print(a)# 报错:name 'a' is not defined
复制
变量a是定义在testA函数内部的变量,在函数外部访问则立即报错 。
局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量 。
全局变量:指的是在函数体内、外都能生效的变量 。
思考:如果有一个数据,在函数A和函数B中都要使用,该怎么办? 答:将这个数据存储在一个全局变量里面 。
# 定义全局变量aa = 100def testA():print(a)# 访问全局变量a,并打印变量a存储的数据def testB():print(a)# 访问全局变量a,并打印变量a存储的数据testA()# 100testB()# 100
复制
思考:testB函数需求修改变量a的值为200,如何修改程序?
a = 100def testA():print(a)def testB():a = 200print(a)testA()# 100testB()# 200print(f'全局变量a = {a}')# 全局变量a = 100
复制
思考:在testB函数内部的a = 200中的变量a是在修改全局变量a吗?
答:不是 。观察上述代码发现,15行得到a的数据是100,仍然是定义全局变量a时候的值,而没有返回
testB函数内部的200 。综上:testB函数内部的a = 200是定义了一个局部变量 。
思考:如何在函数体内部修改全局变量?
a = 100def testA():print(a)def testB():# global 关键字声明a是全局变量global aa = 200print(a)testA()# 100testB()# 200print(f'全局变量a = {a}')# 全局变量a = 200
复制
九. 多函数程序执行流程
一般在实际开发过程中,一个程序往往由多个函数(后面知识中会讲解类)组成,并且多个函数共享某些数据,如下所示:
# 1. 定义全局变量glo_num = 0def test1():global glo_num# 修改全局变量glo_num = 100def test2():# 调用test1函数中修改后的全局变量print(glo_num)# 2. 调用test1函数,执行函数内部代码:声明和修改全局变量test1()# 3. 调用test2函数,执行函数内部代码:打印test2()# 100
复制
def test1():return 50def test2(num):print(num)# 1. 保存函数test1的返回值result = test1()# 2.将函数返回值所在变量作为参数传递到test2函数test2(result)# 50
复制
十. 函数的返回值
思考:如果一个函数如些两个 (如下所示),程序如何执行?
def return_num():return 1return 2result = return_num()print(result)# 1
复制
答:只执行了第一个,原因是因为可以退出当前函数,导致下方的代码不执行 。
思考:如果一个函数要有多个返回值,该如何书写代码?
def return_num():return 1, 2result = return_num()print(result)# (1, 2)
复制
注意:
a, b写法,返回多个数据的时候,默认是元组类型 。后面可以连接列表、元组或字典,以返回多个值 。十一. 函数的参数 1. 位置参数
位置参数:调用函数时根据函数定义的参数位置来传递参数 。
def user_info(name, age, gender):print(f'您的名字是{name}, 年龄是{age}, 性别是{gender}')user_info('TOM', 20, '男')