-
import time, functools
def performance(unit):
def perf_decorator(f):
@functools.wraps(f)
def wrapper(*args,**kw):
t1 = time.time()
r = f(*args,**kw)
t2 = time.time()
t = (t2-t1) * 1000 if unit == 'ms' else (t2-t1)
print 'call %s() in %f %s' % (f.__name__, t,unit)
return r
return wrapper
return perf_decorator
@performance('ms')
def factorial(n):
return reduce(lambda x,y: x*y, range(1, n+1))
print factorial.__name__
===============================
def f1(x):
pass
print f1.__name__
===============================
def log(f):
@functools.wraps(f)
def wrapper(*args,**kw):
print 'call...'
#return f(*args,**kw)
return f(x)
#wrapper.__name__ = f.__name__
#wrapper.__doc__ = f.__doc__
return wrapper
@log
def f2(x):
pass
print f2.__name__
查看全部 -
//我不会
import time
def performance(unit):
def perf_decorator(f):
def wrapper(*args,**kw):
t1 = time.time()
r = f(*args,**kw)
t2 = time.time()
t = (t2-t1) * 1000 if unit == 'ms' else (t2-t1)
print 'call %s() in %f %s' %(f.__name__, t, unit)
return r
return wrapper
return perf_decorator
@performance('ms')
def factorial(n):
return reduce(lambda x,y: x*y, range(1, n+1))
print factorial(10)
查看全部 -
f.__name__不对
注意这个下划线
def performance(f):
def fn(*args,**kw):
t1 = time.time()
r = f(*args,**kw)
t2 = time.time()
#print 'call %s() in %fs' % ( f._name_, (t2 - t1))下划线不对
print 'call %s() in %fs' % (f.__name__, (t2 - t1))
return f
return fn
查看全部 -
1、自己思路
def count():
fs = []
for i in range(1, 4):
fs.append(i*i)
return fs
f1, f2, f3 = count()
print f1, f2, f3
2、标准答案
def count():
fs = []
for i in range(1,4):
def f(j):
def g():
return j*j
return g
r = f(i)
fs.append(r)
return fs
f1,f2,f3 = count()
print f1(),f2(),f3()
哪里不同?
查看全部 -
当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。
查看全部 -
使用一个模块,我们必须首先导入该模块。Python使用import语句导入一个模块。例如,导入系统自带的模块 math:
import math
查看全部 -
没看懂这节内容
查看全部 -
注意: s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。
当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' '),如下:
a = ' 123' a.strip()
结果: '123'
a='\t\t123\r\n' a.strip()
结果:'123'
查看全部 -
这里的代码不够详细。比如,我定义一个方法:
@fun
def myprint():
print "这是第一步"
def fun1(fun):
def fun2():
print '这是第二步'
return fun
return fun2
查看全部 -
filter() 接收的函数必须判断出一个数的平方根是否是整数,而 math.sqrt()返回结果是浮点数。
判断x开方是不是整数,是的就返回;不是就不返回;
math.sqrt(x)返回到的是浮点型
先转化成整型;
再判断这个平方根相乘是不是原来的数。是就返回,不是就不返回
查看全部 -
变量可以指向函数
函数名就是指向函数的变量
查看全部 -
1、大小写函数
小转大,用str.upper();
大转小,用str.lower();
2、字符串取首字母用[]中括号不是小括号
首字母s[0]
3、字符串的长度用len(str)
4、截取字符串用[]中括号
str[start:end]
包括start不包括end,如果start=0或者end=len(str),那么可以省略0或len(str)
查看全部 -
自我思路:
def format_name(s):
return s[0].upper() + s[1:len(s)].lower()
print map(format_name, ['adam', 'LISA', 'barT'])
答案:
def format_name1(s):
return s[0].upper() + s[1:].lower()
print map(format_name1, ['adam', 'LISA', 'barT'])
查看全部 -
Python支持的函数式编程
查看全部 -
函数式编程特点
查看全部
举报