文章目录
168_了解函数
目标
- 函数的作用
- 函数的使用步骤
- 函数的参数作用
- 函数的返回值作用
- 函数的说明文档
- 函数嵌套
一、函数的作用
需求:用户到ATM机取钱:
1.输入密码后显示“选择功能”界面
2.查询余额后显示“选择功能”界面
3.取2000钱后显示“选择功能”界面
特点:显示“选择功能”界面需要重复输出给用户,怎么实现?
函数就是将一段具有独立功能的代码块整合到一个整体并命名,在需要的位置调用这个名称即可完成对应的需求。
函数在开发过程中,可以更高效的实现代码重用。
169_函数的使用步骤
- 1.定义函数
def 函数名(参数):
代码1
代码2
… - 2.调用函数
函数名(参数)
注意:1.不同的需求,参数可有可无。
2.在Python中,函数必须先定义后使用。
170_快速体验函数
需求:复现ATM取钱功能。
#因为函数要先定义在调用,所以步骤2和3要在步骤1的上面书写
#2.确定选择功能界面:显示余额 存款 取款; #3.封装函数
def sel_func():
print('显示余额')
print('存款')
print('取款')
#1.搭建整体框架
"""
输入密码登录后显示功能;查询余额后显示功能;取完钱后显示功能;
"""
print('恭喜您登录成功')
#显示功能界面 #4.在需要的位置调用函数
sel_func()
print('您的余额是1000000')
#显示功能界面 #4.在需要的位置调用函数
sel_func()
print('取了100元钱')
#显示功能界面 #4.在需要的位置调用函数
sel_func()
运行结果:
171_函数的注意事项
先定义后调用函数的情况如下所示:
#1.使用一个函数 2.测试注意事项
#需求:一个函数:打印hello world
#info_print()
#定义函数
def info_print():
print('hello world')
#调用函数
info_print()
"""
结论:
1.函数要先定义后调用,如果先调用会报错
2.如果没有调用函数,函数里面的代码不会执行
3.函数执行流程****
当调用函数的时候,解释器回到定义函数的地方,去执行下方缩进的代码;当这些代码执行完后,会回到调用函数的地方继续向下执行
定义函数的时候,函数体内部缩进的代码并没有执行
"""
运行结果:
关于函数的重要结论如下所示:
1.函数要先定义后调用,如果先调用会报错
2.如果没有调用函数,函数里面的代码不会执行
3.函数执行流程
当调用函数的时候,解释器回到定义函数的地方,去执行下方缩进的代码;当这些代码执行完后,会回到调用函数的地方继续向下执行
定义函数的时候,函数体内部缩进的代码并没有执行**
先调用后定义函数的情况如下所示:
#1.使用一个函数 2.测试注意事项
#需求:一个函数:打印hello world
info_print()
#定义函数
def info_print():
print('hello world')
运行结果:
172_函数的参数的作用
思考:完成需求如下:一个函数完成两个数1和2的加法运算,如何书写程序?
#定义函数
def add_num1():
result = 1+2
print(result)
#调用函数
add_num1()
思考:上述add_num1函数只能完成数字1和2的加法运算,如果想要这个函数变得更灵活,可以计算任何用户指定的两个数字的和,如何书写程序?
分析:用户要在调用函数的时候指定具体数字,那么在定义函数的时候就需要接收用户指定的数字。函数调用时候指定的数字和定义函数时候接收的数字即是函数的参数。
#定义函数时同时定义了接收用户数据的参数a和b,a和b是形参
def add_num2(a,b):
result =a+b
print(result)
#调用函数时传入了真实的数据10和20,真实数据为实参
add_num2(10,20)
#1.函数:固定数据1 和 2 加法
def add_num1():
result =1+2
print(result)
add_num1()
#2.参数形式传入真实数据 做加法运算
def add_num2(a,b):
result =a+b
print(result)
add_num2(10,20)
add_num2(100,200)
运行结果:
传入参数个数和接收参数个数不一样的情况如下所示:
#1.函数:固定数据1 和 2 加法
def add_num1():
result =1+2
print(result)
add_num1()
#2.参数形式传入真实数据 做加法运算
def add_num2(a,b):
result =a+b
print(result)
add_num2(10,20)
add_num2(100,200)
add_num2(100)#报错,定义函数有2个参数,传入数据也要有2个参数才可以
运行结果:
173_体验函数返回值
函数的返回值作用
例如:我们去超市购物,比如买烟,给钱之后,是不是售货员会返回给我们烟这个商品。在函数中,如果需要返回结果给用户需要使用函数返回值。
def buy():
return '烟'
#使用变量保存函数返回值
goods =buy()
print(goods)
#定义一个函数:返回 烟
def buy():
return '烟'
goods =buy()
print(goods)
#return返回结果给函数调用的地方
运行结果:
174_return的特点
#定义一个函数:返回 烟
def buy():
return '烟'
print(ok)
#使用变量保存函数返回值
goods =buy()
print(goods)
#return返回结果给函数调用的地方
"""
return的作用:
1.负责函数返回值
2.退出当前函数:导致return下方的所有代码(函数体内部)不执行
"""
运行结果:
175_函数返回值的应用
需求:制作一个计算器,计算任意两数字之和,并保存结果。
#需求:制作计算器:计算任意两个数字的加法的结果,并返回结果
"""
1.定义函数:2个参数 和 return返回值
2.调用函数,传入2个真实数据--这里即有返回值结果,打印这个结果即可
"""
def sum_num(a,b):
return a+b
result = sum_num(1,2)
print(result)
运行结果:
176_函数的说明文档
思考:定义一个函数后,程序员如何书写程序能够快速提示这个函数的作用?
答:注释。
思考:如果代码多,我们是不是需要在很多代码中找到这个函数定义的位置才能看到注释?如果想更方便的查看函数的作用怎么办?
答:函数的说明文档。
函数的说明文档也叫函数的文档说明。
语法:定义函数的说明文档。
def 函数名(参数):
----说明文档的位置----
代码
------
- 查看函数的说明文档
help(函数名)
#help(len) #he说明lp函数作用,查看函数的说明文档(函数的解释说明的信息)
def sum_num(a,b):
"""求和函数"""
return a+b
help(sum_num)
运行结果:
函数说明文档的高级使用情况如下所示:
#函数说明文档的高级使用
def sum_num1(a,b):
"""
求和函数sum_num1
:param a: 参数1
:param b: 参数2
:return: 返回值
"""
return a+b
help(sum_num1)
运行结果:
177_函数的嵌套调用
函数嵌套调用:所谓函数嵌套调用指的是一个函数里面又调用了另外一个函数。
#两个函数 testA 和 testB ---在A函数里面嵌套调用B函数
#B函数
def testB():
print('B函数开始-----')
print('这是B函数')
print('B函数结束-----')
#A函数
def testA():
print('A函数开始-----')
#A函数里面嵌套调用B函数
testB()
print('A函数结束-----')
testA()
运行结果:
178_函数嵌套调用应用之打印一条横线图形
打印图形
1.打印一条横线。
#1.打印一条横线
def print_line():
print('-' * 20)
print_line()
运行结果:
179_函数嵌套调用应用之打印多条横线图形
2.打印多条横线。
#1.打印一条横线
def print_line():
print('-' * 90)
print('gaozhenyang是坏人 ' * 5)
#print_line()
#2.函数嵌套调用 实现多条横线
def print_lines(num):
i = 0
while i < num:
print_line()
i +=1
print_lines(5)
运行结果:
180_函数嵌套调用应用之求三个数之和
函数计算
1.求三个数之和。
#1.任意三个数之和
def sum_num(a,b,c):
return a+b+c
result = sum_num(1,2,3)
print(result)
运行结果:
181_函数嵌套调用应用之求三个数平均值
2.求三个数平均值。
#1.任意三个数之和
def sum_num(a,b,c):
return a+b+c
result = sum_num(1,2,3)
#print(result)
#2.任意三个数求平均值
def average_num(a,b,c):
#先求和,再除以3
sumResult = sum_num(a,b,c)
return sumResult / 3
averageResult = average_num(1,2,3)
print(averageResult)
运行结果:
182_函数的总结
总结
- 函数的作用:封装代码,高效的代码重用
- 函数使用步骤
- 定义函数
def 函数名()
代码1
代码2
… - 调用函数
函数名()
函数的参数:函数调用的时候可以传入真实数据,增大函数的使用的灵活性。 - 形参:函数定义时书写的参数(非真实数据)
- 实参:函数调用时书写的参数(真实数据)
函数的返回值 - 作用:函数调用后,返回需要的计算结果
- 写法
- return 表达式
函数的说明文档 - 作用:保存函数解释说明的信息。
- 写法
def 函数名():
------函数说明文档-------
- 定义函数
- 函数嵌套调用:一个函数内部嵌套调用另外一个函数
183_函数二学习目标简介
课程:函数
目标
- 变量作用域
- 多函数程序执行流程
- 函数的返回值
- 函数的参数
- 拆包和交换两个变量的值
- 引用
- 可变和不可变类型
184_局部变量
一、变量作用域
变量作用域指的是变量生效的额范围,主要分为两类:局部变量和全局变量。
-局部变量
所谓局部变量是定义在函数体内部的变量,即只在函数体内部生效。
局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量。
#定义一个函数,声明一个变量:函数体内部访问,函数体外部访问
def testA():
a = 100
print(a) #函数体内部访问,能访问到a变量
testA()
#print(a) #报错 a变量是函数内部的变量,函数外部无法访问---a是一个局部变量
#变量a是定义在testA函数内部的变量,在函数外部访问则立即报错
运行结果:
185_访问全局变量
全局变量
所谓全局变量,指的是在函数体内、外都能生效的变量。
思考:如果有一个数据,在函数A和函数B只都要使用,该怎么办?
答:将这个数据存储在一个全局变量里面。
#声明全局变量:函数体内外都能访问
a = 100
print(a)
def testA():
print(a)
def testB():
print(a)
testA()
testB()
运行结果: