环境
前提
笔记本:macbook pro
操作系统:macOS Sierra 版本10.12.6
安装
从python.org下载python3.6安装文件安装
1 | MacBook-Pro:~ yourname$ python3 -V |
语言
数据类型
整数、浮点数、布尔值、None、字符串、bytes
1 | i = 3 # 整数 |
编码
ascii编码,英文一个字节,无中文,utf-8可变长度编码,英文一个字节,中文3个字节。
1 | len('english'.encode('utf-8')) # 字节长度7 |
布尔操作
1 | b and B |
数据类型转换
1 | int('1') # str->int |
规范
使用4个空格缩进,文件使用utf-8 without BOM编码方式编写
private使用_前缀,特殊变量__xxx__
list与tuple
1 | l = [1, 2, 3] # 列表可变 |
函数
定义
1 | def 函数名(参数): |
返回值
1 | def add(a, b): |
参数
参数定义顺序:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
1 | def f1(a, b, c=0, *args, **kw): |
函数式编程
高阶函数,参数是函数,map/reduce、filter、sorted
1 | def f(x): |
1 | from functools import reduce |
1 | def is_odd(x): |
1 | sorted([36, 5, -12, 9, -21], key=abs) |
闭包Closure,函数作为返回值
1 | def lazy_sum(*args): |
匿名函数
1 | lambda x: x * x |
装饰器decorator,一个返回函数的高阶函数,借助@语法,置于函数的定义处。代码运行期间动态增加功能的方式。
1 | def log(func): |
偏函数,设定参数的默认值,降低函数调用的难度
1 | import functools |
module与package
module按文件组织代码,package按目录组织代码,目录有__init__.py文件
1 | #!/usr/bin/env python3 |
OOP
class
数据封装、继承和多态
1 | from types import MethodType |
Enum
1 | from enum import Enum |
1 | from enum import Enum, unique |