• python函数的参数


    Python的函数定义中除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数

    1、必选参数:须以正确的顺序传入函数。调用时的数量必须和声明时的一样。调用函数是必须传入一个参数,否则会报错

    def printme(str):#str就是一个比传参数
        print(str)
    printme('6666666')
    #printme()  #若不传参数,将会报错printme() missing 1 required positional argument: 'str'

    2、默认参数:调用函数时,默认参数的值如果没有传入,则被认为是默认值

    def printinfo(name,age=18):
        print('%s是%s岁'%(name,age))
    printinfo(name='abc')#age不传的时候,就使用默认值,传了使用新传的值

    3、关键字参数:关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

    关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。函数printinfo除了必选参数nameage外,还接受关键字参数kw。在调用该函数时,可以只传入必选参数

    def printinfo(name,age=18,**kw):#kw就是关键字函数,两个**
        print('%s是%s岁,其他信息%s'%(name,age,kw))
    printinfo(age=25,name='猴子',city='beijin')
    #输出:猴子是25岁,其他信息{'city': 'beijin'}

    4、可变参数:需要一个函数能处理比当初声明时更多的参数。这些参数叫做可变参数。可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个

    def calc(*numbers): #numbers就是一个可变参数,一个*
        sum = 0
        for n in numbers:
            sum = sum + n * n
        return sum
    print(calc(2,3,4))

    定义可变参数和定义list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数。如果已经有一个list或者tuple,要调用一个可变参数怎么办?可以这样做:

    def calc(*numbers):
        sum = 0
        for n in numbers:
            sum = sum + n * n
        return sum
    list1 =[2,4,6,8]
    print(calc(list1[0],list1[1],list1[2],list1[3])) #当然,这样看起来很复杂,可以试试下面这种
    print(calc(*list1))#和上面一样,只是简便写法

    5、参数组合

    在Python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。在函数调用的时候,Python解释器自动按照参数位置和参数名把对应的参数传进去。

    def func(a,b,c=0,*args,**kwargs):#依次为必传参数,默认值参数,可变参数,关键字参数
        print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kwargs)
    
    func(1,2,3)
    func(1,2,3,'a','b')
    func(1,2,3,'a','b',x=99)

    输出为:

    a = 1 b = 2 c = 3 args = () kw = {}
    a = 1 b = 2 c = 3 args = ('a', 'b') kw = {}
    a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x': 99}
    #有意思的用法
    args = (1, 2, 3, 4)
    kw = {'x': 99}
    func(*args, **kw)#可变参数传一个元组,不可变参数仍为字典
    #输出跟上面最后一个一样
  • 相关阅读:
    axios的兼容性
    js中的特殊符号含义
    div垂直居中
    HTTP协议(一):介绍
    HTTP协议(二)header标头说明
    AJAX 状态值(readyState)与状态码(status)详解
    Javascript替代eval方法
    vue基础知识之vue-resource/axios
    ES6的export与Nodejs的module.exports
    PM2来部署nodejs服务器永久开启
  • 原文地址:https://www.cnblogs.com/blueteer/p/10058886.html
Copyright © 2020-2023  润新知