import time
def performance(f):
def fn(x):
t1= time.time()
f(x)
t2=time.time()
print 'call %s() in %fs' % (f.__name__,(t2-t1))
return f(x)
return fn
@performance
def factorial(n):
return reduce(lambda x,y: x*y, range(1, n+1))
print factorial(10)
def performance(f):
def fn(x):
t1= time.time()
f(x)
t2=time.time()
print 'call %s() in %fs' % (f.__name__,(t2-t1))
return f(x)
return fn
@performance
def factorial(n):
return reduce(lambda x,y: x*y, range(1, n+1))
print factorial(10)
2018-12-02
最赞回答 / qq随大流
代码有两个错误问题:1、math.sqrt(x) 返回的永远是个float,而不是int。2、代码少了一个 return 。正确参考:import mathdef is_sqr(x): a = math.sqrt(x) return int(a) == aprint filter(is_sqr, range(1,101))
2018-12-01
最赞回答 / 慕移动0023324
这个问题应该拆分为两个知识点:第一,关于i值的问题在for循环结束后,i的值没有被修改,所以它一直是i=3的状态。这个可以尝试在版本一的程序中,return fs前面修改一下i的值,比如 i = 9,看看结果是多少?第二,关于fs中所保存的内容在版本一的程序中,fs=[f(), f(), f()],所以打印f1、f2、f3的内容是一样的。在版本二(练习题的答案)的程序中,fs=[f(1), f(2), f(3)],所以打印f1、f2、f3的内容是不一样的。比如:print(f2()),实际就是调用f(2)...
2018-11-30
最赞回答 / 慕少11967
%s:表格式化为字符串%d:表格式化为整数,88为整数所以可以用%d,但是
(Student: %s, %s, %d )外面是加了引号的,不论你用%s还是%d,最终都是字符串形式,而__str__本身就该返回字符串,因此不会出错
2018-11-29
最新回答 / Alvin17
因为末尾有个空格,所以它匹配到末尾有个空格,没有匹配到‘n',就跳过了。正确的应该为: s.strip().strip('n')结果为:atcgatgccgtaaag
2018-11-29
最新回答 / 无用户名
1 def myDecorator(func, tag) 2 def myWrapper(*arg, **kvargs): #重新包装func,其参数列表与func一致 3 sign = "&urn" + tag + "&(*a" 4 return sign + func(*arg, **kvargs) + sign 5 return wrapper2 ...
2018-11-29
已采纳回答 / 左玉晶
说一下我个人的理解 因为这是一个比较函数的返回结果,那么在比较过程中,出现u1<u2,函数就等于-1;> 就是1;=就是0.所以你说的return那是函数的返回值
2018-11-29
最赞回答 / qq_慕斯卡1317695
我的理解是,self下面同级的变量才可以这么赋值。比如name,gender,birth,**kw。也就是说**kw本身就是self的一个属性(至少从传参上面来说是这样的)。但是由于传入的参数是字典,所以后台用了这么个函数来实现而已。要不然应该是self.kw=kw这样的形式。说白了就是self里面没有k,v这个东西。
2018-11-27