1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# map [1+4, 2+5, 3+6] -> [5, 7, 9] def f(x, y): return x + y res = map(f, [1, 2, 3], [4, 5, 6]) print(list(res)) # reduce f(f(f(1,6),2),3) -> 1+6+2+3 = 12 from functools import reduce res = reduce(f, [1, 2, 3], 6) print(res) # filter 返回 true | false 过滤 def f(x): return x > 0 print(list(filter(f, [1, 0, -1, 2]))) # sorted(data [,key=func] [,reverse=True]) list = ['Zoo', 'about', 'kiss', 'Fuck'] print(sorted(list)) #['Fuck', 'Zoo', 'about', 'kiss'] print(sorted(list, key=str.lower)) #['about', 'Fuck', 'kiss', 'Zoo'] print(sorted(list, key=str.lower, reverse=True)) #['Zoo', 'kiss', 'Fuck', 'about'] # 返回函数 def my_sum(*args): def do_sum(): x = 0 for v in args: x = x + v return x return do_sum f = my_sum(1, 2, 3, 4, 5, 6) print(f()) # 匿名函数 关键字:lambda print(list(map(lambda x : x * x, [1,2,3]))) # 装饰器 decorator def log(func): def wrapper(*args, **kw): print('call %s():' % func.__name__) return func(*args, **kw) return wrapper # @log相当于 now=log() (*args, **kw)表示传任意参数 @log def now(date, time): print(date, time) now('2017-06-14', '12:12:12') print(now.__name__) # wrapper # 3层嵌套的decorator、使用包装器 import functools def log(text): def decorator(func): @functools.wraps(func) # wrapper.__name__ = func.__name__ python自带的包装器,完成了类似的赋值功能 def wrapper(*args, **kw): print(text, func.__name__) return func(*args, **kw) return wrapper return decorator @log('execute') def now(date): print(date) now('2017-06-14 13:13:13') print(now.__name__) # now # 偏函数,只是把默认值改了,还是可以显示传入的 import functools def hello(data, language='ENGLISH'): if language == '中文': print('你好', data) else: print('hello', data) helloChinese = functools.partial(hello, language = '中文') helloChinese('世界') hello('world') helloChinese('world', language = 'ENGLISH') hello('世界', language = '中文') # 模块(Module)、包(Package) # 一个python文件就是一个模块,外层的目录就是包 # 每一个包目录下面都会有一个__init__.py的文件,否则,Python就把这个目录当成普通目录 # __init__.py可以是空文件,也可以有Python代码 # 因为__init__.py本身就是一个模块,而它的模块名就是目录名 # 一个包中可以放另外的包 # 约定属性 abc(PUBLIC) _abc __abc(PRIVATE) __name__(特殊变量) #!/usr/bin/env python3 # -*- coding: utf-8 -*- ' a test module ' __author__ = 'BestLove' import sys def test(): args = sys.argv if len(args)==1: print('Hello, world!') elif len(args)==2: print('Hello, %s!' % args[1]) else: print('Too many arguments!') # 命令行执行时,会调试test()方法 if __name__=='__main__': test() # 第三方库地址 https://pypi.python.org/pypi # MySQL的驱动:mysql-connector-python # 科学计算的NumPy库:numpy # 生成文本的模板工具Jinja2等等 # 安装图片处理工具库 pip install Pillow from PIL import Image im = Image.open('1.jpg') print(im.format, im.size, im.mode) # JPEG (75, 95) RGB # 保存缩略图 im.thumbnail((50, 50)) im.save('thumb.jpg', 'JPEG') # 默认情况下,Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块 import sys print(sys.path) # 运行时修改,运行结束失效 sys.path.append('/data/wwwroot/test') # 设置环境变量PYTHONPATH Python自己本身的搜索路径不受影响 |