1模块函数1.1模块函数模块函数是指模块中的函数。模块功能分为三种:内置模块:也叫标准库第三方开源模块:可以通过包管理工具进行安装和定制Module1.2Importimport主要有三种语法:import...import。..as...from...import...from...import...as...1.2.1import直接导入整个模块,import后直接加上模块名。importmathmath.e1.2.2importas也是直接导入整个模块,模块名后接import,别名后接as,如importmathasm,其中m为math的别名。1.2.3fromimport从某个模块导入某个函数,from后面是模块名,import后是函数名。1.2.4fromimportas和上一个类似,从模块中导入一个函数,只是给函数加上一个别名。2CustomFunctions2.1使用关键字defdefinition定义一个函数:deffunc():print(1)2.2设置docstringdocstring是注释,描述函数的功能,使用三个单引号或者三个双引号,都可以使用help()获取函数的文档字符串。deffunc():'''funcdocstring'''print(1)help(func)2.3函数调用中可以直接使用函数名,必要时加上参数。func()func(22)2.4返回值return中指定返回值,可以返回多个值:deff():return1,2,3,4相当于返回一个元组。如果函数没有返回,则返回None。2.5形式参数2.5.1形式参数分类形式参数是函数定义时参数列表中的参数,可分为:OptionalFormalParameters:带默认值的形式参数RequiredFormalParameters:不带默认def的形式参数f(x1,x2,x3=3)其中x1和x2是必需参数,x3是可选参数。2.5.2*和**带一个*的形参表示参数类型是元组,带两个*的形参表示参数类型是字典。2.5.3命名关键字参数出现在*参数之后。deff(x1,*x2,x3,x4)x3和x4为命名关键字参数,调用时必须显式使用参数名称。2.6参数Python参数可以分为位置参数和关键字参数。2.6.1位置参数位置参数是不指定形参名称的实参,每个实参按顺序与一个形参相关联。2.6.2关键字参数关键字参数是指定形参名称的实参,以键值对的形式指定,可以乱序调用。deff(x1,x2,x3):print(x1,x2,x3)f(1,2,3)f(x3=999,x1=888,x2=999999)2.7变量可见性Python变量有三种可见性类型:全局变量、局部变量、非局部变量。2.7.1局部变量函数中的变量是局部变量,所以下面的代码会输出9:x1=8deff():x1=9如果print(x1)f()在x1之前输出怎么办?直接提示itisnotdefinedx1意思是全局变量x1在函数中是不可见的,但是作者不死心,一定要跑起来。它说局部变量x1还没有被赋值。注意是局部变量,所以这也证明全局变量在函数内部是不可见的。2.7.2全局变量要使全局变量在函数内可见,使用global:x1=8deff():globalx1print(x1)x1=9print(x1)f()globalx1表示x1是一个全局变量,请注意,globalx1需要在单独的一行中。2.7.3嵌套函数中使用非局部变量,使用非局部声明表示内层函数的变量属于外层函数。x1=8deff():x1=9print(x1)deff1():nonlocalx1print(x1)x1=10print(x1)returnf1f()f()()第一个和第二个9都是输出f()中的print(),第三个9是f1()中的print()输出的。2.8参数传递规则实参传递给形参时,有两种传递规则,一种是值传递,一种是地址传递。2.8.1值传递当实参为不可变对象时,采用值传递规则。常见的不可变对象类型包括int、float、str、bool和tuple。deff(x):x=1print(x)x=3print('--------int-----')f(x)print(x)print()x='string'print('--------str-----')f(x)print(x)print()x=(3,4,5)print('--------元组------')f(x)print(x)print()x=5.799print('--------float------')f(x)print(x)print()2.8.2当地址传递参数为可变对象时,采用地址传递规则。修改形参的值也会改变实参的值。常见的变量对象类型包括列表、集合和字典。deff(x):iftype(x)==list:x=x.reverse()elifisinstance(x,set):x.add(8)else:x['0']=3x=[1,2,3]print('--------列表------')print(x)f(x)print(x)print()x={4,5,6}print('------设置------')print(x)f(x)print(x)print()x={'a':1,'b':2}print('-------dict------')print(x)f(x)print(x)print()2.9lambda函数lambda是一个特殊的自定义函数,使用关键字lambda定义,是一个匿名函数,函数体一般都很短。2.9.1定义以关键字lambda开头,后面是参数列表,参数列表后面加一个冒号,后面是返回值。y=lambdax:x*3z=lambdax,y:x*y2.9.2调用调用可以通过“函数名”调用,也可以与其他函数结合使用。
