python 参数匹配规则

来源:互联网 发布:淘宝店开店流程费用 编辑:程序博客网 时间:2024/06/07 23:43

不常用到参数匹配的全部功能,容易忘掉,做个笔记总结一下,备查:

参数匹配模型:位置参数,关键字参数,默认参数,可变参数(字符 * )开头,可变参数解包,Keyword-only 参数

函数调用时:

        func(value), 

        func(name=value), 

        func(*sequence), 调用过程中解包为分开的,单个的参数

        func(**dict), 调用过程中解包为分开的,单个的参数

函数定义时:

        def func(name),  基于位置或者变量名

        def func(name=value), 默认参数值

        def func(*name), 收集任意的额外不匹配的参数到元组中,

        def func(**name), 收集任意的额外不匹配的参数到字典中,

        def func(*args, name), *args 之后的 name 参数就是 Keyword-only 参数,必须在调用中按照关键字传递

        def func(*, name=value), ( python 3.0 ), * 之后的 name 参数就是 keyword-only 参数,必须在调用中按照关键字传递

函数调用中,参数必须以下列顺序出现:位置参数,关键字参数和 *sequence 形式组合,**dict 形式参数

函数定义时,参数必须以下列顺序出现:一般参数,默认参数,*name 或者 * 形式参数, name 或者 name=value keyword-only 参数, **name 形式参数

所以,不论是在函数调用中,还是在函数定义中,**arg 形式参数都必须出现在最后


Python 内部的参数匹配规则:

        1. 通过位置分配非关键字参数;

        2. 匹配关键字参数;

        3. 其他额外的非关键字参数分配到 * name 元组中

        4. 其他额外的关键字参数分配到 **name 字典中

        5. 用默认值分配给在头部未得到分配的参数


        




原创粉丝点击