当前位置 : 主页 > 编程语言 > python >

python观察日志(part16)--收集关键词参数

来源:互联网 收集:自由互联 发布时间:2022-06-15
学习笔记,有错必纠 收集关键词参数 我们知道一个函数可以接收不定个数的参数,以​​*​​开头的参数名会收集所有的参数到一个元组上,例如,printall接收任意个数的参数并打印

学习笔记,有错必纠



收集关键词参数



我们知道一个函数可以接收不定个数的参数,以​​*​​开头的参数名会收集所有的参数到一个元组上,例如,printall接收任意个数的参数并打印它们:

def printall(*args):
print(args)

printall("aer", 10, True)

输出:

('aer', 10, True)



​​*​​号操作符并不会搜集关键词实参:

In [24]: printall(1, 2, b = 'as')
TypeError: printall() got an unexpected keyword argument 'b'



要收集关键词实参,可以使用​​**​​操作符:

def printall2(*args, **kwargs):
print(args, kwargs)

printall2(1, 2, b = 'as')

输出:

(1, 2) {'b': 'as'}

我们看到kwargs收集到的结果是一个将关键词映射到值的字典。

如果我们有一个关键词映射到值的字典,我们可以使用分散操作符​​**​​来调用函数:

class Point:
def __init__(self, x = 0, y = 0, z = 0):
self.x = x
self.y = y
self.z = z

def __str__(self):
return "({}, {}, {})".format(self.x, self.y, self.z)

d = dict(x = 1,y = 2,z = 3)
p = Point(**d)
print(p)

输出:

(1, 2, 3)


网友评论