python3函数可变输入参量
通常我们在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函数可变输入参量相关推荐
- Python3 函数function
Python3 函数 函数 函数是一段可重复使用的.实现特定功能的代码块. 函数的特点是能提高应用的模块性,和代码的复用性. 语法 Python 定义函数使用 def 关键字,一般格式如下: de ...
- python菜鸟编程-Python3 函数
Python3 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你 ...
- Python3快速入门(五)——Python3函数
Python3快速入门(五)--Python3函数 一.函数定义 1.函数定义 Python 定义函数使用 def 关键字,一般格式如下: def function_name(parameter_li ...
- Python3 函数笔记
Python3 函数笔记 默认值在函数定义作用域被解析,如下所示: >>> i =5 >>> def f(arg=i): ... print(arg) .. ...
- Python3——函数
Python3--函数 目录 Python3--函数 定义函数 实参和形参 返回值 将函数存储在模块中 定义函数 关键字def告知Python要定义一个函数. 最后一行是调用此函数,此函数不带参数和返 ...
- Python学习 Day7 Python3 函数
Python3 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你 ...
- python015 Python3 函数
Python3 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你 ...
- python菜鸟教程-Python3 函数
Python3 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你 ...
- python3函数参数(必选参数、默认参数、关键字参数、可变参数)
python3函数参数 形参是参数在函数定义过程中的状态,这个过程中没有赋予实际的数值,实参是参数在函数调用过程中的状态,当参数被赋予实际的数值后,它会由形参转为实参. 必选参数在前,默认参数在后,默 ...
最新文章
- 常见蛋白质种类_什么是优质蛋白质?鸡蛋大豆算不算
- 机器学习-逻辑回归-代价函数
- spring aop 注释_使用Spring AOP,自定义注释和反射为您的应用程序审核基础结构
- ASP.NET MVC 入门8、ModelState与数据验证
- Redis的安装与常用配置说明
- Docker学习文档之二 搭建环境-Linux环境
- TX2平台cmake安装
- Vivado安装教程详细版
- 芝麻信用商家接入指南
- C++(2-4)——sqrt的使用
- 阿童木机器人完成数千万元B1轮融资,雅瑞资本领投
- swper_Swiper 中文API手册(share)
- python升维方法_数据升维
- 二进制转化为十进制Java实现
- IntelliJ IDEA如何整理代码格式
- iphone有什么软件测试信号,iphone12信号测试-iphone12信号实测
- php fpm 开启status,启用php-fpm状态详解
- MySQL多表查询练习题
- Linux perf: 为什么采样频率设置为99Hz而不是100Hz?
- 艾永亮:超级产品战略告诉你,怎样才能吸引到用户使用你的产品