美文网首页Python开发
Python的两个特殊的参数前缀 * 和 **

Python的两个特殊的参数前缀 * 和 **

作者: 键盘哥 | 来源:发表于2016-07-27 19:46 被阅读89次

    先看看官方的解释吧

    keyword argumen: an argument preceded by an identifier (e.g. name=) in a function call or passed as a value in a dictionary preceded by **.

    positional argument: an argument that is not a keyword argument. Positional arguments can appear at the beginning of an argument list and/or be passed as elements of an iterable preceded by *.

    翻译一下

    • 两个星号(**)开头的参数,叫做“关键字参数”,在函数调用中,参数前有标识符(例如:name=);或者是把字典类型的值作为参数传递(在字典前出现)。

    • 一个星号(*)开头的参数,叫做“位置参数”,不是关键字参数。位置参数可以出现在参数列表中的起始位置,或者把可迭代类型的值作为参数传递(在可迭代数据前出现)。

    白话解释下

    • 关键字参数(**),代表参数是“键=值”的列表,其实就是字典。
      • 如果出现在函数定义中,那么说明这个函数接受"键=值"列表的参数,数量可以是任意多
      • 如果出现在函数调用中,**后面跟着的是字典类型
    • 位置参数(*),代表参数是"值"的列表,或者干脆就是元组的方式
      • 如果出现在函数定义中,那么说明这个函数接受“值”列表的参数,数量可以是任意多
      • 如果出现在函数调用中,那么说明*后面跟着是元组类型

    举个例子

    先看看函数定义中的关键字参数

    # 这个函数接受任意多的参数,参数样式为“键=值”
    def func(**arguments):
        print(arguments)
     
    # ---------- 调用 1 ----------
    
    # 两个参数
    func(name='steven', age=25)
    
    # 运行结果
    {'age': 25, 'name': 'steven'}
    
    
    # ---------- 调用 2 ----------
    
    # 三个参数
    func(name='steven', age=25, gender='male')
    
    # 运行结果
    {'age': 25, 'name': 'steven', 'gender': 'male'}
    

    再看看函数调用中的关键字参数

    # 函数定义了两个带关键字的参数
    def func(name, age):
        print("name: {}, age: {}".format(name, age))
        
    # ---------- 调用 1 ----------
    
    # 最通常的调用方式
    func(name='steven', age=25)
    
    # 运行结果
    name: steven, age: 25
    
    # ---------- 调用 2 ----------
    
    # 用**的方式
    arguments = {'name':'steven', 'age':25}
    func(**arguments)
    
    # 运行结果
    name: steven, age: 25
    

    看看函数定义中的位置参数

    # 这个函数接受任意多的参数,参数样式为"值"
    def func(*arguments):
        print(arguments)
        
    # ---------- 调用 1 ----------
    
    # 两个参数
    func('steven', 25)
    
    # 运行结果
    ('steven', 25)
    
    
    # ---------- 调用 2 ----------
    
    # 三个参数
    func('steven', 25, 'male')
    
    # 运行结果
    ('steven', 25, 'male')
    

    看看函数调用中的位置函数

    # 函数定义了两个带关键字的参数
    def func(name, age):
        print("name: {}, age: {}".format(name, age))
        
    # ---------- 调用 1 ----------
    
    # 最通常的调用方式
    func('steven', 25)
    
    # 运行结果
    name: steven, age: 25
    
    # ---------- 调用 2 ----------
    
    # 用*的方式
    arguments = ('steven', 25)
    func(*arguments)
    
    # 运行结果
    name: steven, age: 25
    

    相关文章

      网友评论

        本文标题:Python的两个特殊的参数前缀 * 和 **

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