持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情
python 是一门动态类型语言,在调用函数传递参数时候,不需要指定参数的类型,但是python在使用过程中传递参数的一些小细节你注意到了吗?
python的函数定义很简单,但是在函数传递的时候自由度非常大,支持的类型也很多
参数类型
- 位置参数
- 默认参数
- 可变参数
- 关键字参数
位置参数
传入实参 和 型参 一一对应
def power(x):
return x * x
>>> power(2)
4
>>> power(3)
9
>>> power(1,2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: power() takes 1 positional argument but 2 were given
默认参数
我们可以为一个函数传递默认参数,而且我们可以在传递参数时候指定这个值,来覆盖默认参数。
>>> def power(x,n=5):
... return x**n
...
>>> power(2)
32
>>> power(2,3)
8
可变参数
>>> def summ(*numbers):
... print(type(numbers))
... print(sum(numbers))
...
>>>
>>> summ(1,2,3,4,5)
<class 'tuple'>
15
可变参数既可以直接传入:
func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3));
关键字参数
我们可以将一些键值对,传入函数在函数内解析为一个dict
>>> def person(name, age, **kw):
... print("name:",name,"age:",age,"other:",kw)
... print(type(kw))
...
>>> person("xiaoming",12,addr = "翻斗花园",tel=123123123)
name: xiaoming age: 12 other: {'addr': '翻斗花园', 'tel': 123123123}
<class 'dict'>
关键字参数既可以直接传入:
func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})。
参数顺序
在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。