一、定义函数java
使用def语句,后跟函数名、括号、冒号,括号中有时能够带有参数,而后换行缩进,编写函数体,返回值用return语句python
例如:数组
def test(x): if x > 0: return x else: return abs(x) print(test(4)) print(test(-5))
二、参数函数
1)位置参数ui
例如:spa
def func(x,y,z): print(x) print(y) print(z) func(1,2,3) func(5,6)
执行结果:code
1 2 3 File "F:/python3/函数.py", line 7, in <module> func(5,6) TypeError: func() missing 1 required positional argument: 'z'
能够看出这里输入的参数少了一个便会报错blog
2)默认参数递归
默认参数的用处仍是挺多的,例如,咱们填写信息时,有的信息是默认的,好比你所在的国家不填就默认是中国。it
例如:
def func(name,sex,country='CHINA'): print(name,sex,country) func('Devilf','boy') func('GY','girl',country='USA')
执行结果:
C:\Python36\python3.exe F:/python3/函数.py
Devilf boy CHINA
GY girl USA
设置默认参数须要注意的地方:
1、默认参数必须在必选参数后面
2、当函数有多个参数时,能够将不常常变得参数设置成默认参数
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/函数.py Devilf 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= 1 b= 2 c= default args= () kwargs= {} -------2--------- a= 1 b= 2 c= 3 args= () kwargs= {} --------3---------- a= 1 b= 2 c= 3 args= () kwargs= {'args': ('python', 'java'), 'name': 'devilf', 'sxe': 'boy'} ---------4------------ a= 1 b= 2 c= 3 args= ('a', 'b', 'c') kwargs= {'n1': 'name', 'n2': 'sex', 'n3': 'age'}
能够看出,参数组合时,每一个参数都须要对应,位置参数、默认参数这两个参数特别须要注意
三、递归函数
递归函数就是本身调用本身。
例如:
def func(x): if x == 1: return 1 else: return x * func(x - 1) a = func(3) print(a)
这里即是在函数里本身调用本身,执行过程大概是这样的:
大概就是这么一个形式,画一个流程图来理解下:
四、高阶函数
变量能够指向函数,函数的参数能接收变量,那么一个函数就能够接收另外一个函数做为参数,这种函数称之为高阶函数
例如:
def func(x,y,f): return f(x) + f(y) a = func(2,-3,abs) print(a)
这里abs属于一个内置函数,func是自定义函数,也就是说func这个函数接收了abs这个内置函数做为本身的一个参数。