1、定义函数
使用def语句,后跟函数名、括号、冒号,括号中有时可以带有参数,然后换行缩进,编写函数体,返回值用return语句
例如:
def test(x): if x > 0: return x else: return abs(x)print(test(4))print(test(-5))
2、参数
1)位置参数
例如:
def func(x,y,z): print(x) print(y) print(z)func(1,2,3)func(5,6)
执行结果:
123 File "F:/python3/函数.py", line 7, infunc(5,6)TypeError: func() missing 1 required positional argument: 'z'
可以看出这里输入的参数少了一个便会报错
2)默认参数
默认参数的用处还是挺多的,例如,我们填写信息时,有的信息是默认的,比如你所在的国家不填就默认是中国。
例如:
def func(name,sex,country='CHINA'): print(name,sex,country)func('Devilf','boy')func('GY','girl',country='USA')
执行结果:
C:\Python36\python3.exe F:/python3/函数.pyDevilf boy CHINAGY girl USA
设置默认参数需要注意的地方:
一、默认参数必须在必选参数后面
二、当函数有多个参数时,可以将不经常变得参数设置成默认参数
3)可变参数
可变参数就是传入的参数的个数是不固定的,可变的,例如:
def func(*args): print(args)func(1)func(1,2,3,4,5)func([1,2,3,'a','b','c'])func(1,2,3,'a','a',1)
执行结果:
C:\Python36\python3.exe F:/python3/函数.py(1,)(1, 2, 3, 4, 5)([1, 2, 3, 'a', 'b', 'c'],)(1, 2, 3, 'a', 'a', 1)
可以看出可变参数输出的是一个元组,不管我们输入多少参数,都可以进行输出
4)关键字参数
关键字参数和可变参数很像,只不过一个输出的是元组,一个是字典,例如:
def func(name,sex,**kwargs): print(name,sex,kwargs)func('Devilf','boy',country='china',age=24)
执行结果:
C:\Python36\python3.exe F:/python3/函数.pyDevilf boy { 'country': 'china', 'age': 24}
5)参数组合
参数组合是有顺序的,顺序为:
必选参数、默认参数、可变参数、关键字参数
例如:
def func(a,b,c='default',*args,**kwargs): print('a=',a) print('b=',b) print('c=',c) print('args=',args) print('kwargs=',kwargs)print('------1---------')func(1,2)print('-------2---------')func(1,2,c=3)print('--------3----------')func(1,2,c=3,args=('python','java'),name='devilf',sxe='boy')print('---------4------------')func(1,2,3,'a','b','c',n1='name',n2='sex',n3='age')
执行结果:
C:\Python36\python3.exe F:/python3/函数.py------1---------a= 1b= 2c= defaultargs= ()kwargs= {}-------2---------a= 1b= 2c= 3args= ()kwargs= {}--------3----------a= 1b= 2c= 3args= ()kwargs= { 'args': ('python', 'java'), 'name': 'devilf', 'sxe': 'boy'}---------4------------a= 1b= 2c= 3args= ('a', 'b', 'c')kwargs= { 'n1': 'name', 'n2': 'sex', 'n3': 'age'}
可以看出,参数组合时,每个参数都需要对应,位置参数、默认参数这两个参数特别需要注意
3、递归函数
递归函数就是自己调用自己。
例如:
def func(x): if x == 1: return 1 else: return x * func(x - 1)a = func(3)print(a)
这里便是在函数里自己调用自己,执行过程大概是这样的:
大概就是这么一个形式,画一个流程图来理解下:
4、高阶函数
变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数称之为高阶函数
例如:
def func(x,y,f): return f(x) + f(y)a = func(2,-3,abs)print(a)
这里abs属于一个内置函数,func是自定义函数,也就是说func这个函数接收了abs这个内置函数作为自己的一个参数。