流畅的Python学习笔记
Chapter One
变量名类似xxx,以双下划线开头,双下划线结尾的就是特殊变量,特殊方法的存在是为了被Python解释器调用的
例如 getitem 这里我们查找key来得出value,d[‘a’]背后的动作就是getitem方法
|
|
执行结果:
|
|
Python风格纸牌
namedtuple()用来创建一个自定义的tuple对象,它和tuple一样都是不可变的,它可以用属性而不是索引来引用tuple的元素
|
|
执行结果:
|
|
随机抽取一张纸牌
这里用random.choice来随机生成一张纸牌
执行结果:
|
|
切片(slicing)
getitem()方法把[]交给了self._cards,所以类得对象是支持切片操作的
- 索引出前三张牌
- 抽出索引是12的那张牌,然后每隔13张牌拿一张
|
|
执行结果:
|
|
迭代
实现getitem()后,这一副牌就是可迭代的了
执行结果:
|
|
也可以反向迭代,使用reversed()方法
|
|
IN运算符
迭代通常都是隐式的,一个集合类型没有实现contains方法,那么in运算符就会按顺序做一次迭代搜索
|
|
字符串表示形式
str, repr两者都是字符串表示形式
两者的区别:
str是在str()函数被使用,或是在print函数打印一个对象的时候被调用的,是给终端用户看的
repr,如果一个对象没有str函数,而Python又需要调用它的时候,解释器会用repr作为替代,它又可以方便我们调试和记录日志