Python巩固整理
- *args与**kwargs
- *args是将不定数量的参数传递给一个函数,可以用for arg in argv进行打印
- **kwargs则是传入不定长度的键值对,可以用for k,v in kwargs.items() 进行打印
- 什么时候进行使用?一般会在写装饰器的时候使用
- 调试
- python -m pdb script.py
- 或者在脚本里面进行使用,用pdb包,pdb.set_trace()来设置断点.
- c: continue
- w:显示当前正在执行的代码上下文信息
- a:打印当前的参数列表
- s:单步进入
- n:单步跳过
- 生成器
- Iterable(可迭代对象): python中任意的对象,只要它定义了可以返回一个迭代器的__iter__方法,比方说用dir([]),就可以看到list又__iter__方法,说明它是一个可迭代的对象
- Iterator(迭代器):只要定义了__next__方法,就是一个迭代器.可以用isinstance()来判断一个对象是不是Iterator.
- Iteration(迭代):遍历就是一个迭代的过程,就是从某个容器取出元素的过程.
- yield, 也是迭代器,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行
- Map, Filter, Reduce
- Map会将⼀个函数映射到⼀个输⼊列表的所有元素上,list(map(lambda x: x**2, input_list))
- Filter: less_than_zero = filter(lambda x: x < 0, number_list)
- 聚合函数reduce,可以代替很多for循环可以完成的任务
from functools import reduce
product = reduce( (lambda x, y: x * y), [1, 2, 3, 4] )
- Decoractors装饰器
- 函数的基础知识:在使用函数的时候,如果不加括号,函数不会运行,如果想返回一个函数或者传递函数给一个变量,不要加括号就可以了
- 装饰器在做的事情,就是装点的意思,如下面的例子,把一个函数包起来,再返回这个函数,在使用的时候可以用语法糖@进行调用.这下面的这个例子中,在定义bar的时候,在上面可以写上@use_logging
- 装饰器一般可以用在授权,检查是否可以去访问一个站点,第二个就是下面的例子,日志.我在上班还看到可以使用装饰器来决定这串代码是否使用spark来跑,下次把那一串内容整理过来.
- slot : 带有__slot__的类并没有
__dict__
而没有__slot__却含有__dict__
。__slots__
正是通过避免定义动态的数据结构__dict__
来实现对memory的节省. - Virtualenv
- 能够帮我们创建⼀个独⽴(隔离)的Python环境。
- virtualenv myproject: 在这个文件下创建一个隔离的virtualenv
- source bin/active:激活这个隔离的环境
- deactive:退出这个virtualenv
- virtualenv –system-site-packages mycoolproject: 希望让这个额virtualenv使用系统全局模块
- tips:可以使用smartcd)
- Collections:
- defaultdict: 与dict类型不同的是你不需要检查key是否存在
- Counter:可以统计词频
- deque:deque提供了⼀个双端队列,你可以从头/尾两端添加或删除元素. pop 和 popleft, appendleft, append. 只要是list里面有的方法都可以用.
- namedtupe:⼀个元组是⼀个不可变的列表,你可以存储⼀个数据的序列, namedtuple它把元组变成⼀个针对简单任务的容器。
- Zip and unzip:
- 对象自省(introspection):来判断⼀个对象的类型的能⼒。
- dir: dir(list), 列出了⼀个对象所拥有的属性和⽅法
- type
- inspect
- Comprehension 推导式
- 推导式: 提供了一种种简明扼要的⽅法来创建列表,它的结构是在⼀个中括号⾥包含⼀个表达式,然后是⼀个for语句,然后是0个或多个for.
todo: 添加debug部分的总结,装饰器的部分,data manipulation (chain).
Enjoy Reading This Article?
Here are some more articles you might like to read next: