发行说明
当前版本号[]。
版本修改说明
第一版
知识概览图
目录
文章目录
功能介绍
功能:是一段有组织的、可重用的代码段,用于实现特定的功能。
为什么可以随时使用len()来计算长度:
因为,len() 是一个内置函数:
我们用过:input()、print()、str()、int()等都是内置函数
为什么要学习和使用函数?
为了获得特定需求可复用的代码段,提高程序的复用性,减少重复代码,提高开发效率
使用函数的好处是:
函数定义
函数调用:
函数名(参数)
功能使用步骤:
防范措施:
① 不需要的参数可以省略(后续章节说明)
② 如果不需要返回值,可以省略(后续章节解释)
③ 函数必须先定义后使用
实践案例:自动欢迎致辞
定义一个函数,函数名任意,调用函数后要求输出如下问候语:
今天是疯狂星期四
快来吃19.99的吮指原味鸡!!!
代码如下所示:
def Thursday():
print("今天是疯狂星期四")
print("快来吃19.99的吮指原味鸡!!!")
Thursday()
结果如下:
函数的参数 函数的传入参数
传入参数的作用是在函数计算时接受外部(调用时)提供的数据
有如下代码,完成两个数字相加的功能:
功能很有限,只能计算1+2。
是否可以实现:每次使用该函数时,计算用户指定的2个数字,而不是每次都计算1+2?
可以利用函数传入参数的功能来实现。
函数的传入参数——参数定义
基于函数的定义语法:
您可以有以下函数定义:
实现后,每次计算都是x+y,而不是固定的1+2。x+y的值可以在调用函数时指定。
函数的传入参数-语法分析
传入参数的数量不受限制:
实践案例:自动欢迎辞升级版
定义一个任意名称的函数,接受一个参数(数字类型,表示体温)
函数中进行金钱判断(范围:20元以上吃鸡,否则喝白开水),输出以下内容:
def Thursday(x):
print("今天是疯狂星期四")
if x >= 20:
print("快来吃19.99的吮指原味鸡!!!")
else:
print("那就来喝杯免费的白开水吧!")
Thursday(x)
结果如下:
函数的返回值 函数的返回值的定义
程序中的返回值:
如代码所示
定义两个数字相加的函数功能。该函数完成后,将相加的结果返回给函数调用者
因此,变量r接收函数的执行结果。
总之:
所谓“返回值”就是程序中的函数完成工作后返回给调用者的最终结果
返回值的语法
语法格式如图:
如图,变量可以接收函数的返回值
语法为:通过关键字,可以将数据返回给调用者
注意:
函数体遇到就结束,所以后面写的代码不会被执行。
喜欢:
def add(x, y):
result = x + y
return result
print("第一句")
r= add(4, 6)
print(r)
输出结果:10
无类型
None 中有一个特殊的文字,其类型为:
无返回值的函数实际上返回: None 的字面值
None的意思是:空虚、无意义
如果函数返回None,则意味着该函数没有返回任何有意义的内容。 也就是说,它返回的是空的。
None类型的应用场景
None,作为一个特殊的字面量,用来表示:空洞、无意义,它的应用场景很多。
功能文档
函数是一种纯代码语言。 要理解其含义,需要逐行阅读理解代码,效率相对较低。
我们可以给函数添加文档,以帮助理解函数的作用。
语法如下:
以多行注释的形式,解释一下功能
• 内容应写在函数体之前
查看函数文档
编写代码时,可以将鼠标悬停在调用函数的文档上查看
喜欢:
嵌套函数调用
所谓函数嵌套调用,是指一个函数调用另一个函数。
执行效果:
实施过程:
如果函数A中调用了另一个函数B,则函数B中的任务将被执行,然后返回到函数A上次执行的位置。
注意:所有执行完毕后记得返回到之前的位置!
变量范围局部变量
变量作用域是指变量的范围(变量在哪里可用,在哪里不可用)
主要有两大类:局部变量和全局变量
所谓局部变量就是定义在函数体内的变量,即只在函数体内部生效
变量a是testA函数内部定义的变量,如果在函数外部访问它,会立即报错。
局部变量的作用:在函数体内部,暂时保存数据,即当函数调用完成后,局部变量就被销毁
全局变量
所谓全局变量是指在函数体内部和外部都可以生效的变量。
思考:如果有一条数据在函数A和函数B中都用到了怎么办?
答案:将这些数据存储在全局变量中
关键词
思考:testB函数需要修改变量num的值为200,程序如何修改?
testB函数内部的num = 200定义了一个局部变量
在函数内部可以使用该关键字将变量声明为全局变量,因此他后面的变量会被改变,但他前面的代码不会受到影响。如下
综合案例:黑马ATM
• 定义一个全局变量:money,用于记录银行卡余额(默认)
• 定义一个全局变量:name,用于记录客户的姓名(启动程序时输入)
• 定义如下的函数:
• 查询余额功能
• 存款功能
• 提现功能
• 主菜单功能
•要求:
• 程序启动后询问客户姓名
• 查看余额、存取款后将返回主菜单
• 存取款后,应显示当前余额
• 如果客户选择退出或输入错误,程序将退出,否则程序将继续运行
示例代码:
name = str(input("请输入您的姓名:"))
balance = 10000
def save():
print("----------存 款-----------")
print("请输入你想要存钱的数目:")
money = int(input())
global balance
balance += money
print(f"{name},您好,您存款{money}元成功")
print(f"{name},您好,您的余额为{balance}元")
def take():
print("----------取 款-----------")
print("请输入你想要取钱的数目:")
money = int(input())
global balance
balance -= money
print(f"{name},您好,您存款{money}元成功")
print(f"{name},您好,您的余额为{balance}元")
def select():
print("----------查询余额-----------")
print(f"{name},您好,您的余额剩余:{balance}元")
def main():
print("-----------主菜单-----------")
print(f"{name},您好,欢迎来到ATM系统,请选择操作:")
print("查询余额: \t【请输入:1 】")
print("存 款:\t\t【请输入:2 】")
print("取 款:\t\t【请输入:3 】")
print("退 出:\t\t【请输入:4 】")
a = int(input("请输入您的选择:"))
while a <= 3:
if a == 1:
select()
main()
elif a == 2:
save()
main()
else:
take()
main()
print(f"再见{name},欢迎您的下次光临!")
exit()
main()
代码演示: