Skip to the content.

yield

yield就是 return 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后开始。带yield关键字的函数是生成器。

with…as

with … as 是为了替换传统的 try… finally 基本思想是with所求值的对象必须有一个__enter__()方法,一个__exit__()方法。 紧随with后面的语句被求值后,返回对象的_enter_()方法被调用。这个方法的返回值将赋值给as后面的变量。 当with后面的代码块被全部执行完之后,将调用前面返回对象的_exit_()方法。

python生成器

yield next send() close() throw()

python装饰器

使用场景:

PyYAML

PyYAML is a YAML parser and emitter for Python.

yaml.safe_dump 将一个python值转换为yaml格式文件

python代码测试

items() and iteritems()

What is the difference of items() and iteritems()? dict.items(): Return a copy of the dictionary’s list of (key, value) pairs. dict.iteritems(): Return an iterator over the dictionary’s (key, value) pairs.

python中pass的作用

python 中的 *args and **kwargs

这两个是python中的可变参数,用于函数参数个数不确定时。 *args表示任意多个无名参数. 它是一个tuple,用于容纳多个变量组成的list, **kwargs表示关键字参数,它是一个dict。并且同时使用*args**kwargs时,*args参数必须要在**kwargs前面,否则会报错: “SyntaxError: non-keyword arg after keyword arg”

python垃圾回收机制

dict.get()

  1. dict get 方法的应用 获取字典值,有两种方法:
  2. 通过dict[‘key’]
  3. 通过dict.get() 方法 dict.get(key, default=None) get()方法返回给定键的值。如果键不可用,则返回默认值None。 在这里我们可以设置默认值为其它,当key 不存在时,则返回默认值。(省去了判断)

init.py

每个包下面都有一个__init__.py 文件. 这个文件定义了包的属性和方法. 也可以是一个空文件,什么也不包含,但是必须存在. 当将一个包作为一个模块导入的时候,实际上导入了它的__init__.py 文件. 当不包含此文件时, 仅仅就是普通个目录了,不能被导入或者包含其它的模块和嵌套包. 每个*.py文件可以作为一个module.当使用from package1 import *时,需要在__init__.py中增加 all=[‘module_1’,’module_2’]

init and new

类在实例化的时候,先调用__new__,再调用__init__初始化.

python如何实现单例?

def __new__(cls, *args, **kwargs):
	if cls.__isinstance:  # 如果被实例化了
		return cls.__isinstance  # 返回实例化对象
	cls.__isinstance = object.__new__(cls)  # 否则实例化
	return cls.__isinstance  # 返回实例化的对象