定义函数
def name(parameters):
statements
(return)
return返回某个值或多个值,省略则返回none。
参数的类型可以是任意的,也可以为空
def subtraction(x,y):
z=x-y
return z
调用
subtraction(2,1)
传入参数时,可以直接按照参数位置传入参数,称为位置参数;还可以用定义参数时使用的参数名传入参数,称为关键词参数。
subtraction(x=2,y=1)
1
只使用关键词参数时,可以忽略参数位置:
subtraction(y=1,x=2)
1
还可以混用两种传参方法:
subtraction(2,y=1)
在混用时,位置参数必须在关键词参数的前面;如有多个位置参数及关键词参数,位置参数的位置不可变,需要与函数定义的参数位置相一致,关键词参数之间的位置可以改变。
定义参数时,可以使用默认参数:
def subtraction(x,y=1):
z=x-y
return z
当有两个或两个以上的参数时,变量参数必须在默认参数的前面。
当函数定义中含有默认参数时,调用参数的时候可以省略默认参数或者对默认参数进行修改,方法与传入参数的方法一致。
subtraction(2)
1
subtraction(2,0)
2
substraction(2,y=0)
2
以上定义的函数的参数数目是一定的,参数数目不定的函数可以通过以下方法定义:
1.def name(x,*args)
args是函数中除去x以外的参数构成的tuple类。
def add_all(x,*args):
y=x
for i in args:
y+=i
return y
add_all(1,2,3,4,5,6,7,8,9)
45
用这样的方式定义的函数不能使用关键词传参的方法,要使用关键词传参,可以用这样的方法
2.def name(x,**kwargs):
这里kwargs相当与一个字典,关键词为字典里的键,赋值为字典里的值。
def add_all(**kwargs):
y=0
for i in kwargs.values():
y+=i
return y
add_all(a=1,b=2,c=3,d=4,e=5,f=6,g=7,h=8,i=9)
45
还可以混用*args和**kwargs传入任意个位置参数和关键词参数,*args要在**kwargs前面,对应的位置参数也要在关键词参数的前面。
3.def add_all(*args,**kwargs):
y=0
for i in args:
y+=i
for j in kwargs.values():
y+=j
return y
add_all(1,2,3,4,5,6,a=7,b=8,c=9)
45
return也可以返回多个值:
def function(x,y):
a=x+y
b=x-y
return a,b
function(1,1)
(2,0)
返回的多个值以元组的方式实现。
也可以用元组的方式传入参数。
function(*(1,1))
(2,0)
那么自然可以以字典的方式传入参数。
function(**{'x':1,'y':1}) //字典的键必须和函数定义的参数名称相一致
(2,0)