函数定义与参数
函数的定义
在python中函数使用关键字 def+函数名+(参数)的形式来定义一个函数。
举个最简单的例子,为了完成两个数相加的功能我们定义了下面的这个函数。
def add(a,b):
print a+b
这个函数具有两个形参a与b分别代表两个相加的数字,然后返回a+b的结果。
函数的调用
在python中,我们使用函数名+(参数)的方式来调用。
>>> add(1,2)
3
在括号中写入我们实际交给函数的参数,即实际参数,然后函数就会完成我们已经编好的功能。
函数的参数
一个函数一般由函数名,参数,函数体,返回值四个部分组成,其中参数与返回值都可以没有。除了参数以外的三个部分都比较简单,所以这里主要要对参数这块内容进行一个详细的分析。
参数的类型
1.必须参数
必须参数是最常用的参数,上面提到的函数 “add”的参数a,b就是必须参数
>>> def function(a,b):
print("必须参数是%d,%d"%(a,b))
>>> function(1,2)
必须参数是1,2
一个函数可以定义任意个必须参数,每个参数之间用逗号分隔,用这种方式定义的函数在调用的的时候也必须在函数名后的小括号里提供个数相等的实际参数,而且位置需要一一对应。
2.缺省参数
缺省参数可以看做是必须参数的改进版,缺省参数相对于必须参数多了默认值。例如:
>>> def function(a,b=2):
print("必须参数是%d,缺省参数是%d"%(a,b))
>>> function(1)
必须参数是1,缺省参数是2
>>> def function2(a,b=2):
print("必须参数是%d,缺省参数是%d"%(a,b))
>>> function(1,3)
必须参数是1,缺省参数是3
缺省参数在调用时如果不写,就会使用默认值,如果调用时给了,就会用新的值
3.可变参数
我们的函数经常会碰到使用的参数不能确定个数的情况,这个时候就需要用到可变参数*args。
可变参数可以存储多个参数,调用时多个参数之间用逗号分隔。
>>> def function(*args):
print(args)
print(*args)
>>>function(1,2,3,4,5,6)
(1, 2, 3, 4, 5, 6)
1 2 3 4 5 6
这里“ * ”的使用需要注意
当一个元组或者列表加上*号时即表示这个元组、列表的解包形式
a=[1,2,3,4,5]
>>>print(*a)
1 2 3 4 5
当参数以*args的形式接收多个元素的时候,args即为包含这些元素的元组
4.关键字参数
关键字参数**kwargs与可变参数很像,区别在于关键字参数的元素是一对一对的键值对
>>>def function (**kwargs):
print(kwargs)
>>>function(a=1,b=2,c=3)
{'a': 1, 'b': 2, 'c': 3}
此时a=1,b=2,c=3被自动转换为字典的形式出入函数中
一个函数中可以同时包含以上所有的参数类型,但是定义时顺序必须为必选参数、默认参数、可变参数、关键字参数,不然会产生歧义,导致程序无法区分