-
map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
查看全部 -
def add(x,y,f);
return f(x)+f(y)
查看全部 -
Python内置的functools可以用来自动化“把原函数的所有必要属性都一个一个复制到新函数上”。原函数签名改成了(*args, **kw),无法获得原函数的原始参数信息。即便采用固定参数来装饰只有一个参数的函数,也可能改变原函数的参数名,因为新函数的参数名始终是 'x',原函数定义的参数名不一定叫 'x'。
查看全部 -
要实现带参数的@performance,就需要实现:my_func = performance('ms')(my_func)需要3层嵌套的decorator来实现。
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)
查看全部 -
使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写f = decorate(f) 这样的代码。
利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用。
import time 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)) return r return fn @performance def factorial(n): return reduce(lambda x,y: x*y, range(1, n+1)) print factorial(10)
查看全部 -
查看全部
-
filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
def is_odd(x): return x % 2 == 1
filter() 接收的函数必须判断出一个数的平方根是否是整数,而 math.sqrt()返回结果是浮点数。
import math def is_sqr(x): r = int(math.sqrt(x)) return r*r==x print filter(is_sqr, range(1, 101))
查看全部 -
高阶函数:能接收函数做参数的函数
变量可以指向函数
函数的参数可以接收变量
一个函数可以接受另一个函数作为参数
能接收函数作参数的函数就是高阶函数
查看全部 -
def count():
fs = []
for i in range(1, 4):
def f(j):
def g():
return j*j
return g #f(j)函数返回一个闭包g,g所引用的变量j不是循环变量,因此将正常执行可以避免引用循环变量i
r=f(i)
fs.append(r)
return fs
f1, f2, f3 = count()
print f1(), f2(), f3()查看全部 -
__str__()用于显示给用户,而__repr__()用于显示给开发人员。
查看全部 -
和Java中的toString(),作用相同
查看全部 -
import math
def is_sqr(x):
r=int(math.sqrt(x))
return x==r*r #表示一个判断,返回类型为布尔型。值为True或者False
print filter(is_sqr, range(1, 101))查看全部 -
def g(a, b):
if b == 0:
return a
return g(b, a % b)
这段代码求的是a和b的最大公约数,利用的是辗转相除法!
查看全部 -
a, b = b, a + b
记住这个语句,详情解释请参见https://blog.csdn.net/sinat_38486449/article/details/79949711
该语句的作用是领a=b,b=a+b,但是又有一些不同,在进行b=a+b操作时,这个a的值是没有赋值之前的a的值。
查看全部 -
自定义排序 高阶函数sorted()
比较函数的定义:
如果 x 应该排在 y 的前面,返回 -1
如果 x 应该排在 y 的后面,返回 1
如果 x 和 y 相等,返回 0
---实现倒序排序
def reversed_cmp(x, y): if x > y: return -1 if x < y: return 1 return 0
>>> sorted([36, 5, 12, 9, 21], reversed_cmp) [36, 21, 12, 9, 5]
sorted()可对字符串排序(按照ASCII码)
查看全部
举报