首页 > 代码库 > Python:函数
Python:函数
函数(又叫方法):
将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。
定义函数:
def my_open(): #定义一个my_open的函数,要带冒号
函数即变量:意思就是说,只是一个函数名的话,它就是一个普通变量,这个变量里面存的是这个函数里面的代码而已
调用函数:
My_open() #函数名加括号即调用此函数,函数不调用就不会执行
函数参数:
1.函数必填参数:
def read_users(file_name,age): #定义函数时,括号里是形参(即变量);多个参数用逗号隔开,这种又叫必填参数或位置参数
read_users(‘a.txt’,20) #调用函数时,括号里是实参,是实际的参数;多个参数用逗号隔开
2.函数默认值参数:
def read_users(name,sex=’nan’): #sex是默认值参数
read_users(‘hn’) #调用时如果不填sex对应的实参,就默认是‘nan’
read_users(‘hn’,’nv’) #调用时如果填sex对应的实参,就取实参的值
3.函数可变参数:
def post(*args): #也叫参数组(习惯性写args,也可以写其他变量),数量不固定,不是必填的,接收的是一个元组,它把调用函数时传进去的参数放到一个元组里
4.函数关键字参数:
也不是必填参数,可以为空
def kw(**kwargs) #两个星号,接收的是一个字典
kw(name=’hn’,age=20) #调用时实参要写关键字,括号里可以直接填字典变量,但要加上**,比如(dic={‘ name’=’hn’,’age’=20}) kw(**dic)
5.参数的顺序:
按照必填参数、默认值参数、可变参数、关键字参数的顺序接收参数,否则会报错,例:def other(name,country=’china’,*args,**kwargs)
6.调用函数时使用关键字参数:
如果定义函数时,必填参数太多,在调用函数时,可以用key=value形式传实参,这种实参可以无序。例:定义函数:def write(filename,model,user,os): 调用:write(‘a.txt’,user=’hn’,os=’windows’,model=’hhh’) #调用函数传实参时,必填参数必须在关键字参数前面
函数返回值:
用return a #函数碰到return立即结束函数;调用完函数之后会返回一个结果
没有返回值的函数,默认返回None
PS:如果函数里有while循环:碰到return,循环和函数都结束
返回多个值:
return a,b,c #用逗号隔开,返回的多个值会放到元组里
局部变量、全局变量、常量:
给变量命名:1用下划线read_ffilename 2驼峰readFileName
局部变量:在函数里面定义的变量叫局部变量,只能在函数里面用
全局变量:在函数外定义的变量,是全局变量,在函数内也能使用
在函数里改全局变量:
(int、string类型):用global声明
用global声明一下,即global a a=100这样全局变量a的值就变了,如果不用global声明,a只是在函数内部被定义、被改变,出了函数,a的值还是函数体之前的值
List、dic 类型,文件句柄:就不用global声明,在函数里改变值,出了函数值也变化了。如果用global声明,会报错。
函数递归调用:
即一个函数自己调用自己,最多递归调用999次。必须有一个明确的结束条件,效率不高,少用递归。用递归的话,要用return,作为结束条件(函数碰到return就结束)
高阶函数:
如果一个函数的入参是一个函数名的话,这个函数就是高阶函数
例:def add(ax,y,z)
res=z(x)+z(y)
return res
add(‘98’,’100’,int)
Python:函数