今天写代码的时候用到了
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')
我在学习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)
改成这样就可以了。
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