1.位置传参
def func(a,b):
2.默认参数
def add_end(l=[]): //这种方式不对,默认参数必须是指向不可变的对象
使用以下替换
def add_end(l=None)
l=[]
3.可变参数,就是允许在调用参数的时候可以传入多个(>=0)个,类型于(列表,字典)
def calc(*nums):
calc([1,2,3])
calc(1,2,3)
使用上跟传入数组没有什么区别,但是本质上,参数接受到的是一个tuple(这些参数在传入时,自动组装成一个元组)
4.关键字参数
可变参数 允许传入0个或多个参数,使用“*参数”格式,关键字参数允许在调用时以字典的形式传0个或是多个(一个是传入的是字典,一个传入的是列表)
在传递参数时使用等号(=)链接键和值 ,使用两个**表示关键字参数
def person_info(name,age,**kw):
print(name,age,'other',kw)
person_info('小周',25,city = 'gd')
>>>小周 25 other {city:gd}
5.命名关键字参数
命名关键字参数,是在关键字参数的基础上限制传入的关键字的变量名
和普通关键字参数不同,命名关键字需要一个用来区分的分割符 * 它后面的参数被认为是命名关键字参数
def person_info(name,age,* ,city,job)
这里的*号后面是命名关键字
>>>person_info('小周',25,city="广东",job=“攻城狮”)
>>>小周 25 广东 攻城狮
如果参数里有可变参数则命名关键字就不需要*号分隔箱号了
person_info(name,age,*args,city,obj)
person_info('小周',25,'很B',city='广东',obj='攻城狮')
>>>小周 25 很B 广东 攻城狮
最后总结一下:
python 中,一共有5种参数传递方式(位置参数,默认值参数,可变参数,关键字参数,命名关键字参数)
它们在书写是有一字的顺序要求,即位置参数,默认值参数,可变参数,关键字参数,命名关键字参数