python apply

今天写代码的时候用到了 python apply的方法,感觉非常的好用,于是写篇文章介绍给大家。
python apply函数的具体的含义:

apply(func [, args [, kwargs ]]) 函数用于当函数参数已经存在于一个元组或字典中时,间接地调用函数。args是一个包含将要提供给函数的按位置传递的参数的元组。如果省略了args,任何参数都不会被传递,kwargs是一个包含关键字参数的字典。

apply()的返回值就是func()的返回值,apply()的元祖参数是有序的,元素的顺序必须和func()形式参数的顺序一致


下面给几个例子来详细的说下:
1假设是执行没有带参数的方法

def say():
print 'say in'

apply(say)

2函数只带元组的参数。

def say(a, b):
print a, b

apply(say,("hello", "老王python"))

3函数带关键字参数。

def say(a=1,b=2):
print a,b

def haha(**kw):
apply(say,(),kw)

print haha(a='a',b='b')

输出的结果是:a,b

##########关于第三个例子中的关键字参数,可以参考下面的文章###########

一个朋友问我的问题:

我在学习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 "", line 1, in
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 函数关键参数有帮助。

#####################

本文转自

http://www.cnpythoner.com/post/90.html

http://www.cnpythoner.com/post/pythonguanjian.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值