21:Python语法-函数2
发布时间:2026/10/5 2:30:37 作者:尧图编辑部 阅读量:1,286

一、变量作用域1、变量的作用域指的是变量的作用范围在哪里可以用哪里不可以用。2、全局变量在函数之外定义的变量称之为全局变量作用范围是整个文件。3、局部变量在函数内部定义的变量称之为局部变量作用范围函数内部函数外部无法使用。4、示例a1 #全局变量 def function2(str_1): num0 print(f全局变量{a}) for i in str_1: if i in aeiouAEIOU: num1 #局部变量 return num answerfunction2(hello) print(f元音字母个数{answer})二、global关键字1、global关键字用于明确告诉Python解释器在函数中要使用全局变量使得可以在函数内部修改全局变量的值。2、示例a1 #全局变量 def function2(str_1): num0 global a #如果不适用global无法在函数中修改全局变量 a1 print(f修改后的全局变量{a}) for i in str_1: if i in aeiouAEIOU: num1 #局部变量 return num answerfunction2(hello) print(f元音字母个数{answer}) print(a) #使用global后全局变量发生改变如果不适用global全局变量就不会发生改变函数外部无法访问函数内部的局部变量a1三、函数参数3.1传参方式1、位置参数调用时根据函数定义是的位置来传递参数调用函数时参数顺序与定义函数时参数顺序完全一致def function3(name,gender,age,grades): print(f位置传参姓名{name},性别{gender},年龄{age},成绩{grades}) return {name:name,gender:gender,age:age,grades:grades} #位置参数 answer1function3(张三,男,18,234) print(answer1)2、关键字传参调用函数时以函数定义时形参名称作为关键字。def function3(name,gender,age,grades): print(f关键字传参姓名{name},性别{gender},年龄{age},成绩{grades}) return {name:name,gender:gender,age:age,grades:grades} #关键字传参 answer1function3(grades345,name李四,gender女,age35) print(answer1)3、优缺点对比优点缺点应用场景位置传参简洁可读性差、容易出错、维护难参数少不容易混淆关键字传参可读性强、维护简单代码不简洁参数多容易混淆3.2默认参数1、默认参数也称缺省参数用于在函数定义时为参数提供默认值调用函数时可以不传递有默认值的参数。如果传递了参数默认值就不再生效。2、默认参数必须放在没有默认值的参数列表的后面一个函数在定义时是可以设置多个默认参数的3、示例使用默认值def function3(name,gender,age,grades234): print(f关键字传参姓名{name},性别{gender},年龄{age},成绩{grades}) return {name:name,gender:gender,age:age,grades:grades} #关键字传参 answer1function3(name李四,gender女,age35) print(answer1)传递了参数默认值就不再生效def function3(name,gender,age,grades234): print(f关键字传参姓名{name},性别{gender},年龄{age},成绩{grades}) return {name:name,gender:gender,age:age,grades:grades} #关键字传参 answer1function3(name李四,gender女,age35,grades456) print(answer1)3.3不定长参数1、不定长参数用于函数定义及调用时参数个数不确定0个或多个的场景。2、不定长参数-位置传递*args传递的所有匹配的位置参数都会被args变量收集这些参数会合并封装为一个元组args是元组类型并不会封装关键字参数def function3(*args): return max(args), min(args), round(sum(args)/len(args),2) max,min,avgfunction3(34,54,23,5456,8,78,564,563,5,64,5) print(max,min,avg)3、不定长参数-关键字传递**kwargs参数是以”键值“形式传递的关键字参数这些”键值“参数都会被kwargs接受封装为字典类型。def function3(*args,**kwargs): max_gradesmax(args) min_gradesmin(args) print(kwargs) if kwargs.get(round) is not None: avg_gradesround(sum(args)/len(args),kwargs.get(round)) if kwargs.get(print): print(f最大值{max_grades},最小值{min_grades},平均值{avg_grades}) return max_grades,min_grades,avg_grades print(function3(23,4,34,round3,printTrue))*args适用于处理数量不确定的数据。**kwargs适用于处理数量不确定的选项用来定制函数行为四、函数参数类型1、普通参数类型数字、布尔、字符串、列表、元组、集合、字典等。2、特殊类型函数def add(a,b): return ab def subtract(a,b): return a-b def multiply(a,b): return a*b def Divide(a,b): return a/b def function4(a,b,oper): return oper(a,b) print(function4(1,3,add)) print(function4(2,4,subtract)) print(function4(2,4,multiply)) print(function4(2,4,Divide))五、匿名函数1、匿名函数指的是没有名称的函数前面def所定义的函数为命名函数。2、匿名函数需要通过lambda表达式来声明函数可以简化简单函数的编写。3、语法结构lambda 参数列表:函数体 lambda x,y:x-y4、匿名函数可以赋值给变量可以通过变量调用匿名函数addlambda x,y:xy print(add(1,2))5、匿名函数中可以返回结果也可以不返回结果。返回结果时不需要写return,表达式的允许结果就是返回结果。