python的参数
今天python人工智障大水课老师给我们讲了一堆跟人工智能不沾边的玩意,但是确实是python的基础操作,有点触及我的知识盲区了。呜呜,python的参数的确是够特性的。
python的参数类型
位置参数(positional arguments,官方定义,就是其他语言所说的参数)
默认参数(被默认赋值的参数)
可变参数
命名关键字参数
关键字参数
位置参数的特性
位置(参数positional arguments)就是其他语言的参数,其他语言没有分参数的种类是因为只有这一种参数,所有参数都遵循按位置一一对应的原则。
默认参数
没什么特性,但有几点注意
默认参数必须处于最右端,否者会产生二义性
还有一点需注意
python的解释器将默认参数当作一个公共对象,如果函数内部修改了它,那么再次调用时默认参数将改变
1 | def defaultzero(list = []): #我们的本意是提供的list参数为0时 返回只有一个0的list |
可变参数
使用于未知个数的参数
可变参数由tuple形式传播
格式【 *参数】
使用该参数的函数可以将整个元组或者列表传进来,但是必须顺序得提前规划好
1 | def xxx(*param): |
关键字参数
关键字的参数是由字典形式传递的
即可变参数传递的是参数值,关键字参数传递的是参数名:参数值键值对
形式:**kw
这是惯用写法,建议使用,容易被理解
1 | def personinfo(name, age, **kw): |
可变参数和关键字参数都可以接受0个或者多个参数
命名关键字参数
Python的命名关键字参数对传入的关键字参数做了进一步的限制。
格式:在关键字参数前增加一个”*”。
1 | def personinfo(name, age, *, gender, city): #只能传gender和city参数 |
关键字参数和命名关键字参数的区别在于,
前者可以传递任何名字的参数,而后者只能传递*后面名字的参数。
如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了
各种参数的组合
顺序:基本参数、默认参数、可变参数、命名关键字参数和关键字参数。
总而言之
python的参数类型可粗分为三类
基本参数,命名关键字参数和关键字参数。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ayano!