函数的定义及作用 函数是组织好,可重复使用的,用来实现相关功能的代码段 函数提高了代码的重复利用率和应用的模块性。 除Python自带的函数之外,也可以自己创建函数,叫做自定义函数自定义函数 语法:def函数名(参数):函数体 函数代码块以def开头 参数为输入值,放于函数名后口号里面, 函数内容以冒号:开始,函数体缩进,return返回输出值defadd(x,y):zxyreturnzprint(add(1,2))必须参数 参数需以正确的顺序传入函数,调用时的数量必须和声明时的一样defadd(x,y):。。。zxy。。。returnz。。。print(add(1))Traceback(mostrecentcalllast):Filestdin,line1,inmoduleTypeError:add()missing1requiredpositionalargument:y关键字参数 函数调用使用关键字参数来确定传入的参数值,此时,如果多个函数则不需要按照指定顺序。defperson(name,age,sex,interest):。。。print(name是一个高中生,今年str(age)岁了,性别sex,喜欢interest)。。。或者使用return,是一样的效果defperson(name,sex,interest,age16):returnname是一个高中生,今年str(age)岁了,性别sex,喜欢interest按照参数顺序,可以不指明参数名person(小明,18,男,读书)小明是一个高中生,今年18岁了,性别男,喜欢读书如果不按照顺序,输出的内容则有可能出错person(男,18,读书,小明)男是一个高中生,今年18岁了,性别读书,喜欢小明指定参数名,则不需要按照对应顺序person(sex男,age18,interest读书,name小明)小明是一个高中生,今年18岁了,性别男,喜欢读书默认参数 在定义函数时,指定参数默认值。调用时如果不传入参数,则使用默认值defperson(name,age16,sex,interest):。。。print(name是一个高中生,今年str(age)岁了,性别sex,喜欢interest)。。。Filestdin,line1SyntaxError:nondefaultargumentfollowsdefaultargument以上错误,调整默认参数位置至所有参数最后就可以解决defperson(name,sex,interest,age16):。。。print(name是一个高中生,今年str(age)岁了,性别sex,喜欢interest)。。。person(sex男,age18,interest读书,name小明)小明是一个高中生,今年18岁了,性别男,喜欢读书person(sex男,interest读书,name小明)小明是一个高中生,今年16岁了,性别男,喜欢读书不定长参数 一个星号:用于存放声明时未命名的参数,这些参数叫做不定长参数。函数调用时没有参数传入的个数限制,这些函数声明时是未命名的参数会以元组形式导入defperson(name,canshu):。。。print(name)。。。print(canshu)。。。person(小明,男,读书)小明(男,读书) 不定长部分如果没有指定参数,传入是一个空元组person(小明)小明() 加了两个星号的参数会以字典的形式导入defperson(name,canshu):。。。print(name)。。。print(canshu)。。。调用时必须指明参数名称person(小明,男,读书)Traceback(mostrecentcalllast):Filestdin,line1,inmoduleTypeError:person()takes1positionalargumentbut3weregivenperson(小明,sex男,interest读书)小明{sex:男,interest:读书} 声明函数时,星号可以单独出现,后的参数必须用关键字传入deff(a,b,,c):。。。returnabc。。。f(1,2,3)Traceback(mostrecentcalllast):Filestdin,line1,inmoduleTypeError:f()takes2positionalargumentsbut3weregivenf(1,2,c3)6强制位置参数 用来指明函数形参必须使用指定位置参数,不能使用关键字参数的形式。 3。8版本之后的才能使用匿名函数lambda 不使用def定义函数,没有函数名 lamdba主体时一个表达式,而不是代码块,函数体比def简单很多语法:lambda〔arg1〔,arg2,。。。。。argn〕〕:expression示例:lambda1lambdaname,age,sex,interest:name是一个高中生,今年str(age)岁了,性别sex,喜欢interestlambda1(小明,18,男,读书)小明是一个高中生,今年18岁了,性别男,喜欢读书lambda1(name小明,sex男,interest读书,age18)小明是一个高中生,今年18岁了,性别男,喜欢读书变量作用域 定义在函数内部的为局部变量,仅能在函数内部使用 定义在函数外部的为全局变量,可在全局使用a5deftest(b,c):。。。returna,b,c。。。test(6,7)(5,6,7)bTraceback(mostrecentcalllast):Filestdin,line1,inmoduleNameError:namebisnotdefineda5 模块是将包含所有定义的函数和变量的文件,一般将同类功能的函数组和在一起称为模块。 模块需要导入后,在调用相应函数进行使用 模块导入的方法:import导入全部importmodule1〔,module2〔,。。。moduleN〕导入模块importsys调用函数sys。path〔,D:Anaconda3python37。zip,D:Anaconda3DLLs,D:Anaconda3lib,D:Anaconda3,D:Anaconda3libsitepackages,D:Anaconda3libsitepackageswin32,D:Anaconda3libsitepackageswin32lib,D:Anaconda3libsitepackagesPythonwin〕as进行重命名importpandasaspdfromimport 从模块中导入一个指定的部分frommodnameimportname1〔,name2〔,。。。nameN〕〕fromimport 把一个模块的所有内容全都导入frommodnameimport