python3函数可变输入参量
2021/5/3 20:25:20
本文主要是介绍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:
# test_args.py def fargs(*args): s = 0 for variable in args: s += float(variable) return s if __name__ == '__main__': import sys args_string = '' for number in sys.argv[1:]: # 从命令行获取任意长度的参数 args_string += number args_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中的字典类型,所以上面说到“字典”时加了引号。参考示例如下:
# test_kwargs.py def fkwargs(**kwargs): s = 0 print ('Key values input: ',kwargs) for key, variable in kwargs.items(): s += float(variable) return s if __name__ == '__main__': import sys args_string = '' for number in sys.argv[1:]: args_string += number args_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来替代,但是直接使用这两种定义会节省很多自定义可变入参的繁琐。
版权声明
本文首发链接为:https://www.cnblogs.com/dechinphy/p/args.html
作者ID:DechinPhy
更多原著文章请参考:https://www.cnblogs.com/dechinphy/
这篇关于python3函数可变输入参量的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-28Python编程基础教程
- 2024-12-27Python编程入门指南
- 2024-12-27Python编程基础
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南