Effective Python chap.1 用Pythonic方式来思考

Pythonic: 一门语言的编程习惯是由用户来确立的。

1. 确认自己所使用的Python版本


2. 遵循PEP8风格指南

每件事都应该有直白的做法,而且最好只有一种。

  • 模块级别常量 全部采用大写字母拼写 例如 ALL_CAPS
  • 类的实例方法首个参数命名为self
  • 类方法首个参数命名为cls
  • 否定词内联,而不是放在前面,例如 if a is not b 而不是 if not a is b
  • 不要使用相对路径进行引用
  • import语句按顺序分为三个部分,标准库模块→第三方模块→自用模块

3. 了解bytes、str与unicode的区别

Python3表示字符序列的类型: bytes和str, 前者包含原始8位值, 后者包含Unicode字符;

Python2表示字符序列的类型: str和unicode, 前者包含原始8位值, 后者包含Unicode字符。

Unicode→.encode('utf-8')→原始8位值→.decode('utf-8')→原始8位值

Unicode字符可以显示正常的中文。

程序的核心部分应该使用Unicode字符类型,最好是UTF-8。能够保证程序能够接受多种类型的文本编码,又可以保证输出的文本信息只采用一种编码格式。

这也就是为什么要加# -*- coding: utf-8 -*-

从文件中读取二进制数据,或向其中写入二进制数据时,总应该以rbwb等二进制模式来开启文件。


4. 用辅助函数来取代复杂的表达式

表达式如果比较复杂,就要拆解成小块,并移到辅助函数中。


5. 了解切割序列的办法

切割办法可以用于实现了__getitem____setitem__这两个方法的类上。

对原列表进行切割后,会产生另外一份全新的列表。拷贝:b = a[:]

对list进行赋值的时候使用切片,可以覆盖范围内的值,哪怕左右长度不同。

a[:3] = [101, 102, 103]


6. 在单次切片操作内,不要同时指定start、end和stride

列表反转: b = a[::-1],对UTF-8字符串的Unicode无效。

可以很方便的实现对数据的等步取样。

a[::2] a[::-2] 从头开始(从尾开始)每两个元素选取一个,注意后面的是逆序输出。

建议:先做步进式切片,赋值给某个变量后,再做二次切割。也可以先做范围切割,再做步进切割。


最新文章

  1. Skype无法收发组消息
  2. 使用PackageManager获得应用(包)信息
  3. STL 的运用 istringstream的运用
  4. Java中的集合框架
  5. Linux C学习笔记07--管道通信
  6. PL/pgSQL学习笔记之六
  7. 剑指Offer20 栈的压入弹出序列是否正确
  8. date命令使用总结【转载】
  9. atoi()、inet_addr()等函数 time.h文件
  10. mycat源码分析
  11. POJ3723最小生成树
  12. Unable to add window -- token android.os.BinderProxy@3a067204 is not valid错误分析记录
  13. IE的变态
  14. 面向对象【林老师版】:特性(property)(十六)
  15. Redis之发布订阅
  16. Beta阶段冲刺三
  17. 200行代码实现RPC框架
  18. Golang 处理 Json(一):编码
  19. hdu 4865 Peter's Hobby
  20. VS2017安装PCL1.8.1

热门文章

  1. java递归菜单树转换成pojo对象
  2. linux系统命令与常识
  3. JavaScript js调用堆栈(三)
  4. SecureCRT 个人使用爱好配置。
  5. rest_framework--序列化组件
  6. 【PTA 天梯赛】L2-1 分而治之(结构体存边)
  7. NC使用技巧
  8. BootStrap的动态模态框及静态模态框
  9. Java源码解析——集合框架(四)——LinkedListLinkedList原码分析
  10. php-语言参考-类型3.2-未完待续