-
self和r分别表示r1和r2
查看全部 -
import time def call_fun_time(f): def fn(*args, **kw): print args print kw print 'call ' + f.__name__ + '() in ' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) return f(*args, **kw) return fn @call_fun_time def factorial(n): return reduce(lambda x,y: x*y, range(1, n+1)) @call_fun_time def add_double(x,y,fsum): return x + y + fsum([x,y]) print add_double(1,3,sum) print factorial(5)
查看全部 -
通过高阶函数返回新函数
查看全部 -
python内置的@语法就是为了简化装饰器调用,
查看全部 -
输出格式为:函数(预置函数名,list)
查看全部 -
python 中的偏函数
当参数较多时,贱货调用者的负担。
functools.partial:可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值,这样,新函数调用的难度就降低了。
查看全部 -
def is_not_empty(s):
return s and len(s.strip()) > 0
print filter(is_not_empty, ['test', None, '', 'str', ' ', 'END'])
print filter(lambda s: s and len(s.strip()) > 0, ['test', None, '', 'str', ' ', 'END'])
查看全部 -
第一次循环i=1,r=f(1),而f(1)返回的是1*1,然后再把这个r=f(i) append到空序列fs中,在赋值给f1,f2,f3.
查看全部 -
# 希望一次返回3个函数,分别计算1x1,2x2,3x3:def count(): fs = [] for i in range(1, 4): def f(): return i*i fs.append(f) return fs f1, f2, f3 = count()
def count():
fs = []
for i in range(1, 4):
def cal(j):
def fcal():
return j*j
return fcal
fs.append(cal(i))
return fs
f1, f2, f3 = count()
print f1(), f2(), f3()
查看全部 -
filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
查看全部 -
闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变
查看全部 -
def cal(x,y):
return x*y
# def calc_prod(lst):
# def cal_prod():
# result = 1
# for v in lst:
# result = result * v
# return result
# return cal_prod
def calc_prod(lst):
def cal_prod():
return reduce(cal,lst)
return cal_prod
f = calc_prod([1, 2, 3, 4])
print f()
查看全部 -
判断x是否为平方数,
可以用math.sqrt(x) -int(math.sqrt(x)) ==0来判断
或者用math.sqrt(x) % 1==0来判断
查看全部 -
python3中不能直接这样输入,要引用这个模块,
from functools import reduce
def prod(x,y):
return x*y
print(reduce(prod,[2,4,5,7,12]))
输出结果为3360
当然也可以直接运用lambda。
form functools import reduce
lis=[2,4,5,7,12]
print(reduce(lambda x,y:x*y,lis))
输出结果还是3360查看全部 -
def calc_sum(lst): def lazy_sum(): print 'call lazy_sum' return sum(lst) return lazy_sum f = calc_sum([1, 2, 3, 4]) print f print f()
<function lazy_sum at 0x00000000025D1518>
call lazy_sum
10
查看全部
举报