ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python - 函数参数*args和**kwargs

2022-07-17 18:04:38  阅读:163  来源: 互联网

标签:amass Python 平均数 args su 函数参数 kwargs 输入


原文地址:https://www.cnblogs.com/will-wu/p/14990758.html 

----------------------------------------

首先,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会要求输入参数带有变量和值,自动打包成字典形式

 

标签:amass,Python,平均数,args,su,函数参数,kwargs,输入
来源: https://www.cnblogs.com/frankcui/p/16487904.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有