python 设计原则
python 中的异常处理,try: except as: else: finally:
用try包裹需要捕获异常的地方,as可以获取异常对象,用于打印异常内容,else只在没有发生异常运行,finally无论什么情况都运行,用于资源处理.
while
语句使用while True
,并且使用break
等作为跳出循环的结构更好。
with as
专用与文件的打开和资源的释放。
python -c ""
可以直接调用python处理脚本,可以嵌套在shell之中,很好用.以下是一个处理json数据的例子,直接使用shell处理json很吃力,但使用python的解析库便可以轻易解决
python 字符串的特殊if 用法,这让人还是有点难接受的,是否非字符串也可以这么写
与之类似的一种使用and 和or的写法
pyhton if语句全套写法
xrange是迭代的而不一次性将list生成,在3.0以前range是不迭代的,直接返回list
unpack 语法,用来方便的将数组赋值给变量,
python非常有特色的,list comprehensions,列表推导生成,可以很方便的过滤生成新数组,基本就是filter加map的集合体
以上列表生成中是有内部的generate对象生成,这是一个迭代器,并且不存储所有的列表内容,不能重复迭代,故不可赋值,除非你用list存起来,一些内部方法支持迭代器,以提高性能,显然取部分比取全部list要节约内存
同理有集合推导生产set. 字典推倒产生字典
串联迭代器,迭代工具集合
zip函数和可以将两个迭代器并联起来,返回一个元组的表,这在生成字典的时候很有用,可以使用一个列表作为字典的键,一个作为值
python中的set可以使用in判断是否存在,使用add添加无须的新值,使用update 添加多个值,删除一个值使用remove,但是当该值不存在时会报错,使用discard可以避免这个问题
{}
不能表示空set因为无法和字典区分,故使用set()
表示空set
union命令可以使用|
替代,
intersection可以使用&
替代
difference 使用-
替代,symmetric_difference使用^
替代
issubset,issuperset用来测试两个集合,其中一个是否是另一个的子集合
named tuples,带名字的元组
OrderedDict,排序的字典,在collections模块里面
在字典中可以使用,默认值,即get函数的第二个参数,或者使用defaultdict去构造,同样来自collections 模块
import函数和其他语句一样是可以被try包裹起来的,然后捕获import异常,,果然凶残
python有个future库,包含一些未来版本的功能
模块中可以定义 __all__变量,来控制其他文件对其的导入
模块的导入支持相对路径