Python培训
400-111-8989
语法和用法
基本功:
python编码
可迭代对象:str, list, tuple, set, dict, iterator, generator
可变与不可变对象:可变list, dict, set 不可变 int([-5,256]),str
变量赋值的机制(函数调用时参数是传值还是传引用)
for else: 循环没有遇到任何break时执行 else 句
#/interpy-zh/content/for_else/else_clause.html
tryelse 语句
#/interpy-zh/content/exception/try_else_clause.html
max = a if a > b else b
max = [a, b][a<b]
同时遍历索引和元素enumerate
*args, **kwargs
深拷贝,浅拷贝
各种推导式(comprehensions)(又称解析式)
列表(list)推导式,字典(dict)推导式,集合(set)推导式
__future__模块 print_function, unicode_literals, division
上下文管理器 with
变量作用域(LEGB, globals, locals, vars)
闭包和装饰器
Python中一切皆对象。装饰器虽然语法比较复杂,但是,在一些场景下,也确实比较有用。包括:
注入参数(提供默认参数,生成参数)
记录函数行为(日志、缓存、计时什么的)
预处理/后处理(配置上下文什么的)
修改调用时的上下文(线程异步或者并行,类方法)
装饰器缺点:
1. Python >= 2.4 可用
2. 会使函数调用变慢
3. 一般来说不能去装饰(有hack方法,但没人用)
4. 它包裹函数,可能debug变得困难
类相关的
魔术方法,描述符,元类
classmethod, staticmethod, property
描述符:一个类可以委托另一个类来管理其特性
类属性被定义并且有 __get__ 和__set__ 方法时,__dict__ 会被劫持。
如果一个对象同时定义了 __get__() 和 __set__(),它叫做资料描述器(data descriptor)。仅定义了 __get__() 的描述器叫非资料描述器(常用于方法,当然其他用途也是可以的)
资料描述器和非资料描述器的区别在于:相对于实例的字典的优先级。如果实例字典中有与描述器同名的属性,如果描述器是资料描述器,优先使用资料描述器,如果是非资料描述器,优先使用字典中的属性。
#/en/latest/Descriptor-HOW-TO-Guide.html
元类:#/21351/
__getattr__ vs __getattribute__
__slots__,属性查找机制(实例à父类)mro
包相关的
绝对引入与相对引入
循环依赖
生成器和协程
协程存在的意义:对于多线程应用,CPU通过切片的方式来切换线程间的执行,线程切换时需要耗时(保存状态,下次继续)。协程,则只使用一个线程,在一个线程中规定某个代码块执行顺序。
标准库
logging
itertools (ifilter, izip, imap, permutations,combinations, product, groupby, chain, isslice, tee)
functools (>=2.5 update_wrapper, wraps,partial)
operator (add, sub, mul, div, mod,itemgetter, attrgetter, total_ordering)
contextlib
re (match, search, findall, sub)
unittest
threading
multiprocessing
算法与数据结构
str, int, bool, list, tuple, dict, set
collections (namedtuple, Counter, OrderedDict, defaultdict(vs setdefault),deque)
heapq (nlargest, nsmallest)
bisect (insort, insort_left, insort_right)
常见数据结构操作的时间复杂度表
异步和协程
gevent (greenlet)
Celery
代码热更新
工具类
virtualenv, virtualenvwrapper, pyenv, autoenv
ipython
pdb: python -m pdb my_script.py
timeit
python -m timeit ‘statement’
python -m timeit -s ‘setup’ ‘statement’ 说明:setup的时间不算在里面
profile
python -m cProfile student.py
简易Web Server
#Python 2
python -m SimpleHTTPServer
#Python 3
python -m #
陷阱
函数默认参数
defappend_to(List=[]):
List.append(3)
print List
闭包变量绑定
try except
try:
file = open('test.json')
data = json.load(f)
except IOError, ValueError:
print('An Erroroccurred. {}'.format(e.args[-1]))
一句谚语所说的那样 “knowing enough to be dangerous”(译者注:意思是自以为已经了解足够了,可以做某事了,但其实不是)
填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!