通常我们在python中定义一个函数的时候,需要给出明确的函数输入参量,比如对于一个数学函数z=f(x,y)就表示,z是关于x和y的一个函数。

但是如果对于未知参量的函数,比如函数形式可以是z=f(x,y),但也可以是z=f(x,y,m,n,i,j,k),在不确定入参的时候,就可以采用python中的*args**kwargs参数

*args参数的使用方法

首先用一个例子来说明一下*args的基本用法,这个参量可以替代函数括号中的固定变量,从数据结构上说是一个可变长度的tuple:

def fargs(*args):s = 0for variable in args:s += float(variable)return sif __name__ == '__main__':import sysargs_string = ''for number in sys.argv[1:]: # 从命令行获取任意长度的参数args_string += numberargs_string += ','s = eval('fargs({})'.format(args_string)) # 直接用字符串执行函数print ('The sum of {} is: {}'.format(args_string, s))

在这个案例中,我们不仅介绍了*args的使用方法,也利用了命令行参数获取和eval函数这两个python中常见的使用技巧。其中关于获取命令行参数的使用技巧,可以参考这一篇博客。上述代码的执行效果如下所示:

[dechin@dechin-manjaro args]$ python3 test_args.py 1 2 3 3.14
The sum of 1,2,3,3.14, is: 9.14
[dechin@dechin-manjaro args]$ python3 test_args.py 1 2 3 3.14 0.86
The sum of 1,2,3,3.14,0.86, is: 10.0

这里给了两个不同长度的输入,通过函数fargs完成了求和的工作,并且输入的长度是可变的。

**kwargs的用法

kwargs的用法是类似于上面介绍的*args的,区别在于kwargs本质上是传入了一个“字典”,或者称之为一个键值对。需要注意的是,这里每一个键值对的数据格式都是tuple类型的,而不是python中的字典类型,所以上面说到“字典”时加了引号。参考示例如下:

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def fkwargs(**kwargs):s = 0print ('Key values input: ',kwargs)for key, variable in kwargs.items():s += float(variable)return sif __name__ == '__main__':import sysargs_string = ''for number in sys.argv[1:]:args_string += numberargs_string += ','s = eval('fkwargs({})'.format(args_string))print ('The sum of {} is: {}'.format(args_string, s))

这里的场景我们设置为一个买菜购物计算总价格的函数,输入的参数是每一个购买的物品及其价格,最后的输出是购买总价格,测试结果如下所示:

[dechin@dechin-manjaro args]$ python3 test_kwargs.py egg=20 beaf=60 milk=10
Key values input:  {'egg': 20, 'beaf': 60, 'milk': 10}
The sum of egg=20,beaf=60,milk=10, is: 90.0
[dechin@dechin-manjaro args]$ python3 test_kwargs.py egg=20 water=1
Key values input:  {'egg': 20, 'water': 1}
The sum of egg=20,water=1, is: 21.0

总结概要

为了使得输入参数的可扩展性更好,python中自带了args和kwargs两种方法,可以用于表示一个tuple类型的可变长度入参。其中args是一系列的一元变量的输入,kwargs是一系列键值对的输入,可以认为是一个二元变量的输入。虽然这两种方案也都可以用自行实现的tuple来替代,但是直接使用这两种定义会节省很多自定义可变入参的繁琐。

结尾给大家推荐一个非常好的学习教程,希望对你学习Python有帮助!

Python基础入门教程推荐:更多Python视频教程-关注B站:Python学习者

【Python教程】全网最容易听懂的1000集python系统学习教程(答疑在最后四期,满满干货)

Python爬虫案例教程推荐:更多Python视频教程-关注B站:Python学习者

2021年Python最新最全100个爬虫完整案例教程,数据分析,数据可视化,记得收藏哦

python3函数可变输入参量相关推荐

  1. Python3 函数function

    Python3   函数 函数 函数是一段可重复使用的.实现特定功能的代码块. 函数的特点是能提高应用的模块性,和代码的复用性. 语法 Python 定义函数使用 def 关键字,一般格式如下: de ...

  2. python菜鸟编程-Python3 函数

    Python3 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你 ...

  3. Python3快速入门(五)——Python3函数

    Python3快速入门(五)--Python3函数 一.函数定义 1.函数定义 Python 定义函数使用 def 关键字,一般格式如下: def function_name(parameter_li ...

  4. Python3 函数笔记

    Python3 函数笔记 默认值在函数定义作用域被解析,如下所示: >>> i =5 >>> def f(arg=i): ...     print(arg) .. ...

  5. Python3——函数

    Python3--函数 目录 Python3--函数 定义函数 实参和形参 返回值 将函数存储在模块中 定义函数 关键字def告知Python要定义一个函数. 最后一行是调用此函数,此函数不带参数和返 ...

  6. Python学习 Day7 Python3 函数

    Python3 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你 ...

  7. python015 Python3 函数

    Python3 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你 ...

  8. python菜鸟教程-Python3 函数

    Python3 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你 ...

  9. python3函数参数(必选参数、默认参数、关键字参数、可变参数)

    python3函数参数 形参是参数在函数定义过程中的状态,这个过程中没有赋予实际的数值,实参是参数在函数调用过程中的状态,当参数被赋予实际的数值后,它会由形参转为实参. 必选参数在前,默认参数在后,默 ...

最新文章

  1. 常见蛋白质种类_什么是优质蛋白质?鸡蛋大豆算不算
  2. 机器学习-逻辑回归-代价函数
  3. spring aop 注释_使用Spring AOP,自定义注释和反射为您的应用程序审核基础结构
  4. ASP.NET MVC 入门8、ModelState与数据验证
  5. Redis的安装与常用配置说明
  6. Docker学习文档之二 搭建环境-Linux环境
  7. TX2平台cmake安装
  8. Vivado安装教程详细版
  9. 芝麻信用商家接入指南
  10. C++(2-4)——sqrt的使用
  11. 阿童木机器人完成数千万元B1轮融资,雅瑞资本领投
  12. swper_Swiper 中文API手册(share)
  13. python升维方法_数据升维
  14. 二进制转化为十进制Java实现
  15. IntelliJ IDEA如何整理代码格式
  16. iphone有什么软件测试信号,iphone12信号测试-iphone12信号实测
  17. php fpm 开启status,启用php-fpm状态详解
  18. MySQL多表查询练习题
  19. Linux perf: 为什么采样频率设置为99Hz而不是100Hz?
  20. 艾永亮:超级产品战略告诉你,怎样才能吸引到用户使用你的产品

热门文章

  1. mybatis动态查询列名,#与¥
  2. Kudu Tablet design
  3. 从道的角度来论述大数据对企业价值
  4. H5开发开发利器——flex
  5. python监控web扩张时间脚本
  6. 在ssh项目中的中配置数据源c3p0
  7. Split和Substring的用法
  8. 2014c语言二级考试题,2014计算机二级等级考试试题:C语言模拟题
  9. python pil png合成gif储存时变黑_使用 Python 玩转图片
  10. 释疑の语法 ON CHANGE OF