python 函数关键参数
© laowang/ 2011-6-8 / 21:02
一个朋友问我的问题:
我在学习python过程有各小问题,请您帮着解答:
我在交互模式中写了个函数:
def adder(**args):
sum=0
for x in args.keys():
sum+=args[x]
return sum
随后调用,在交互模式中输入 adder({'a':1,'b':2,'c':3})
为什么结果不是我所预期的求和呢? 而是报错。Traceback (most recent call last):
File "
adder({'a':1,'b':2,'c':3})
TypeError: adder() takes exactly 0 arguments (1 given)
按我的理解,函数adder开头的**args参数应该会收集后面所有的参数才是啊? 不知道哪里理解错了,请你帮着解答,谢谢
解决办法:
def adder(**args):
print args
sum=0
for x in args.keys():
sum+=args[x]
return sum
adder(a=1,b=2,c=3)
改成这样就可以了。
正如这个朋友说的一样,**args参数会收集关键词参数,但是传过去的函数参数应该是类似a=1这样类似的,而不是一个字典,但是在函数内部,可以看做一个字典,比如print args输出的参数。希望通过这个例子,对大家理解python 函数关键参数有帮助。
如果想要了解更多python 函数的话,可以看看python 函数返回值
文章链接:http://www.cnpythoner.com/post/pythonguanjian.html 转载请保留,谢谢!
作者:老王@python python 教程
老王python,提供python相关的python 书籍,python 主机,django 教程和python 下载,希望大家能够喜欢!
文章内容皆为人工编辑,如有错误,敬请指正。谢谢你关注
上一篇: django sqlite数据库配置问题 下一篇: python beautifulsoup多线程分析抓取网页





2011-6-9 15:06:50
不怎么懂呀。在看practical django project,准备写一blog,很多不懂,希望能请教到斑竹。
2011-7-25 17:12:51
闲逛,看到 有逛到 龙哥的blog了。
2011-8-9 15:04:52
*arg:代表参数以元组形式传给函数.
**args:代表参数以列表形式传给函数
def typeTuple(arg1,*args):
print type(args)
调用 typeTuple("something","arg1","arg2","arg3")或者 typeTuple(arg1="something","arg1","arg2","arg3")。后面不可指定参数名
def typeDict(arg2,**args):
print type(args)
调用typeDict("something",a=1,b=2,c=3)或者typeDict(arg2="something",a=1,b=2,c=3)。
不能typeDict(arg2="something",{a=1,b=2,c=3}),但是可以这样typeDict(arg2="something",other_arg={a=1,b=2,c=3})
组合在一起的。
def onedef(*arg,**args):
pass
调用的时候可以onedef(1,2,3,a=1,b=2,c=3)或者onedef(1,2,3)或者onedef(a=1,b=2,c=3)。但是不能穿插数据。
2011-8-9 15:05:51
哎呀,上面说错了。**args以字典形式传入
2011-8-12 11:15:44
支持支持。。
2011-8-15 16:41:02
强大的博主需要大家的关注啊!!!
http://www.dywebsite.com