美文网首页
简述Python3中三种函数参数传递类型

简述Python3中三种函数参数传递类型

作者: Peepea | 来源:发表于2018-05-03 17:16 被阅读0次

在这篇博文中,我们会使用sum()information()作为例子来如何正确地向函数传入参数


可变参数(*args)

所谓可变参数,是其指参数的个数可变,这对于多次在给一个函数传入非固定个数参数的场景来说十分的好用。(看到这里有疑问?看下面的例子---->>>>)


首先看一个比较麻烦的写法:
sum()函数接收多个整数,然后对这些整数进行求和,返回求和的结果。所以要给sum()传入多个数字,一种可能的方法如下:

list1 = [1,2,3,4]
list2 = [1,2,3,4,5]
def sum(list):
    result = 0
    for i in list:
        result += i
    return(result)

print(sum(list1))#10
print(sum(list2))#15

有一点需要注意的是,使用上述sum()的时候,需要首先定义一个列表,这样的写法比较麻烦,如果使用可变参数的方法就可以使得代码更加简洁,可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时会自动组装为一个元组(tuple)

def sum1(*list):
    result = 0
    for i in list:
        result += i
    return(result)

print(sum1(1,2,3,4))    #10
print(sum1(1,2,3,4,5))    #15,无需再定义新的列表

关键字参数(**kwargs)

与可变参数类似,关键字参数也可以传入非固定个数的参数,但是与之不同的是,关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个字典(dict)

def information(**kwargs):
    print("kwargs中包含:",kwargs)

information()    #kwargs中包含: {}
information(age=1,name="Ben")    #kwargs中包含: {'name': 'Jack', 'age': 1}

从打印的结果可以看出**kwargs是一个字典

def information1(**kwargs):
    if 'age' in kwargs:
        print("age:",kwargs['age'])
    if 'name' in kwargs:
        print("name:",kwargs['name'])
    else:
        pass
information1(age=1,name="Ben")    #age: 1
                                  #name: Ben

命名关键字参数(其他参数,*,命名关键字参数)

上面我们介绍的关键字参数可以传入0到任意个参数,在某些传入关键字的场景中,我们想要控制传入的关键字参数,使得只能传入指定的关键字参数,所以,我们引入命名关键字参数

def information2(age,*, name, address):
    print("age:", age, "; name:", name, "; address:", address)

information2(1,name="Ben", address="somewhere,China")
#age: 1 ; name: Ben ; address: somewhere,China

传入命名关键字参数时需要注意,*后的参数都是要传入命名的参数,如上面例子中的age=1

相关文章

  • 简述Python3中三种函数参数传递类型

    在这篇博文中,我们会使用sum()和information()作为例子来如何正确地向函数传入参数 可变参数(*ar...

  • 浅谈Python3中函数参数传递方式

    浅谈Python3中函数参数传递方式 之前在看北理工嵩天等老师的python3的课程,在第五周中老师讲到了函数的调...

  • Python函数参数匹配模型(上)

    概述 Python3中函数参数一般都是通过赋值进行传递的,而调用者只需要知道如何正确的传递参数即可直接使用函数, ...

  • Java中的传递是值传递

    Java中的参数类型 形式参数,即形参 实际参数,即实参 Java中的两种参数传递情况 值传递:指在进行函数方法调...

  • JavaScript函数的参数传递

    JavaScript函数的参数传递取决于参数的类型: 若参数为基本类型,那么按值传递 若参数为引用类型,那么按共享...

  • 存取变长参数列表va_start,va_end,va_arg

    1.在C中,变长参数的函数即参数个数可变、参数类型不定 的函数。当我们无法列出传递函数的所有实参的类型和数目时,以...

  • js类和对象

    函数 js中函数可以作为参数传递 上面代码是将say方法作为参数传递给execute方法 第二种写法 第三种写法 ...

  • Spark编程讲解

    Spark严重依赖传递函数类型的参数,即 在spark中,transformation 和 action接收的参数...

  • 值传递or引用传递

    javascript都是按值传递 javascript的函数的参数传递,传递的都是值,参数是 Object 类型的...

  • Python 函数的参数传递\*args和\**kwargs

    Python 函数的参数传递*args和**kwargs 参数传递机制具有值传递(int、float等值数据类型)...

网友评论

      本文标题:简述Python3中三种函数参数传递类型

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