定义decorator
def log(f): #定义装饰器高阶函数,以要装饰的函数f作为参数
def fn(x): #内部相当于重构要装饰的函数f,重命名为fn
print 'call ' + f.__name__ + '()...' #加特技print
return f(x) #为了不重写原来的函数f的代码,所以用return f(x)代替原来的代码。
return fn 将被装饰过的新的函数fn返回
def log(f): #定义装饰器高阶函数,以要装饰的函数f作为参数
def fn(x): #内部相当于重构要装饰的函数f,重命名为fn
print 'call ' + f.__name__ + '()...' #加特技print
return f(x) #为了不重写原来的函数f的代码,所以用return f(x)代替原来的代码。
return fn 将被装饰过的新的函数fn返回
2016-03-26
使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码。
1、定义decorate,加装饰,返回f;
2、@decorate然后下一行不缩进定义f,定义完就可以直接用decorated函数f,不用写f=decorate(f)这种语句。
1、定义decorate,加装饰,返回f;
2、@decorate然后下一行不缩进定义f,定义完就可以直接用decorated函数f,不用写f=decorate(f)这种语句。
2016-03-26
任务是写法有点Low了,py自带这个函数的:
def format_name(s):
return str.capitalize(s)
print map(format_name, ['adam', 'LISA', 'barT'])
def format_name(s):
return str.capitalize(s)
print map(format_name, ['adam', 'LISA', 'barT'])
2016-03-25
这样应该也可以:
def is_sqr(x):
r = int(math.sqrt(x))
s = r * r
if s == x:
return s
def is_sqr(x):
r = int(math.sqrt(x))
s = r * r
if s == x:
return s
2016-03-25
import time
def performance(f):
def re(n):
start = time.time()
data = f(n)
end = time.time()
print "call factorial() in:" + str(end - start)
return data
return re
---out put--完美--
call factorial() in:0.00667309761047
3628800
def performance(f):
def re(n):
start = time.time()
data = f(n)
end = time.time()
print "call factorial() in:" + str(end - start)
return data
return re
---out put--完美--
call factorial() in:0.00667309761047
3628800
2016-03-24
在python3 中,filter跟map类似,结果得用list封装一下。如作业题中,代码修改如下:
import math
def is_sqr(x):
r = int(math.sqrt(x))
return r * r == x
print (list(filter(is_sqr, range(1, 101))))
import math
def is_sqr(x):
r = int(math.sqrt(x))
return r * r == x
print (list(filter(is_sqr, range(1, 101))))
2016-03-23