1 yield
yield是一个类似return的关键字,只不过返回的是生成器
生成器函数被调用后,函数体内的代码不会立即被执行,而是返回生成器。当生成器调用成员方法时,相应的代码才会执行。
2 迭代器 生成器
具有yield关键字的函数都是生成器
2 reload
reload用于载入之前载入过的模块,模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
3 时间
import time
time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
time.localtime是tuple,time.time是时间戳,datatime是一种单独的形式
4 文件读取
with open('/path/to/file','r') as f:
data=f.read()
line = f.readline() # 逐行提取
lines=f.readlines() # 文件每一行存储到list中,适用于文件较小的情况
lines = list(f)
for line in f:
print line #文件迭代器
5 路径问题
os.path.dirname(__file__)返回当前目录的上一级
os.path.abspath(__file__)返回当前文件的绝对路径
os.path.join(based,file)
6 面向对象编程
是一种程序设计的方法。其中最重要的两个概念是类和实例。类是抽象的模版,实例是类的一个个对象。
可以在_init_函数中定义公共的属性,
可以用双下划线代表私有属性,__init__,这样外部就不能随意修改属性值。如果要修改属性值,可以在类中写函数来修改,这样的好处是可以增加参数校验等逻辑。
多态:继承可以把父类的功能都继承过来,
property:把方法变成属性,以让调用者写出简短的代码,同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性。
多重继承:通过继承,一个子类可以同时获得多个父类的功能;
定制类:
_slots_:限制类的属性,classStudent(object):__slots__ = ('name','age') 则类只有name,age属性;
_str_:def _str_()
```
classStudent(object):
def__init__(self, name):
self.name = name
def__str__(self):
return'Student object (name=%s)'% self.name
__repr__ = __str__
访问限制:如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线;如self.__name
获取对象信息:isinstance()
eum:可以把相关常量定义在一个类中,成员可以相互比较。
class Gender(Enum):
Male = 0
Female = 1
7 正则表达式
8 高阶函数
map(f,迭代对象)把传入的函数依次作用到每个函数
reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
函数:如果不需要立刻计算返回结果,而是调用的时候再计算返回,则可以把函数作为返回结果
9 进程线程
一个进程可以包含多个线程
网友评论