![8e474fd47c8daa6fc2bf6ed18dae0582.png](https://img-blog.csdnimg.cn/img_convert/8e474fd47c8daa6fc2bf6ed18dae0582.png)
1.Python的数据类型:整数,浮点数,字符串,布尔值,空值
2.range(n):整数序列
3.isinstance(x,int/float):数据类型检查
4.定义函数的参数:位置参数、默认参数、可变参数和关键字参数
位置参数:如power(x, n)
默认参数:如power(x, n=2),注意:必选参数在前,默认参数在后
可变参数:如calc(*numbers),传递参数时也可以加*号把list或tuple的元素变成可变参数传进去
关键字参数:如person(name, age, **kw),关键字参数允许你传入0个或任意个含参数名的参数,些关键字参数在函数内部自动组装为一个dict
命名关键字参数:如person(name, age, *, city, job)
5.切片功能:list或tuple的部分元素是非常常见的操作,L[0:3],L[:3],L[-2:],L[:10:2](步长是2)
6.迭代:通过for ... in来完成
7.enumerate函数可以把一个list变成索引-元素对:如for i, value in enumerate(['A', 'B', 'C'])
8.判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断,isinstance('abc', Iterable)
9.生成器:generator,把一个列表生成式的[]改成(),就创建了一个generatorg = (x * x for x in range(10)),节省空间
10.map()函数接收两个参数,一个是函数,一个是Iterable,如r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]),
def f(x): return x * x
![7ee52bef9ce7bfc1b93e87139cd695cd.png](https://img-blog.csdnimg.cn/img_convert/7ee52bef9ce7bfc1b93e87139cd695cd.png)
11.reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,
reduce把结果继续和序列的下一个元素做累积计算,reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
12.filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素
13.sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序,要进行反向排序, 不必改动key函数,可以传入第三个参数reverse=True
14.函数作为返回值:高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回
15.匿名函数:list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])),匿名函数lambda x: x * x
16.装饰器:增强now()函数的功能,比如,在函数调用前后自动打印日志
17.偏函数:functools.partial(int, base=2),二进制字符串
18.私有变量:加双下划线__,如__name,特殊变量:__name__
19.type():获取对象类型
20.dir():获得一个对象的所有属性和方法
21.getattr()--获取对象属性、setattr()--设置对象属性以及hasattr()--判断对象是否有某一属性
22.实例属性和类属性
23.动态绑定实例方法和类方法
24.__slots__:限制实例的属性,__slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称
25.@property:把一个方法变成属性调用,@score.setter:把一个setter方法变成属性赋值
26.多继承和多重继承
27.MixIn:给一个类增加多个功能,这样,在设计类的时候,我们优先考虑通过多重继承来组合多个MixIn的功能,而不是设计多层次的复杂的继承关系
28.__str__():返回方法中设置的字符串
29.__repr__():打印变量的返回值
30.__iter__():设计用于用于for ... in循环,不断调用该迭代对象的__next__()方法拿到循环的下一个值
![3030f647defa8cb9ae58e0e8da0faf37.png](https://img-blog.csdnimg.cn/img_convert/3030f647defa8cb9ae58e0e8da0faf37.png)
31.__getitem__():表现得像list那样按照下标取出元素
32.__getattr__:调用类的方法或属性
33.__call__:直接在实例本身上调用,
34.callable():判断一个对象是否是“可调用”对象
35.Enum:枚举类型,@unique装饰器可以帮助我们检查保证没有重复值
36.type()函数可以查看一个类型或变量的类型
37.metaclass,直译为元类,metaclass的类名总是以Metaclass结尾,例:class MyList(list, metaclass=ListMetaclass)
38.try...except...finally...:异常处理机制,所有的错误类型都继承自BaseException
39.logging.exception(e):Python内置的logging模块可以非常容易地记录错误信息
40.assert:断言
41.调试器pdb:python -m pdb err.py
42.单元测试:setUp()和tearDown()方法。这两个方法会分别在每调用一个测试方法的前后分别被执行,class TestDict(unittest.TestCase)
43.doctest:不但可以用来测试,还可以直接作为示例代码
44.IO读写:open()函数,读文件的模式打开一个文件对象,f = open('/Users/michael/test.txt', 'r'),'r'表示读,with语句来自动帮我们调用close()方法,with open('/path/to/file', 'r') as f
45.StringIO:在内存中读写str
46.BytesIO:在内存中读写bytes,操作二进制数据
47.操作文件和目录:os.path.abspath('.'),os.path.join('/Users/michael', 'testdir'),os.mkdir('/Users/michael/testdir'),os.rmdir('/Users/michael/testdir')
48.序列化,pickle模块来实现序列化,pickle.dumps(d),pickle.dump()直接把对象序列化后写入一个file,pickle.loads()方法反序列化出对象,用pickle.load()方法从一个file-like Object中直接反序列化出对象
49.多进程(multiprocessing),fork,可以在Python程序中轻松创建子进程,进程池(pool)
50.多线程:_thread和threading,_thread是低级模块,threading是高级模块
![4f3fe6d3ed921ea4c86f1c4eccd7ca2a.png](https://img-blog.csdnimg.cn/img_convert/4f3fe6d3ed921ea4c86f1c4eccd7ca2a.png)
51.锁lock:lock.acquire(),lock.release()
52.Python解释器由于设计时有GIL全局锁,导致了多线程无法利用多核。多线程的并发在Python中就是一个美丽的梦
53.ThreadLocal:ThreadLocal变量虽然是全局变量,但每个线程都只能读写自己线程的独立副本,互不干扰。ThreadLocal解决了参数在一个线程中各个函数之间互相传递的问题
54.datetime:datetime.strptime(),str转换为datetime。 strftime()-datetime转换为str
55.itertools模块提供的全部是处理迭代功能的函数
56.@contextmanager:__enter__和__exit__
57.urllib的request模块可以非常方便地抓取URL内容,也就是发送一个GET请求到指定的页面,然后返回HTTP的响应