-
1.reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。 2.reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100,计算: reduce(f, [1, 3, 5, 7, 9], 100) 首先计算初始值和第一个元素:f(100, 1),结果为101。查看全部
-
1.map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。 2. def format_name(s): return s[0].upper()+s[1:].lower()####注意加号在字符串中的应用,注意return具体格式,而不是 #s,否则还是原来的s,没有变化 print map(format_name, ['adam', 'LISA', 'barT'])查看全部
-
_init_.py 是python判断文件夹是否是包的必要条件 即使_init_.py是空的 引用 1.同名模块放入不同的包中可以解决冲突(p1.util) (p2.util) 包->文件夹 模块—>xxx.py文件 2.包可以有多层 3.包下面有个__init__.py文件:包中的每一层都必须有这个文件,以将其和普通目录区分开来查看全部
-
在Python 3.x中,字符串统一为unicode,不需要加前缀 u,而以字节存储的str则必须加前缀 b。查看全部
-
关键字参数接收的是字典查看全部
-
Python的 decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数。 使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码。 考察一个@log的定义: def log(f): def fn(x): print 'call ' + f.__name__ + '()...' return f(x) return fn 对于阶乘函数,@log工作得很好: @log def factorial(n): return reduce(lambda x,y: x*y, range(1, n+1)) print factorial(10) 结果: call factorial()... 3628800 但是,对于参数不是一个的函数,调用将报错: @log def add(x, y): return x + y print add(1, 2) 结果: Traceback (most recent call last): File "test.py", line 15, in <module> print add(1,2) TypeError: fn() takes exactly 1 argument (2 given) 因为 add() 函数需要传入两个参数,但是 @log 写死了只含一个参数的返回函数。 要让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用: def log(f): def fn(*args, **kw): print 'call ' + f.__name__ + '()...' return f(*args, **kw) return fn 现在,对于任意函数,@log 都能正常工作。查看全部
-
Python内置的@语法就是为了简化装饰器调用 装饰器可以极大的简化代码,避免每个函数编写重复性代码 打印日志:@log 检测性能:@performance 数据库事务:@transaction URL路由:@post('/register')查看全部
-
因为 add() 函数需要传入两个参数,但是 @log 写死了只含一个参数的返回函数。 要让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用: def log(f): def fn(*args, **kw): print 'call ' + f.__name__ + '()...' return f(*args, **kw) return fn查看全部
-
匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。查看全部
-
多种导入方式 1、import os 使用os.path.isdir...... 2、import os.path 使用os.path.isdir...... 3、from os import path 使用path.isdir...... 4、from os.path import isdir,isfile 使用isdir...... 4、查看全部
-
原排序函数: def cmp_ignore_case(s1, s2): u1 = s1.upper() u2 = s2.upper() if u1 < u2: return -1 if u1 > u2: return 1 return 0 使用functllos.partial查看全部
-
Python内置的functools可以用来自动化完成这个“复制”的任务:注意@functools.wraps应该作用在返回的新函数上。查看全部
-
Python内置的functools可以用来自动化完成这个“复制”的任务:注意@functools.wraps应该作用在返回的新函数上。查看全部
-
注意@functools.wraps应该作用在返回的新函数上。 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 add(x, y, f): return f(x) + f(y) 调用开平方的函数为 sqrt,调用方式为math.aqrt()括号里面为数值 f为函数名,不带括号查看全部
举报
0/150
提交
取消