美文网首页
分别用Python的*和**语法将元组和字典映射到位置参数和关键

分别用Python的*和**语法将元组和字典映射到位置参数和关键

作者: zlrs | 来源:发表于2018-07-30 19:46 被阅读0次

    * 语法

    用于函数传参中,对于需要多个位置参数(positional argument)的函数,将元组或列表展开(unpacking)为一个或多个位置参数。
    注:其实只要是可迭代(iterable)的对象都可以通过此方式展开,而不仅仅是前面讲的元组或列表。

    row = ('ACME', 50, 91.5)
    lis = list(row)
    print(*row)
    print(*lis)
    

    等效于print('ACME', 50, 91.5)
    输出:
    ACME 50 91.5
    ACME 50 91.5

    ** 语法

    用于函数传参中,对于需要多个关键字参数(keyword argument)的函数,将词典展开(unpacking)为一个或多个关键字参数

    d={ 'end':'!!!\n', 'sep':', '}
    print('Hello', 'world', **d)
    

    输出:
    Hello, world!!!

    同时使用 * 和 ** 语法

    row = ('ACME', 50, 91.5)
    d={ 'end':'!!!\n', 'sep':', '}
    print(*row, **d)
    

    输出:
    ACME, 50, 91.5!!!

    Exception Note

    注意:print(*row, **d)print(sep=', ', end='!!!\n', *row) 的写法都是OK的,但是不可以写成print(**d, *row). 因为位置参数不可在关键字参数之后。

    否则将提示
    SyntaxError: iterable argument unpacking follows keyword argument unpacking

    参考

    *args 和 **kwargs - 《Python 进阶》on Gitbook

    相关文章

      网友评论

          本文标题:分别用Python的*和**语法将元组和字典映射到位置参数和关键

          本文链接:https://www.haomeiwen.com/subject/qwcqvftx.html