python3.2.2使用apply函数时为什么报NameError: global name 'apply' is not defined?完整代码如下。

import threading

from time import sleep,ctime

loops=(4,2)

class MyThread(threading.Thread):

def __init__(self,func,args,name=''):

threading.Thread.__init__(self)

self.name=name

self.func=func

self.args=args

def run(self):

apply(self.func,self.args)

def loop(nloop,nsec):

print('start loop',nloop,'at:',ctime())

sleep(nsec)

print('loop',nloop,'done at:',ctime())

def main():

print('starting at:',ctime())

threads=[]

nloops=range(len(loops))

for i in nloops:

t=MyThread(loop,(i,loops[i]),loop.__name__)

threads.append(t)

for i in nloops:

threads[i].start()

for i in nloops:

threads[i].join()

print('all done at:',ctime())

if __name__=='__main__':

main()

第1个回答  2011-12-20
已经不支持了
apply(self.func,self.args)
改为
self.func(*self.args)本回答被提问者和网友采纳
第2个回答  2011-12-20
python3中没有apply。如果你实在需要,可以这样:
try:
apply = apply
except NameError:
def apply(f, *args, **kw):
return f(*args, **kw)
相似回答