Python中 * 与 **, *args 与 **kwargs的用法
? * 用于传递位置参数(positional argument) ** 用于传递关键字参数(keyword argument) ? 首先,先通过一个简单的例子来介绍 * 的用法: def add_function(a,b): return a + b a = 1 b = 2 c = [1,2] print(add_function(a,b)) print(add_function(*c)) 输出是: 3 3 从输出可以看到,使用 * 可以将列表 c 中的值分别传递给函数的参数们。注意,列表中元素的个数需要与函数参数的个数相等。 ? ? *args (arguments) 的用法与 * 稍微不太一样,*args在定义函数时使用。 def myFun(*args): for arg in args: print(arg) print(args) myFun(1,2,3) 输出是: 1
2
3
(1,3)
由例子可知,*args用于接收可变数量的无名参数,并且存在元组 (tuple) 里,元组中的元素是无法修改的。 ? ? 最后来讲解一下 **kwargs (keyword arguments) 的用法。 def myFun2(**kwargs): for key,value in kwargs.items(): print ("%s == %d" %(key,value)) print(kwargs) myFun2(One=1,Two=2,Three=3) 输出是: One == 1 Two == 2 Three == 3 {‘One‘: 1,‘Two‘: 2,‘Three‘: 3} 从这个例子可以看出,**kwargs用于接收可变数量的关键字参数,并且存在字典里 (dict)。 ? 注意,需要按照 arg,*args,**kwargs 这个顺序定义一个函数。 def myFun3(arg,**kwargs): print("arg is :",arg) print("*args are :",args) print("**kwargs are :",kwargs) myFun3(‘a‘,‘b‘,‘c‘,d=‘1‘,e=‘2‘,f=‘3‘) 输出是 arg is : a *args are : (‘b‘,‘c‘) **kwargs are : {‘d‘: ‘1‘,‘e‘: ‘2‘,‘f‘: ‘3‘} ? ? References GeeksforGeeks. (n.d.).?*args and **kwargs in Python - GeeksforGeeks. [online] Available at: https://www.geeksforgeeks.org/args-kwargs-python/. ? Lakhanpal,R. (2016).?Python *,**,*args and **kwargs. [online] Medium. Available at: https://medium.com/@rahulkp220/python-args-and-kwargs-5fb545b7a538. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 是否有类似于运行R-studio服务器的类似Python的服务器端IDE
- python中reduce()函数的使用方法示例
- 将Blobstore迁移到GCS:Google App Engine Python
- 多处理中的error_callback.Pool在Python 2中的apply_async?
- 我如何生成特定格式的python时间戳
- python创建进程fork用法
- python – 包含2个值的拆分列到pandas df中的不同列中
- Python图像处理:图像腐蚀与图像膨胀!
- 在创建本地存储库时,Mercurial是否会创建服务器进程?
- python – 将Pandas系列(基于索引)分成多个数据帧列