2026/5/24 17:27:31
网站建设
项目流程
网站后台修改网站首页怎么做,企业网站优化系统,wordpress账号密码数据库,做一个网站 如何盈利模式函数的定义函数: 是组织好的#xff0c;可重复使用的#xff0c;用来实现特定功能的代码段。作用: 提高程序的复用性#xff0c;减少重复性代码#xff0c;提高开发效率函数的定义和调用# 函数的定义
def my_len(data):length 0for i in data:length 1return length# 函数…函数的定义函数: 是组织好的可重复使用的用来实现特定功能的代码段。作用: 提高程序的复用性减少重复性代码提高开发效率函数的定义和调用# 函数的定义 def my_len(data): length 0 for i in data: length 1 return length # 函数的调用 print(f字符串的长度是: {my_len(hello world~~)})注意事项参数如不需要可以省略(后续章节讲解)返回值如不需要可以省略(后续章节讲解)函数必须先定义后使用函数传参函数定义中的参数称之为形式参数函数调用中的参数称之为实际参数函数的参数数量不限使用逗号分隔开传入参数的时候要和形式参数一 一对应逗号隔开函数的返回值通过return关键字就能向调用者返回数据None类型如果函数没有使用return语句返回数据那么函数有返回值吗?实际上是: 有的。Python中有一个特殊的字面量: None其类型是classNoneType无返回值的函数实际上就是返回了None这个字面量None表示: 空的、无实际意义的意思函数返回的None就表示这个函数没有返回什么有意义的内容也就是返回了空的意思。None有非常多的应用场景用在函数无返回值上用在if判断上, None等同于False用于声明无内容的变量上补充说明在判断条件中 0、False、None、空字符串都视为False其余值都视为True函数的嵌套所谓函数嵌套调用指的是一个函数里面又调用了另外一个函数如果函数A中调用了另外一个函数B那么先把函数B中的任务都执行完毕之后才会回到上次 函数A执行的位置函数说明文档函数是纯代码语言想要理解其含义就需要一行行的去阅读理解代码效率比较低。我们可以给函数添加说明文档辅助理解函数的作用通过多行注释的形式对函数进行说明解释在PyCharm编写代码时可以通过鼠标悬停查看调用函数的说明文档变量的作用域变量作用域指的是变量的作用范围 (变量在哪里可用在哪里不可用)局部变量所谓局部变量是定义在函数体内部的变量即只在函数体内部生效变量a是定义在testA函数内部的变量在函数外部访问则立即报错局部变量的作用: 在函数体内部临时保存数据即当函数调用完成后则销毁局部变量所谓全局变量指的是在函数体内、外都能生效的变量global关键字使用 global关键字 可以在函数内部声明变量为全局变量如下所示# 函数内的局部变量与全局变量重名时, 局部变量视为独立的的临时变量, 不影响全局变量 num 100 def testA(): num 200 print(num) def testB(): print(num) testA() testB()# 如果函数内需要修改全局变量的值, 需要使用global关键字 num 100 def testA(): global num num 200 print(num) def testB(): print(num) testA() testB()ATM案例案例效果主菜单效果查询余额效果存、取款效果思路分析定义一个全局变量:money用来记录银行卡余额(默认5000000)定义一个全局变量:name用来记录客户姓名(启动程序时输入)定义如下的函数:查询余额函数存款函数取款函数主菜单函数要求:程序启动后要求输入客户姓名查询余额、存款、取款后都会返回主菜单存款、取款后都应显示一下当前余额客户选择退出或输入错误程序会退出否则一直运行代码实现print(欢迎来到ATM机) name input(请输入您的姓名) money 50000 def menu(): 主菜单, 提示用户操作 :return: 用户输入的数字 print(--------------------主菜单--------------------) print(f{name},您好,欢迎来到ATM机,请选择操作: ) print(f查询余额\t[输入1]) print(f存款\t\t[输入2]) print(f取款\t\t[输入3]) print(f退出\t\t[输入4]) return int(input(请输入您的选择: )) def query_money(flag): 余额查询 :param flag: 是否显示标题 :return: None if flag: print(--------------------查询余额--------------------) print(f{name}您好,您的余额是: {money}元) def add_money(): 用户存款 :return: None global money print(--------------------存款--------------------) num int(input(f{name},您要存入多少元: )) money num print(f{name},您存款{num}元成功) query_money(False) def take_money(): 用户取款 :return: global money print(--------------------取款--------------------) num int(input(f{name},您要取出多少元: )) if num money: print(f{name},您的余额不足{num}元) query_money(False) else: money - num print(f{name},您取款{num}元成功) query_money(False) while True: # 主菜单 user_options_num menu() if user_options_num 1: query_money(True) elif user_options_num 2: add_money() elif user_options_num 3: take_money() else: print(欢迎下次光临,再见!) break函数多返回值如果一个函数要有多个返回值该如何书写代码?按照返回值的顺序写对应顺序的多个变量接收即可变量之间用逗号隔开支持不同类型的数据returndef func(): # 返回 (1,2)的元组 return 1, 2 # 自动解包 x, y func() print(x, y) # 接收元组 z func() print(z)函数传参方式位置参数: 调用函数时根据函数定义的参数位置来传递参数注意: 传递的参数和定义的参数的顺序及个数必须一致关键字参数: 函数调用时通过键值形式传递参数.作用: 可以让函数更加清晰、容易使用同时也清除了参数的顺序需求.注意: 函数调用时如果有位置参数时位置参数必须在关键字参数的前面但关键字参数之间不存在先后顺序缺省参数: 省参数也叫默认参数用于定义函数为参数提供默认值调用函数时可不传该默认参数的值注意: 所有位置参数必须出现在默认参数前包括函数定义和调用作用: 当调用函数时没有传递参数就会使用默认是用缺省参数对应的值不定长参数不定长参数也叫可变参数, 用于不确定调用的时候会传递多少个参数(不传参也可以)的场景.作用: 当调用函数时不确定参数个数时可以使用不定长参数不定长参数的类型:位置传递传进的所有参数都会被args变量收集它会根据传进参数的位置合并为一个元组(tuple)args是元组类型关键字传递参数是键值形式的情况下所有的键值都会被kwargs接受同时会根据键值组成字典.示例 不定长参数 # print()函数的第一个形参,是一个*args不定长参数 # 不定长参数的后面,必须通过关键字传参 print(你好, 我好, 大家好, end\t) # 多种形式的形参 def func2(name, age, *args, **kwargs): print(f普通参数: {name},{age}) print(f元组收集参数: {args}) print(f字典收集参数: {kwargs}) func2(周杰伦, 11, 1, 2, 3, 4, 5, id1, gender2)回调函数把函数作为参数进行传递函数compute, 作为参数传入了test_func函数中使用。testfunc需要一个函数作为参数传入这个函数需要接收2个数字进行计算计算逻辑由这个被传入函数决定compute函数接收2个数字对其进行计算,compute函数作为参数传递给了testfunc函数使用最终在test_func函数内部由传入的compute函数完成了对数字的计算操作所以这是一种计算逻辑的传递而非数据的传递。就像上述代码那样不仅仅是相加相见、相除、等任何逻辑都可以自行定义并作为函数传入。匿名函数函数的定义中def关键字可以定义带有名称的函数lambda关键字可以定义匿名函数(无名称)有名称的函数可以基于名称重复使用。无名称的匿名函数只可临时使用一次。匿名函数定义语法lambda是关键字表示定义匿名函数传入参数表示匿名函数的形式参数如:xy表示接收2个形式参数函数体就是函数的执行逻辑要注意: 只能写一行无法写多行代码 匿名函数 def func(callback): result callback(1, 2) print(result) # 这些函数只用一次,不需要重复使用,使用lambda快速实现 func(lambda x, y: x y) func(lambda x, y: x - y) func(lambda x, y: x * y) func(lambda x, y: x / y) # 如果要重复利用,可以使用变量接收 # 变量名就是一个带名字的函数 add lambda x, y: x y print(add(2, 2))