1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > python3函数可变输入参量

python3函数可变输入参量

时间:2018-08-30 05:32:13

相关推荐

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.14The sum of 1,2,3,3.14, is: 9.14[dechin@dechin-manjaro args]$ python3 test_args.py 1 2 3 3.14 0.86The 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=10Key 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=1Key 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学习者

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。