python apply函数 出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python apply函数 出错相关的知识,希望对你有一定的参考价值。

class mt(threading.Thread):#多线程类用来调用函数CrawlInHost、CrawlOutHost
def __init__(self,func,args=[],name=''):
threading.Thread.__init__(self)
self.name=name
self.args=(self.name)
self.func=func

def run(self):#冲在run函数,调用线程中的函数func
apply(self.func,self.args)

#这是那个调用的函数的原型:
def letsCrawl(tname):
print tname
#这是开始调用
t=mt(func=letsCrawl,name='number %d thread'%i)

参数必须是tuple类型,self.args=(self.name,)
你的(self.name)和self.name是一样的,没有区别,为了表示你想构建一个tuple,必须在第一个参数后加个“,”。
参考技术A self.args=(self.name, )追问

why?^^

python apply()函数

python apply函数的具体的含义:
 
apply(func [, args [, kwargs ]]) 函数用于当函数参数已经存在于一个元组或字典中时,间接地调用函数。args是一个包含将要提供给函数的按位置传递的参数的元组。如果省略了args,任 何参数都不会被传递,kwargs是一个包含关键字参数的字典。
 
apply()的返回值就是func()的返回值,apply()的元素参数是有序的,元素的顺序必须和func()形式参数的顺序一致

下面给几个例子来详细的说下:
 1、假设是执行没有带参数的方法
 
def say():
  print ‘say in‘
 

apply(say)
 
输出的结果是‘say in‘
 

2、函数只带元组的参数。
 
def say(a, b):
  print a, b
 
apply(say,("hello", "老王python"))
 
输出的结果是hello,老王python
 
3、函数带关键字参数。
 
def say(a=1,b=2):
  print a,b
 
def haha(**kw):
  #say(kw)
  apply(say,(),kw)
 
print haha(a=‘a‘,b=‘b‘)
 
输出的结果是:a,b

以上是关于python apply函数 出错的主要内容,如果未能解决你的问题,请参考以下文章

pandas apply返回多列时出错ValueError: Must have equal len keys and value when setting with an iterable解决方案

pandas apply返回多列时出错ValueError: Must have equal len keys and value when setting with an iterable解决方案

请问这个python脚本哪里出错了?打印出一个无限循环的数

MySQL安装不上,总是在Apply security settings出错:Error Nr.1045 请教高手到底怎么回事?

启用linux防火墙转发规则时出错 Applying iptables firewall rules: iptables-restore:led ipta

python map函数传入多个参数后出错