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)
执行结果:
1 2 3 File "F:/python3/函数.py", line 7, in <module> func(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/函数.py
Devilf boy CHINA
GY 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/函数.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‘}
可以看出,参数组合时,每个参数都需要对应,位置参数、默认参数这两个参数特别需要注意
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这个内置函数作为自己的一个参数。