设为首页 收藏本站
查看: 368|回复: 0

[经验分享] Python 学习入门(17)—— args, kwargs

[复制链接]

尚未签到

发表于 2017-5-2 10:14:52 | 显示全部楼层 |阅读模式
  The special syntax,*argsand**kwargsin function definitions is used to pass a variable number of arguments to a function. The single asterisk form (*args) is used to pass anon-keyworded, variable-length argument list, and the double asterisk form is used to pass akeyworded, variable-length argument list. Here is an example of how to use the non-keyworded form. This example passes one formal (positional) argument, and two more variable length arguments.


def test_var_args(farg, *args):
print "formal arg:", farg
for arg in args:
print "another arg:", arg
test_var_args(1, "two", 3)
Results:


formal arg: 1
another arg: two
another arg: 3


Here is an example of how to use the keyworded form. Again, one formal argument and two keyworded variable arguments are passed.


def test_var_kwargs(farg, **kwargs):
print "formal arg:", farg
for key in kwargs:
print "another keyword arg: %s: %s" % (key, kwargs[key])
test_var_kwargs(farg=1, myarg2="two", myarg3=3)
Results:


formal arg: 1
another keyword arg: myarg2: two
another keyword arg: myarg3: 3

Using*argsand**kwargswhencallinga function


This special syntax can be used, not only in function definitions, but also whencallinga function.


def test_var_args_call(arg1, arg2, arg3):
print "arg1:", arg1
print "arg2:", arg2
print "arg3:", arg3
args = ("two", 3)
test_var_args_call(1, *args)

Results:


arg1: 1
arg2: two
arg3: 3

Here is an example using the keyworded form when calling a function:


def test_var_args_call(arg1, arg2, arg3):
print "arg1:", arg1
print "arg2:", arg2
print "arg3:", arg3
kwargs = {"arg3": 3, "arg2": "two"}
test_var_args_call(1, **kwargs)
Results:


arg1: 1
arg2: two
arg3: 3


代码示例

#!/usr/bin/python
# -*- coding:utf-8 -*-
#
# http://blog.ithomer.net

# *args
def test1(farg, *args):
print "formal arg", farg
for arg in args:
print "another arg:", arg
# **kwargs
def test2(farg, **kwargs):
print "formal arg", farg
for key in kwargs:
print "another keyword arg: %s, %s" % (key, kwargs[key])
# *args
def test3(arg1, arg2, arg3):
print "arg1:", arg1
print "arg2:", arg2
print "arg3:", arg3
# **kwargs
def test4(arg1, arg2, arg3):
print "arg1:", arg1
print "arg2:", arg2
print "arg3:", arg3

# *args
def test5(*args):
for count, thing in enumerate(args):
print "%d -> %s" % (count, thing)
# **kwargs
def test6(**kwargs):
for name, value in kwargs.items():
print name, "=", value
def test7(a, b, c):
print "a=",a, "& b=", b, "& c=", c
if __name__ == "__main__":
test1(1, "two", 3)
test2(farg=1, myarg2='two', myargs=3)
args = ("two", 3)
test3(1, *args)
kwargs = {"arg3":3, "arg2":"two"}
#test4(1, **kwargs)
test4(arg1=1, **kwargs)

test5("apple", "banana", "cabbage")
test6(apple="fruit", cabbage="vagetable")
mylist = ['aa', 'bb', 'cc']
test7(*mylist)
运行结果:  formal arg 1
another arg: two
another arg: 3
formal arg 1
another keyword arg: myarg2, two
another keyword arg: myargs, 3

arg1: 1
arg2: two
arg3: 3
arg1: 1
arg2: two
arg3: 3

0 -> apple
1 -> banana
2 -> cabbage
cabbage = vagetable
apple = fruit
a= aa & b= bb & c= cc



  

  参考推荐:
  How to use *args and **kwargs in Python

  python *args and * kwargs

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-371981-1-1.html 上篇帖子: Alioss python Pypi包更新记录 下篇帖子: 通过Python脚本自动发布ArcGIS服务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表