
1. 函数的定义函数函数是组织好的、可重复使用的、用来实现特定功能的代码片段。语法# 定义函数def函数名(参数列表):函数体......return返回值# 调用函数函数名(参数)注意函数定义时的参数列表与返回值语句是可有可无的视具体情况而定函数必须先定义后调用函数定义时内部代码并未执行在调用时才执行函数中通过缩进来描述归属关系示例# 定义一个函数计算圆形的面积defcircle_area(r):area3.14*r*rprint(f半径为{r}的圆形的面积是{area})returnarea# 函数调用datacircle_area(5)print(fdata的值是{data})2. 变量作用域在python中变量分为全局变量和局部变量全局变量应用于整个.py文件局部变量应用于函数体中。# 定义全局变量number10deffun():# 定义局部变量number100print(f局部变量number的值{number})# 调用函数fun()print(f全局变量number的值{number})如果要在函数体中使用全局变量可以使用global关键字。global关键字用于明确地告诉Python解释器在函数中要使用全局变量使得可以在函数内部修改全局变量的值。# 定义全局变量number10deffun():globalnumber number100print(f使用global关键字指定使用全局变量后number的值{number})# 调用函数fun()print(f全局变量number的值{number})注意事项尽量避免在函数中使用全局变量这会使得代码难以维护和调试考虑使用函数参数和返回值来传递数据而不是依赖全局变量global主要用在程序的状态、配置和计数器等场景中3. 函数中的参数3.1 传参方式两种传参方式位置传参在调用函数时传入的实参的顺序于定义函数时形参的顺序完全一致关键字传参在调用函数时通过“形参名值”的形式传递参数顺序没有要求如果同时存在位置参数于关键字参数位置参数在前关键字参数在后传参方式适用场景如果参数比较少如不超过3个可直接使用位置传参如果参数数量较多建议使用关键字传参3.2 默认参数默认参数在方法中设置默认的参数值如果传参则覆盖默认值不传参则使用默认值执行# 位置传参city设置默认参数deffun1(name,age,city北京):print(name,name,age,age,city,city)# 关键字传参deffun2(name,age,city,gender):print(name,name,age,age,city,city,gender,gender)fun1(张三,20,广州)fun2(name李四,age21,city北京,gender男)# 两种传参混合fun2(王五,22,city深圳,gender男)3.3 不定长参数不定长参数也叫可变参数用于函数定义及调用时参数个数不确定0个或多个的场景*args不定长位置参数传递的所有匹配的位置参数都会被args变量收集这些参数会合并封装为一个元组agrs是元组类型并不会封装关键字参数**kwargs不定长关键字参数函数调用时通过关键字参数传递多个参数封装到一个字典dictargs、kwargs只是约定俗成的变量名并不是关键字这里可以使用任何合法的变量名如*aaa、**bbb# 定义不定长参数的函数位置参数*args -- 元组deffun(*args):# 调用函数datafun(10,210,30,54,84)print(data)# 定义不定长参数的函数关键字参数**kwargs -- 字典deffun1(*args,**kwargs):ifkwargs.get(print):print(打印出数据信息)# 调用函数data1fun1(10,210,printTrue)不定长参数适用场景*args适用于处理数量不确定的数据**kwargs适用于处理数量不确定的选项函数的配置参数用来定制函数的行为3.4 函数的参数类型普通参数数字、布尔、字符串、列表、元组、集合、字典等特殊参数函数以函数作为参数的示例# 定义一个实际处理的函数两数相加defadd(X,y):returnXy# 定义一个实际处理的函数两数相减defsubtract(X,y):returnX-y# 定义一个过程处理函数用于调用实际处理的函数defcalc(x,y,oper):returnoper(x,y)# 使用sumcalc(11,22,add)print(sum)