通过Enum类能实现枚举功能。
>>> from enum import Enum
>>> Sex=Enum('Sex', ('Male', 'Female')) # 获得Sex类型的枚举类
>>> for name, member in Sex.__members__.items(): # Sex所有成员
... print(name, '->', member, '->', member.value)
...
# value属性从1开始自动赋值给枚举成员
Male -> Sex.Male -> 1
Female -> Sex.Female -> 2
如果要更精确的控制枚举类型,可以从Enum中派生自定义类:
>>> from enum import Enum, unique >>> >>> @unique # unique装饰器检查没有重复值 ... class Sex(Enum): ... Male=10 # 自定义设置value ... Female=20 # 使用枚举类型 >>> print(Sex.Male) Sex.Male >>> print(Sex.Male.value) 10 >>> print(Sex(10)) # 根据value值获取枚举常量 Sex.Male
一般语言的错误处理机制类似:try...except...finally...,大致实现如下:
错误也是一个class,所有错误类型基本继承自BaseException,在使用except时,也会将错误的子类一起捕获。如果错误没有被捕获,那么会按调用栈一层层往上抛,最终被python解释器捕获并打印错误日志,然后程序退出,所以我们捕获错误时,可以将错误堆栈打印出来,这样便于分析错误原因,同时也能让程序继续下去。
我们编写函数时,也可以通过raise主动抛出错误:
IO即指Input/Output,IO中,Stream流是一个重要的概念,可理解为一个一个水管,数据就是水管里的水,只能单向流动
Input Stream 就是数据从外面(磁盘、网络)流进内存
Output Stream 就是数据从内存流到外面
读写文件就是请求OS打开一个文件对象(成为文件描述符),然后通过OS提供的接口从文件对象中读写数据。
读文件:
>>> try:
# 以读文件方式打开文件对象,如果文件不存在,会抛出IOError错误
... f = open('/Users/butterfly/test.txt', 'r')
... print(f.read()) # 一次读取文件的全部内容到内存中
... finally:
... if f:
# 最终,要关闭文件,文件使用后必须关闭,因为文件对象会占用OS的资源,并且OS同一时间打开的文件数量是有限制的
... f.close()
使用try...finally比较繁琐,可使用with简化,会自动调用close方法:
读文件时,可以通过read(size)指定每次最多读取size个字节内容。readline()每次读取一行内容。读取二进制文件时,可以指定rb模式打开文件。open()方法可以通过encoding参数指定读取文件的编码方式,errors指定读取出现错误时如何处理:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-70754-14.html
Itunes升比较稳定
一般都是藏起来当祖国遭到毁灭打击核潜艇可以还击的一种威慑