读书blog:流畅的python-chapter1、2

总结

1、特殊方法,又称魔术方法(magic method):一般以__xxx__的形式表示,使得我们可以让自己的对象实现和支持以下的语义架构,并与之交互:

  • 迭代
  • 集合类
  • 属性访问
  • 运算符重载
  • 函数和方法的调用
  • 对象的创建和销毁
  • 字符串表示形式和格式化
  • 管理上下文(即with块)

利用特殊方法来实现python数据模型的优点:不必记标准操作的名称;可以方便地利用标准库。

特殊方法的存在是为了被python解释器调用的。

2、序列
容器型序列:list、tuple和collections.deque能存放不同类型的数据
扁平序列:str、bytes、bytearray、array.array,只能放一种类型

容器序列存放的是它们所包含的任意类型的对象的引用,而扁平序列里存放的是值而不是引用。换句话说,扁平序列其实是一段连续的内存空间。由此可见扁平序列其实更加紧凑,但是它里面只能存放诸如字符、字节和数值这种基础类型

列表生成式:[function for x in xxxxx]
生成器生成式:(function for x in xxxxx)
元组:不仅可以做不可变列表,还可用作数据记录。

python中不使用中间变量交换两个变量值的最简单写法:b,a = a,b

可以用*运算符把一个可迭代对象拆开作为函数的参数

>>> divmod(20, 8) 
>(2, 4) 
>>> t = (20, 8) 
>>> divmod(*t)
> (2, 4)

在进行拆包的时候,我们不总是对元组里所有的数据都感兴趣,_占位符能帮助处理这种情况。

接受表达式的元组可以是嵌套式的,例如(a, b, (c, d))。只要这个接受元组的嵌套结构符合表达式本身的嵌套结构

('Tokyo','JP',36.933,(35.689722,139.691667)),  # 
for name, cc, pop, (latitude, longitude) in metro_areas:  # 

命名元组

collections.namedtuple是一个工厂函数,它可以用来构建一个带字段名的元组和一个有名字的类
创建一个具名元组需要两个参数,一个是类名,另一个是类的各个字段的名字。后者可以是由数个字符串组成的可迭代对象,或者是由空格分隔开的字段名组成的字符串。

City = namedtuple(‘City’, ‘name country population coordinates’)

几个最有用的属性和方法:_fields类属性(:_fields属性是一个包含这个类所有字段名称的元组)、类方法_make(iterable)(:用_make()通过接受一个可迭代对象来生成这个类的一个实例,它的作用跟City(*delhi_data)是一样的)和实例方法_asdict()(:_asdict()把具名元组以collections.OrderedDict的形式返回,我们可以利用它来把元组里的信息友好地呈现出来)。

多维切片

省略(ellipsis)的正确书写方法是三个英语句号(…),而不是Unicdoe码位U+2026表示的半个省略号(…)。省略在Python解析器眼里是一个符号,而实际上它是Ellipsis对象的别名,而Ellipsis对象又是ellipsis类的单一实例。2它可以当作切片规范的一部分,也可以用在函数的参数清单中,比如f(a, …, z),或a[i:…]。在NumPy中,…用作多维数组切片的快捷方式。如果x是四维数组,那么x[i, …]就是x[i, :, :, :]的缩写。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值