1.函数的介绍
函数:是组织好的,可重复使用的,用来实现特定功能的代码段
我们之前使用过的:input(),print(),str(),int()等都是python的内置函数
自己定义一个函数,不使用内置函数len(),完成字符串长度的计算
#当我们想要测str2和str3时就需要重复的输入相同代码,但是可以使用函数来优化这个功能(简洁)
#使用函数可以提高程序的复用性,减少重复性代码,提高开发效率
2.函数的定义
函数的定义语法:
def 函数名(传入参数):
函数体
return 返回值
#注意不要忘记冒号和空格缩进
函数的调用:
函数名(参数)
基础的定义函数
#函数使用步骤:先定义函数,后调用函数
#返回值和参数如果不需要可以省略
#函数必须先定义后使用
小练习
3.函数的参数
传入参数的功能是:在函数进行计算的时候,接受外部(调用时)提供的数据
可以有如下的定义:
def add(x,y):
result = x + y
print(f"{x} + {y}的结果是:{result}")
这样可以实现每次计算的是x+y,而不是固定的1+2,x,y的值,可以在调用函数的时候指定
语法解析:
在函数定义中,提供的x和y,称之为:形式参数(形参),表示函数声明将要使用2个参数
参数之间使用逗号进行分隔
在函数调用中,提供的2和5,称之为:实际参数(实参),表示函数执行时真正使用的参数值
传入的时候,按照顺序传入数据,使用逗号分隔
#传入参数的数量是不受限制的:可以不使用参数,也可以仅使用任意N个参数
小练习
4.函数的返回值
语法格式:
def 函数(参数......):
函数体
return 返回值
变量 = 函数(参数)
#意思就是通过return关键字,就能向调用者返回数据
#函数体一旦遇到return就表明函数立刻结束了,return后面的代码不会执行
None类型
函数可以通过:不使用return语句即返回None,或者主动return None 来返回None
None作为一个特殊的字面量,用于表示:空,无意义,其有非常多的用于场景
#用在函数无返回值上
#用在if判断上:在if判断中,None等同于False,一般用于在函数中主动返回None,配合if判断做相关处理
#用于声明无内容的变量上,定义变量,但暂时不需要变量有具体值,可以用None来代替
name = None
5.函数说明文档
#其实就是注释,对函数进行说明解释,帮助更好理解函数的功能
函数是现纯代码语言,想要理解其含义,就需要一行行的去阅读理解代码,效率比较低
我们可以给函数添加说明文档,辅助理解函数的作用
语法如下:
def func(x,y):
"""
函数说明
:param x:形参x的说明
:param y:形参y的说明
:return:返回值的说明
"""
函数体
return 返回值
#通过多行注释的形式,对函数进行说明解释,内容应该写在函数体之前
6.函数的嵌套调用
#如果函数a中,调用了另外一个函数b,那么先把函数b中的任务都执行完毕之后才会回到上次函数a执行的位置,不会一起执行
7.变量的作用域
局部变量
#局部变量只能作用与局部
#出了函数体,局部变量就无法使用了
全局变量
#全局变量可以作用与任意地方
global关键字
使用global关键字,可以将函数内定义的变量声明为全局变量
但是加了global函数就可以将内部修改的变量作用与全局
8.函数综合案例
这个案例结合了之前所学的内容,大家不会的可以往前在复习复习,重点已经写在注释里了
money = 5000000 name = None #可不写 name = input("请输入你的姓名:") def query(show_header): if show_header: print("-------------查询余额--------------") print(f"{name},你好,你的余额剩余:{money}元") def saving(num): global money #money在函数内部定义为全局变量 money += num print("-------------存款-----------------") print(f"{name},你好,你存款{num}元成功") query(False) #调用query函数查询余额 def get_money(num): global money money -= num print("-------------取款------------------") print(f"{name},你好,你取款{num}元成功") query(False) def main(): print("------------主菜单------------------") print(f"{name},你好,欢迎来到黑马银行ATM。请选择操作:") print("查询余额\t[输入1]") print("存款\t\t[输入2]") #通过\t制表符对齐输出 print("取款\t\t[输入3]") print("退出\t\t[输入4]") return input("请输入你的选择:") while True: keyboard_input = main() if keyboard_input == "1": query(True) continue #通过continue继续下一次循环,一进来就是回到了主菜单 elif keyboard_input == "2": num = float(input("你想要存多少钱?请输入:")) saving(num) continue elif keyboard_input == "3": num = float(input("你想要取多少钱?请输入:")) get_money(num) continue else: print("程序退出啦") break