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:函数

评论关闭