zoukankan      html  css  js  c++  java
  • python中的函数参数*args和**kwargs的使用

    首先,args和kwargs都不是必须的,它们只是一个变量的名称,命名是约定俗成的,用别的变量名也可以,只有前面的 * 和 ** 是必须的。* 和 ** 两者主要用于定义函数的输入参数,使用了两者,则代表此函数参数可以入一组数据

    1、*args的使用

      将输入参数打包成功元组(tuple)的形式给函数体使用

      例一:

    def Tu_args(*args):
        # 返回args的值及其数据类型
        return args, type(args)
    
    a = Tu_args(1, 2, 34, 4)
    print(a)

    结果:

      有结果可知, *args传递的是一组数据,数据类型是元组

      例二:

      使用*args传递一组参数,在函数内求和、平均数、乘积

    # 求一组数据的平均数、和、积
    avg, su, amass = 0, 0, 1    # 定义三个变量,用于保存平均数、和、积
    
    
    def Read(*args):
        global avg, su, amass   # 声明三个变量为全局变量
        for i in args:
            j = int(i)  # 将args里的数据转换成int类型(因为input函数输入的都为str类型),保存于j
            su += j     # 遍历求和,保存于su
            amass *= j  # 遍历求积,保存为amass
        avg = su / len(args)    # 使用求和的结果求平均数,若和求错,即平均数也错误
        return '总和:%d' % su, '平均值:%d' % avg, '乘积:%d' % amass    # 返回和、平均数、积
    
    
    if __name__ == '__main__':
        ff = input('请输入:')  # 使用input函数输入的内容均为str类型
        f = ff.split(',')  # 将输入的数据按 , 切片,保存为f
        C = Read(*f)  # 调用函数Read()
        print(C)

    结果:

    2、**kwargs的使用

      ** kwargs会把输入参数打包成dict给函数体调用

      例一:

    def dc(**kwargs):
        return kwargs, type(kwargs)
    
    
    a = dc(ssd=23, sdj=232)     # 使用了**kwargs,则代表函数输入的参数需要是字典形式的
    print(a)

    结果:

      例二:

    def function(avi, *args, **kwargs):
        print(avi, args, kwargs)
    
    function(33, 23, 43, 45645, 4545, 'kkk', d=23, kk=32, ks='askdjk')

    结果:

    可见,*args传入的参数会自动打包成元组形式,而**kwargs会要求输入参数带有变量和值,自动打包成字典形式

  • 相关阅读:
    css 两边是线,中间文字的多种实现方法
    vue provide/inject 父组件如何给孙子组件传值
    Mac版本的 Axure rp8 不显示菜单栏
    mac 如何卸载node和npm采坑之旅
    css3 鼠标悬停图片动画
    css3 一个六边形 和 放大旋转动画DEMO演示
    js drag drop 收藏夹拖拽移除的简单例子
    css 折角效果/切角效果
    css 给图片添加滤镜效果,透明层毛玻璃效果
    c# udp通讯实现
  • 原文地址:https://www.cnblogs.com/will-wu/p/14990758.html
Copyright © 2011-2022 走看看