函数的初体验 函数:是组织好的,可重复使用的,用来实现特定功能的代码段
使用函数的好处是:
将功能封装在函数内,可供随时随地重复利用
提高代码的复用性,减少重复代码,提高开发效率
Demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 """ 演示:快速体验函数的开发及应用 """ str1 = "zhangsan" str2 = "helloworld" str3 = "python" count = 0 for i in str1: count += 1 print (f"字符串{str1} 的长度是:{count} " )count = 0 for i in str2: count += 1 print (f"字符串{str2} 的长度是:{count} " )count = 0 for i in str3: count += 1 print (f"字符串{str3} 的长度是:{count} " )def my_len (data ): count = 0 for i in data: count += 1 print (f"字符串{data} 的长度是:{count} " ) my_len(str1) my_len(str2) my_len(str3)
运行结果
1 2 3 4 5 6 字符串zhangsan的长度是:8 字符串helloworld的长度是:10 字符串python的长度是:6 字符串zhangsan的长度是:8 字符串helloworld的长度是:10 字符串python的长度是:6
函数的基础定义语法 注意事项
参数如不需要,可以省略
返回值如不需要,可以省略
函数必须先定义后使用
Demo
1 2 3 4 5 6 7 8 """ 演示函数的定义语法 """ def function (): print ("hello world" ) function()
运行结果
函数基础定义练习案例 Demo
1 2 3 4 5 6 7 8 9 """ 演示函数基础定义练习案例:自动查核酸 """ def check (): print ("请出示您的健康码以及72小时核酸证明" ) check()
运行结果
函数的传入参数 传入参数的功能是:在函数进行计算的时候,接收外部(调用时)提供的数据
传入参数的数量是不受限制的
传入参数的时候,要和形式参数一一对应,逗号隔开
Demo
1 2 3 4 5 6 7 8 9 """ 演示函数使用参数 """ def add (x, y, z ): result = x + y + z print (f"{x} + {y} + {z} 的计算结果是:{result} " ) add(5 , 6 , 7 )
运算结果
函数的参数练习案例 Demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 """ 演示函数的参数练习案例:升级自动查核酸 """ def check (num ): print ("请出示您的健康码以及72小时核酸证明,并配合测量体温" ) if num <= 37.5 : print (f"体温测量中,您的体温是:{num} 度,体温正常请进" ) else : print (f"体温测量中,您的体温是:{num} 度,需要隔离" ) check(37.3 ) check(37.6 )
运行结果
1 2 3 4 请出示您的健康码以及72 小时核酸证明,并配合测量体温 体温测量中,您的体温是:37.3 度,体温正常请进 请出示您的健康码以及72 小时核酸证明,并配合测量体温 体温测量中,您的体温是:37.6 度,需要隔离
函数的返回值定义语法 函数返回值:函数在执行完成后,返回给调用者的结果
函数体在遇到return后就结束了,所以写在return后的代码不会执行
Demo
1 2 3 4 5 6 7 8 9 10 11 12 13 """ 演示:定义函数返回值的语法格式 """ def add (a, b ): result = a + b return result print ("我完事了" ) r = add(5 , 6 ) print (r)
运行结果
函数返回值之None类型 Python中有一个特殊的字面量:None,其类型是:<class ‘NoneType’>
无返回值的函数,实际上就是返回了:None这个字面量
None作为一个特殊的字面量,用于表示:空、无意义,其有非常多的应用场景
用在函数无返回值上
用在if判断上
在if判断中,None等同于False
一般用于在函数中主动返回None,配合if判断做相关处理
用于声明无内容的变量上
定义变量,但暂时不需要变量有具体值,可以用None来代替
Demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 """ 演示特殊字面量:None """ def say_hi (): print ("hello" ) result = say_hi() print (f"无返回值函数,返回的内容是:{result} " )print (f"无返回值函数,返回的内容类型是:{type (result)} " )def say_hi2 (): print ("hello" ) return None result = say_hi2() print (f"无返回值函数,返回的内容是:{result} " )print (f"无返回值函数,返回的内容类型是:{type (result)} " )def check_age (age ): if age > 18 : return "SUCCESS" else : return None result = check_age(16 ) if not result: print ("未成年,不可以进入" ) name = None
运行结果
1 2 3 4 5 6 7 hello 无返回值函数,返回的内容是:None 无返回值函数,返回的内容类型是:<class 'NoneType' > hello 无返回值函数,返回的内容是:None 无返回值函数,返回的内容类型是:<class 'NoneType' > 未成年,不可以进入
函数的说明文档 函数是纯代码语言,我们可以给函数添加说明文档,辅助理解函数的作用
通过多行注释的形式,对函数进行说明解释,内容应写在函数体之前
Demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 """ 演示对函数进行文档说明 """ def add (x, y ): """ add函数可以接收2个参数,进行2数相加的功能 ;param x: 形参x表示相加的其中一个数字 ;param y: 形参y表示相加的另一个数字 ;return: 返回值是2数相加的结果 """ result = x + y print (f"2数相加的结果是:{result} " ) return result add(5 , 6 )
运行结果
函数的嵌套调用 所谓函数嵌套调用指的是一个函数里面又调用了另外一个函数
Demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 """ 演示嵌套调用函数 """ def func_b (): print ("---2---" ) def func_a (): print ("---1---" ) func_b() print ("---3---" ) func_a()
运行结果
变量在函数中的作用域 变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用)
主要分为两类:局部变量和全局变量
所谓局部变量是定义在函数体内部的变量,即只在函数体内部生效
局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量
使用global关键字 可以在函数内部声明变量为全局变量
Demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 """ 演示在函数使用的时候,定义的变量作用域 """ def test_a (): num = 100 print (num) test_a() print ()num = 200 def test_a (): print (f"test_a: {num} " ) def test_b (): num = 500 print (f"test_b: {num} " ) test_a() test_b() print (num)print ()num = 200 def test_a (): print (f"test_a: {num} " ) def test_b (): global num num = 500 print (f"test_b: {num} " ) test_a() test_b() print (num)
运行结果
1 2 3 4 5 6 7 8 9 100 test_a: 200 test_b: 500 200 test_a: 200 test_b: 500 500
函数综合案例 Demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 """ 演示函数综合案例开发 """ money = 5000000 name = None name = input ("请输入您的姓名:" ) def query (show_header ): if show_header: print ("----------查询余额----------" ) print (f"{name} ,您好,您的余额剩余:{money} 元" ) def saving (num ): global money money += num print ("----------存款----------" ) print (f"{name} ,您好,您存款{num} 元成功" ) query(False ) 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]" ) print ("取款\t\t[输入3]" ) print ("退出\t\t[输入4]" ) return input ("请输入你的选择:" ) while True : keyboard_input = main() if keyboard_input == "1" : query(True ) continue elif keyboard_input == "2" : num = int (input ("您想要存多少钱?请输入:" )) saving(num) continue elif keyboard_input == "3" : num = int (input ("您想要取多少钱?请输入:" )) get_money(num) continue else : print ("程序退出" ) break
运行结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 请输入您的姓名:张三 ----------主菜单---------- 张三,您好,欢迎来到银行ATM,请选择操作: 查询余额 [输入1 ] 存款 [输入2 ] 取款 [输入3 ] 退出 [输入4 ] 请输入你的选择:1 ----------查询余额---------- 张三,您好,您的余额剩余:5000000 元 ----------主菜单---------- 张三,您好,欢迎来到银行ATM,请选择操作: 查询余额 [输入1 ] 存款 [输入2 ] 取款 [输入3 ] 退出 [输入4 ] 请输入你的选择:2 您想要存多少钱?请输入:10 ----------存款---------- 张三,您好,您存款10 元成功 张三,您好,您的余额剩余:5000010 元 ----------主菜单---------- 张三,您好,欢迎来到银行ATM,请选择操作: 查询余额 [输入1 ] 存款 [输入2 ] 取款 [输入3 ] 退出 [输入4 ] 请输入你的选择:3 您想要取多少钱?请输入:5 ----------取款---------- 张三,您好,您取款5 元成功 张三,您好,您的余额剩余:5000005 元 ----------主菜单---------- 张三,您好,欢迎来到银行ATM,请选择操作: 查询余额 [输入1 ] 存款 [输入2 ] 取款 [输入3 ] 退出 [输入4 ] 请输入你的选择:4 程序退出