最近在慢慢看几页, 第一章的示例代码,实现一副扑克牌. 确实老辣~ 不是高手,没有这感觉,我慢慢学吧. import collections from random import choice Card = collections.namedtuple('Card', ['rank', 'suit']) class FrechDeck: ranks = [str(n) for n in range(2, 11)] + list('JQKA') suits = 'spades diamonds c
流畅的python 第1章 python数据模型 ---1.1 一摞Python风格的纸牌 特殊方法,即__method__,又被称为魔术方法(magic method)或者双下方法(dunder-method). 特殊方法的存在是为了被python解释器调用的 collections.namedtuple用于构建一个只有少数属性但是没有方法的对象 通过实现__getitem__,可以使对象有[]操作,支持切片操作,可迭代 for i in x:实际上是用了iter(x),而这个函数背后则是x.
Object References, Mutability, and Recycling 本章章节: Variables Are Not Boxes identity , Equality , Aliases Copies are shallow by default Function Parameters as references del and Garbage Collection Weak References Tricks Python Plays with Immutable Va
1. 报错如下: SyntaxError: Non-UTF-8 code starting with '\xd3' in file D:\流畅学python\ex34.py on line 4, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details 2. 解决办法: 1> 首行添加 # -*- coding:utf-8 -*- 2> 更改编码格式 File-> Settings->
字典的变种: OrderedDict 首先来看下面的代码,在一个字典中,有name,age,city,在遍历这个字典的时候.顺序却是随机的,不是按照我们添加的顺序也就是name->age->city. d={} d['name']='zhf' d['age']=33 d['city']='chengdu' for k,v in d.items(): print k,v city chengdu age 33 name zhf 我们如果想字典按照我们添加的顺序呈现出来,就必须用到Orde
第二章开始介绍了列表这种数据结构,这个在python是经常用到的结构 列表的推导,将一个字符串编程一个列表,有下面的2种方法.其中第二种方法更简洁.可读性也比第一种要好 str='abc' string=[] for s in str: print string.append(s) ret=[s for s in str] print ret 用这种for-in的方法来推导列表,有个好处就是不会有变量泄露也就是越界的问题.这在c语言中是需要特别注意的问题. 对于两个以上的列表推导作者用到
一.Python风格 以一个二元素向量对象为例 import math from array import array class Vector2d: typecode = 'd' def __init__(self, x, y): self.x = float(x) self.y = float(y) def __iter__(self): # 使得Vector2d变成可迭代对象 # __iter__方法的实现使得本类可以被转化为tuple在内的其他可迭代类 return (i for i i