目录一、前言二、Python 函数介绍2.1 什么是函数2.2 函数结构三、函数基本使用3.1 函数定义3.2 函数如何调用3.3 带参数的函数3.4 函数默认参数3.5 关键字参数3.6 位置参数与关键字参数对比3.7 可变参数*args 和 **kwargs3.8 函数返回值3.8.1 返回值return 说明3.8.2 函数返回值特点3.9 函数作用域3.10 函数说明文档3.11 函数的参数类型3.12 匿名函数3.12.1 什么是匿名函数3.12.2 匿名函数特点3.12.3 匿名函数基本语法3.12.4 匿名函数带参数3.12.5 匿名函数与其他内置函数结合使用四、写在最后一、前言在日常项目开发中函数方法可以说无处不在使用函数可以为项目的开发带来很多好处让工程代码变得可维护性更好本篇将详细介绍一下Python中的函数使用。二、Python 函数介绍2.1 什么是函数函数是组织好的可重复使用的用来实现单一或相关联功能的代码段。函数能提高应用的模块性和代码的重复利用率。你已经知道Python提供了许多内建函数比如print()。但你也可以自己创建函数这被叫做用户自定义函数。2.2 函数结构在pythno 中一个完整的函数结构如下在自定义函数时可以参考下面的原则函数代码块以def关键词开头后接函数标识符名称和圆括号()。任何传入参数和自变量必须放在圆括号中间圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。函数内容以冒号:起始并且缩进。return [表达式]结束函数选择性地返回一个值给调用方不带表达式的 return 相当于返回 None。三、函数基本使用3.1 函数定义Python 定义函数使用 def 关键字一般格式如下默认情况下参数值和参数名称是按函数声明中定义的顺序匹配起来的def 函数名(参数列表): 文档字符串可选 函数体 return 返回值 # 可选如下定义一个基本的函数并调用def hello() : print(Hello World!) hello() def greet(): 向指定的人打招呼 return Hello! print(greet())输出结果3.2 函数如何调用定义一个函数给了函数一个名称指定了函数里包含的参数和代码块结构。这个函数的基本结构完成以后你可以通过另一个函数调用执行也可以直接从 Python 命令提示符执行。如下实例调用了printme()函数# 定义函数 def printme( str ): # 打印任何传入的字符串 print (str) return # 调用函数 printme(我要调用用户自定义函数!) printme(再次调用同一函数)注意事项函数必须先定义在调用函数定义时并不会执行只有在调用函数时函数体的逻辑才会运行函数中通过缩进来描述归属关系3.3 带参数的函数在真实的项目开发场景下函数使用时一般会带上参数默认情况下带有参数的函数在调用时按顺序传入下面这个函数比较两个数的大小并输出def max(a, b): if a b: return a else: return b a 11 b 21 print(max(a, b))3.4 函数默认参数给参数设定一个默认值外部调用时可省略这个默认参数注意默认参数必须是不可变对象如None、数字、字符串不要用列表/字典否则会有坑默认参数必须放在没有默认值的参数列表的后面一个函数在定义时是可以设置多个默认参数的函数调用时如果为默认参数传递了值则会修改默认的参数值;如果没有传递该参数则直接使用默认值def power(base, exp2): return base ** exp print(power(3)) print(power(3, 3))3.5 关键字参数调用函数时指定参数名顺序可任意这种比较灵活调用函数时通过形参名值的形式传递参数顺序没有要求如果同时存在位置参数与关键字参数位置参数在前关键字参数在后def info(name, age): return f{name} is {age} years old print(info(age25, nameBob))当然也可以混用参考下面的案例def reg_stu(name, age,gender, city): print(f注册成功,姓名:{name},年龄:{age},性别:{gender},城市:{city}) return {name: name, age: age, gender: gender, city: city} #传参方式一:位置参数 stu reg_stu(张三,18,男,北京) print(stu) #传参方式二:关键字参数 stu reg_stu(name王林,age28,gender男,city北京) print(stu) stu reg_stu(age20, gender女, city北京, name李慕婉) print(stu) # 传参方式三:位置参数关键字参数---位置参数在前关键字参数在后 stu reg_stu(李慕婉, 20, gender女, city北京) print(stu)3.6 位置参数与关键字参数对比两者对比与适用场景一切以代码结构清晰明了(可读性)、便于维护(维护性)为目标如果参数比较少(不超过3个)可直接使用位置参数如果参数数量较多建议使用关键字参数3.7 可变参数*args 和 **kwargs也叫不定长参数或者可变参数用于函数定义及调用时参数个数不确定(0个或多个)的场景*args接收任意数量的位置参数打包成元组**kwargs接收任意数量的关键字参数打包成字典传递的所有匹配的位置参数都会被args变量收集这些参数会合并封装为一个元组args是元组类型(注意并不会封装关键字参数)args只是约定俗成的变量名并不是关键字这里可以使用任何合法的变量名(如*data)def sum_all(*args): return sum(args) print(sum_all(1,2,3,4)) # 10 print() def show_info(**kwargs): for k, v in kwargs.items(): print(f{k}: {v}) print(show_info(nameTom, cityBeijing))如果是不定长参数与关键字参数一起使用使用形式如下注意参数是以键值形式传递的关键字参数这些键值参数都会被kwargs接受并合并封装为一个字典类型kwargs只是约定俗成的变量名并不是关键字这里可以使用任何合法的变量名(如 **options)3.8 函数返回值在很多情况下在工程中定义函数的时候是需要返回值的。3.8.1 返回值return 说明return [表达式]语句用于退出函数选择性地向调用方返回一个表达式。不带参数值的 return 语句返回 None。之前的例子都没有示范如何返回数值以下实例演示了 return 语句的用法# 可写函数说明 def sum( arg1, arg2 ): # 返回2个参数的和. total arg1 arg2 print (函数内 : , total) return total # 调用sum函数 total sum( 10, 20 ) print (函数外 : , total)运行结果3.8.2 函数返回值特点对函数返回值来说具有如下特点使用return返回结果可以返回任意类型数字、字符串、列表、函数等。没有return或只写return函数返回None。可以返回多个值实际是返回一个元组在下面的函数中入参是一个列表def get_min_max(lst): return min(lst), max(lst) a, b get_min_max([1,5,3]) # a1, b5 print(a,b)运行结果如下注意return语句只有返回功能而没有输出打印的功能如果要输出需要结合print()函数来实现函数可以有多个返回值多个返回值最终封装到元组中3.9 函数作用域变量的作用域指的是变量的作用范围(标识这个变量在哪里可以使用在哪儿不可以使用)。基本特点局部变量在函数内部定义的变量称之为局部变量只能在该函数内部使用外部无法访问(函数执行完毕后会自动销毁其内部局部变量)全局变量在函数之外定义的变量称之为全局变量在整个文件中(包括函数内)都可以使用(通常定义在文件的顶部)比如在下面的函数中x是一个全局变量函数内部和外部都可以访问x 10 print(x) def change(): global x x 20 change() print(x) # 20运行结果注意事项尽量避免在函数中使用全局变量因为会使代码难以维护和调试考虑使用函数参数和返回值来传递数据而不是依赖全局变量global主要用在程序的状态、配置和计数器等场景中3.10 函数说明文档函数的说明文档(Docstring)是写在函数开头用三个引号包裹的字符串用于解释函数的功能、参数、返回值等信息方便调用者清楚函数的具体作用及细节。定义一个带说明的函数def rec(l,r): 根据长度和宽度计算长方形面积 :param l: 长 :param r: 宽 :return: return l * r help(rec)当执行的时候就可以把这个函数的作用输出出来3.11 函数的参数类型函数支持的普通参数包括数字、布尔、字符串、列表、元组、集合、字典等。也支持特殊的参数函数即函数也可以作为参数传入。在下面的演示代码中既有普通函数的参数传递也有函数作为参数的传递def circle_area(r): area 3.14 * r ** 2 return area print(circle_area(5)) def calc_score(score_list): min_s min(score_list) max_s max(score_list) avg_s round(sum(score_list) / len(score_list), 1) return max_s, min_s, avg_s s_list [589, 609, 605, 643, 677, 455, 477, 489, 503] max_score, min_score, avg_score calc_score(s_list) def add (x, y): return x y def subtract (x, y): return x - y def calc(x,y,oper): return oper(x,y) result calc(10, 20, add) print(result)函数作为参数传递的一个典型场景就是递归如下def cal(n): if n 1: return 1 else: return n * cal(n-1) res cal(5) print(res)3.12 匿名函数3.12.1 什么是匿名函数Python 中使用lambda来创建匿名函数。lambda 函数是一种小型、匿名的、内联函数它可以具有任意数量的参数但只能有一个表达式。匿名函数不需要使用def关键字定义完整函数。lambda 函数通常用于编写简单的、单行的函数通常在需要函数作为参数传递的情况下使用例如在 map()、filter()、reduce() 等函数中。3.12.2 匿名函数特点lambda函数特点lambda 函数是匿名的它们没有函数名称只能通过赋值给变量或作为参数传递给其他函数来使用。lambda 函数通常只包含一行代码这使得它们适用于编写简单的函数。匿名函数中可以返回结果也可以不返回结果。返回结果时不需要写return表达式的运行结果就是要返回的结果。3.12.3 匿名函数基本语法lambda 基本格式如下lambda arguments: expression参数解释lambda是 Python 的关键字用于定义 lambda 函数。arguments是参数列表可以包含零个或多个参数但必须在冒号(:)前指定。expression是一个表达式用于计算并返回函数的结果。下面这个 lambda 函数没有参数f lambda: Hello, world! print(f()) # 输出: Hello, world!3.12.4 匿名函数带参数带参数的匿名函数更常见以下实例使用 lambda 创建匿名函数设置一个函数参数 a函数计算参数 a 加 10并返回结果x lambda a : a 10 print(x(5))lambda 函数也可以设置多个参数参数使用逗号,隔开以下实例使用 lambda 创建匿名函数函数参数 a 与 b 相乘并返回结果x lambda a, b : a * b print(x(5, 6))以下实例使用 lambda 创建匿名函数函数参数 a、b 与 c 相加并返回结果x lambda a, b, c : a b c print(x(5, 6, 2))3.12.5 匿名函数与其他内置函数结合使用lambda 函数通常与内置函数如 map()、filter() 和 reduce() 一起使用以便在集合上执行操作。如下numbers [1, 2, 3, 4, 5] squared list(map(lambda x: x**2, numbers)) print(squared) # 输出: [1, 4, 9, 16, 25]使用 lambda 函数与 filter() 一起筛选偶数numbers [1, 2, 3, 4, 5, 6, 7, 8] even_numbers list(filter(lambda x: x % 2 0, numbers)) print(even_numbers) # 输出[2, 4, 6, 8]下面是一个使用 reduce() 和 lambda 表达式演示如何计算一个序列的累积乘积from functools import reduce numbers [1, 2, 3, 4, 5] # 使用 reduce() 和 lambda 函数计算乘积 product reduce(lambda x, y: x * y, numbers) print(product) # 输出120在上面的实例中reduce() 函数通过遍历 numbers 列表并使用 lambda 函数将累积的结果不断更新最终得到了1 * 2 * 3 * 4 * 5 120的结果。补充什么时候使用匿名函数建议使用匿名函数的情况:函数逻辑简单只在一个地方调用(常作为高阶函数的参数)建议使用命名函数的情况:函数逻辑复杂需要多步操作需要多个地方重复使用或需要加文档说明的场景四、写在最后本文通过较大的篇幅详细介绍了Python中函数的使用希望对看到的同学有帮助本篇到此结束感谢观看。