设为首页 加入收藏

TOP

Python函数的参数(二)
2023-07-25 21:27:57 】 浏览:47
Tags:Python
形参名前面带有**号,则这个形参可以在函数调用时收集所有的关键字实参。一般用**kwargs形参来收集。
示例8:收集关键字形参

def collect_kwargs(name, age=18, **kwargs):
    print(f'姓名:{name}, 年龄:{age}')
    print(f'特殊科目成绩:{kwargs}')


collect_kwargs('启明', 12, chinese=86, math=88)

姓名:启明, 年龄:12
特殊科目成绩:

上面的函数通过形参**kwargs收集所有的科目成绩。收集后会放入到一个名为kwargs的字典中。
注意:
1、特殊形参**kwargs只能放到位置形参、关键字形参、*args形参之后。
2、特殊形参**kwargs只能收集关键字实参,对于调用时传入的位置实参则不会收集。

5.3.5.3 仅位置参数、仅关键字参数

在Python定义函数时,形参如果使用/则代表前面的形参仅能通过位置参数传递。
在Python定义函数时,形参如果使用*则代表后面的形参仅能通过关键字参数传递。
def fun(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
| | |
| 位置参数或者关键字参数 |
| 仅关键字参数
仅位置参数

5.3.6 形参组合

在Python定义函数时,如果需要使用多种形参:位置、默认、可变参数、关键字参数等。在定义时是有顺序的。定义的顺序必须是:位置形参、默认形参、可变位置形参、可变关键字形参。比如要定义一个函数,包含上述若干种形参,如下代码所示:


def func(a, b, c=0, *args, **kwargs):
    print('a=', a, 'b=', b, 'c=', c, 'args=', args, 'kwargs=', kwargs)

5.3.7 参数解包

我们在之前的第四章可迭代对象的通用操作中学习了解包装包。当时介绍了可以通过解包的方式将某个可迭代对象作为多个实参传入到函数中。利用这种方式作为函数的参数称之为参数解包
参数解包示例1

def args_unpacking1(a, b, c):
    print(a, b, c, sep='-')


lst = [1, 2, 3]
args_unpacking1(*lst)

1-2-3

参数解包示例2

def args_unpacking1(*args):
    print('-'.join(args))


lst = 'python'
args_unpacking1(*lst)

p-y-t-h-o-n

参数解包示例3

def args_unpacking1(a, b):
    print(a, b, sep='-')


dct = {'a': 11, 'b': 22}
args_unpacking1(**dct)

11-22

参数解包示例4

def args_unpacking1(**kwargs):
    print(kwargs)


dct = {'a': 11, 'b': 22}
args_unpacking1(**dct)

总结:
1、通过*解包可迭代对象后可以作为位置实参传入函数中。而函数可以通过位置形参或者*args形参来收集。
2、通过**解包字典后可以作为关键字实参传入函数中。而函数可以通过默认值形参或者**kwargs形参来收集。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python工具箱系列(十九) 下一篇Python3 编程面试题

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目