zoukankan      html  css  js  c++  java
  • 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)#可变参数传一个元组,不可变参数仍为字典
    #输出跟上面最后一个一样
  • 相关阅读:
    Session的使用与Session的生命周期
    Long-Polling, Websockets, SSE(Server-Sent Event), WebRTC 之间的区别与使用
    十九、详述 IntelliJ IDEA 之 添加 jar 包
    十八、IntelliJ IDEA 常用快捷键 之 Windows 版
    十七、IntelliJ IDEA 中的 Maven 项目初体验及搭建 Spring MVC 框架
    十六、详述 IntelliJ IDEA 创建 Maven 项目及设置 java 源目录的方法
    十五、详述 IntelliJ IDEA 插件的安装及使用方法
    十四、详述 IntelliJ IDEA 提交代码前的 Code Analysis 机制
    十三、IntelliJ IDEA 中的版本控制介绍(下)
    十二、IntelliJ IDEA 中的版本控制介绍(中)
  • 原文地址:https://www.cnblogs.com/blueteer/p/10058886.html
Copyright © 2011-2022 走看看