Python快乐学习、快乐成长函数1、函数的定义与调用2、形参和实参2.1 形参2.2 实参3、默认参数和关键字参数3.1 默认参数3.2 关键字参数4、不定长参数5、拆分参数列表6、返回值7、import模块8、全局变量__name__和系统模块8.1全局变量8.1系统模块9、 from...import10、包11、猴子补丁和第三方模块获取安装11.1猴子补丁(Monkey Patch)11.1第三方模块12、变量的作用域和局部变量13、全局变量和global关键字14、nonlocal关键字15、递归函数16、高阶函数和lambda函数17、闭包18、装饰器结尾函数1、函数的定义与调用定义函数即根据函数的输入、输出和数据处理完成函数代码的编写。定义函数只是规定了函数会执行什么操作但并不会真正去执行。调用函数即真正去执行函数中的代码是指根据传入的数据完成特定的运算并将运算结果返回到函数调用位置的过程。defCalcNum():#定义名字为calcNum的函数CalcNum()#调用函数CalcNum2、形参和实参2.1 形参形参的全称是形式参数即定义函数时函数名后面的一对小括号中给出的参数列表。defCalcNum(i1,i2):#定义名字为calcNum的函数2.2 实参实参的全称是实际参数即在调用函数时函数名后面的一对小括号中给出的参数列表。CalcNum(i3,i4)#调用函数CalcNum3、默认参数和关键字参数3.1 默认参数函数的默认参数就是缺省参数即当调用函数时如果没有为某些形参传递对应的实参则这些形参会自动使用默认参数值。defPersonInfo(name,country中国):#参数country的默认参数值为中国’PersonInfo(ZHANG)#这里没有给country传实参值但因为有默认参数所以不会出错PersonInfo(Zhang,美国)#给country传了实参则不再使用默认参数3.2 关键字参数在调用函数时除了前面那种通过位置来体现实参和形参的对应关系的方法即位置参数还有一种使用关键字参数的方法其形式为“形参实参”。defPersonInfo(name,chineselevel良好,country中国)PersonInfo(country美国,chineselevel一般,nameJohn)#正确示例PersonInfo(nameDavid,良好,美国)#即第一个参数使用了关键字参数形式、后两个参数使用了位置参数形式则系统会报错4、不定长参数不定长参数即在调用函数时可以接收任意数量的实参这些实参在传递给函数时会被封装成元组位置参数或字典关键字参数形式。def 函数名([普通形参列表,] *不定长参数名 [,普通形参列表]):函数体或def 函数名([普通形参列表,]**不定长参数名):函数体提示“*不定长参数名” 表示这个不定长参数对应的是一组位置参数而 “**不定长参数名” 表示这个不定长参数对应的是一组关键字参数。defPersonInfo1(name,*args):#定义函数PersonInfo1defPersonInfo2(name,**args):#定义函数PersonInfo2#使用PersonInfo1(李晓明,良好,中国)PersonInfo2(李晓明,中文水平良好,国家中国)#打印姓名 李晓明 其他(良好,中国)姓名 李晓明 其他{中文水平:良好,国家:中国}5、拆分参数列表如果一个函数所需要的参数已经存储在了列表、元组或字典中则可以直接从列表、元组或字典中拆分出来函数所需要的这些参数。defPersonInfo(name,chineselevel,country):#定义函数PersonInfod{country:中国,chineselevel:良好,name:ZHANG}PersonInfo(**d)提示**d的作用是把字典d中的所有元素拆分出来作为PersonInfo的实参即等价于PersonInfo(country‘中国’, chineselevel‘良好’, name‘ZHANG’)6、返回值return语句defCalcNum(i1,i2):returni1*i2#通过return语句将计算i1和i2的乘积7、import模块当要使用一个模块中的某些功能时我们可以通过import方式将该模块导入。import module1import module2…import moduleN或import module1,module2, …, moduleN新建calc.py:defCalcNum(i1,i2):returni1*i2新建main.py导入模块importcalc#导入calc模块calc.CalcNum(5,10)#调用calc模块中的CalcNum函数计算乘积8、全局变量__name__和系统模块8.1全局变量每个模块中都有的一个全部变量__name__。name__的作用是获取当前模块的名称如果当前模块是单独执行的则其__name__的值就是__main否则如果是作为模块导入则其__name__的值就是模块的名字。calc.py文件print(__name__)#输出__main__main.py文件importcalcprint(__name__)#输出calc模块单独运行和作为模块导入时其__name__的值是不同的8.1系统模块可以直接导入系统提供的模块使用其中的功能。importsys#导入系统提供的sys模块9、 from…import除了使用import将整个模块导入也可以使用from import将模块中的标识符变量名、函数名等直接导入当前环境这样我们在访问这些标识符时就不再需要指定模块名。语法格式from 模块名 import 标识符1, 标识符2, …, 标识符NfromcalimportCalNum#导入cal 模块中的CalNumfromcalimport*#导入cal 模块中所有标识符10、包如果要使用sound包的effects子包的echo模块则可以通过下面方式导入importsound.effects.echo也可以使用from import方式导入包中的模块如fromsound.effectsimportecho使用from import也可以直接导入模块中的标识符如fromsound.effects.echoimportechofilter11、猴子补丁和第三方模块获取安装11.1猴子补丁(Monkey Patch)猴子补丁是指在运行时动态替换已有的代码而不需要修改原始代码。例如在使用第三方模块时模块中的某些方法可能无法满足我们的开发需求。此时我们可以在不修改这些方法代码的情况下通过猴子补丁用一些自己编写的新方法进行替代从而实现一些新的功能。11.1第三方模块第三方模块的获取与安装有多种方法其中最推荐的一种方法是使用pip工具命令格式pip install 模块名称为了加快安装包下载速度可以指定从国内镜像完成安装包的下载和安装如将前面安装numpy的pip命令改为pip install numpy -i http://pypi.douban.com/simple --trusted-hostpypi.douban.com12、变量的作用域和局部变量按照作用域的不同Python中的变量可分为局部变量和全局变量。局部变量在一个函数中定义的变量就是局部变量包括形参其作用域是从定义局部变量的位置至函数结束位置。13、全局变量和global关键字在所有函数外定义的变量就是全局变量其在所有函数中都可以使用。在一个函数中使用global关键字可以声明在该函数中使用的是全局变量、而非局部变量。14、nonlocal关键字在Python中函数的定义可以嵌套即在一个函数的函数体中可以包含另一个函数的定义。通过nonlocal关键字可以使内层的函数直接使用外层函数中定义的变量。15、递归函数递归函数是指在一个函数内部通过调用自己来完成一个问题的求解。deffac(n):#定义函数facifn1:#如果要计算1的阶乘则直接返回1结束递归调用的条件return1returnn*fac(n-1)#将计算n!分解为n*(n-1)!print(fac(5))#调用fac函数计算5的阶乘并将结果输出到屏幕16、高阶函数和lambda函数高阶函数是指把函数作为参数的一种函数。defFunAdd(f,x,y):#定义函数FunAddreturnf(x)f(y)#用传给f的函数先对x和y分别处理后再求和并返回lambda函数也称为匿名函数是一种不使用def定义函数的形式其作用是能快速定义一个简短的函数。lambda [参数1[, 参数2, …, 参数n]]: 表达式defFunAdd(f,x,y):#定义函数FunAddreturnf(x)f(y)#用传给f的函数先对x和y分别处理后再求和并返回print(FunAdd(lambdax:x**2,3,-5))#调用函数FunAdd计算3的2次方(-5)的二次方17、闭包如果内层函数使用了外层函数中定义的局部变量并且外层函数的返回值是内层函数的引用就构成了闭包。18、装饰器利用装饰器可以在不修改已有函数的情况下向已有函数中注入代码使其具备新的功能。结尾记录自己的快乐学习日志也祝贺观看到这的小伙伴早日学有所成财富自由。记得点赞、收藏呀