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] 从头开始(从尾开始)每两个元素选取一个,注意后面的是逆序输出。

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


[Effective Python] 用Pythonic方式来思考的更多相关文章

  1. 《Effective Python》笔记——第1章 用Pythonic方式来思考

    一. 遵循PEP8风格指南. PEP8是对python代码格式而编订的风格指南.地址:https://www.python.org/dev/peps/pep-0008/ 个人觉得不一定完全按照PEP8 ...

  2. 编写高质量的Python代码系列(一)之用Pythonic方式来思考

    Python开发者用Pythonic这个形容词来描述具有特定风格的代码.这种风格是大家在使用Python语言进行编程并相互协作的过程中逐渐形成的习惯.那么,如何以改风格完成常见的Python编程工作呢 ...

  3. 用Pythonic方式来思考

    一门语言的编程习惯是由用户来确立的.这些年来,Python开发者用Pythonic这个形容词来描述那种符合特定风格的代码. 这种Pyhtonic风格,既不是严密的规范,也不是由编译器强加给开发者的规则 ...

  4. 《Effective Python:编写高质量Python代码的59个有效方法》读书笔记(完结)

    Effective Python 第1章 用Pythonic方式来思考 be pythonic 遵守pep8 python3有两种字符序列类型:bytes(原始的字节)和str(Unicode字符). ...

  5. Python -- Effective Python:编写高质量Python代码的59个有效方法

    第 1 章 用 Pythonic 方式来思考 第 1 条:确认自己所用的 Python 版本 python --version import sys print(sys.version_info) p ...

  6. Effective Python之编写高质量Python代码的59个有效方法

                                                         这个周末断断续续的阅读完了<Effective Python之编写高质量Python代码 ...

  7. [修]python普通继承方式和super继承方式

    [转]python普通继承方式和super继承方式 原文出自:http://www.360doc.com/content/13/0306/15/9934052_269664772.shtml 原文的错 ...

  8. Effective Python 中文版

    如题,博主正在翻译一本Python相关的书. 图为Python作者. [美]Brett Slatkin的名作. Effective Python: 59 Specific Ways to Write ...

  9. 【转】python 退出程序的方式

    [转]python 退出程序的方式 python程序退出方式[sys.exit() os._exit() os.kill() os.popen(...)] 知乎说明 http://www.zhihu. ...

随机推荐

  1. MVC5 模型 生成EF

    在看本篇之前请先去了解一下EF以及如何利用模型生成数据库  https://i.cnblogs.com/posts?categoryid=1107227 看Code First就可以了. 等你了解了E ...

  2. 微信小程序【消息推送服务器认证C# WebAPI】

    参考微信开发文档: https://developers.weixin.qq.com/miniprogram/dev/api/custommsg/callback_help.html 代码可用 /// ...

  3. Swift_数组详解

    Swift_数组详解 点击查看源码 初始化 //初始化 fileprivate func testInit() { //空数组 var array = [Int]() print(array) arr ...

  4. c# 分析SQL语句中的表操作

    最近写了很多方向的总结和demo.基本包含了工作中的很多方面,毕竟c#已经高度封装并且提供了很多类库.前面已经总结了博文.最近2天突然感觉前面的SQL分析阻组件的确麻烦,也注意看了下.为了方便大家学习 ...

  5. NEC 框架规范 css function

    /* function */.f-cb:after,.f-cbli li:after{display:block;clear:both;visibility:hidden;height:0;overf ...

  6. leetcode算法之 Single Number

    题目描述: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 要求:  时间复杂度O(n),空间复杂都O(1) 示例: 输入: [2,2,1] 输 ...

  7. string类中字符的大小写转换

    今天做一道题,要用string类,涉及大小写转换,查看了C++文档,string类没有提供这样的方法,只好自己写. 之后是想到一个比较笨的方法,我把string当成一个容器,然后用迭代器一个一个来替换 ...

  8. centos7中vsftp的搭建

    开启vsftpd:service vsftpd start关闭vsftp:service vsftpd stop 安装vsftpd: yum -y install vsftpd 建立vsftpd帐号: ...

  9. MySQL wait_timeout参数修改

    MySQL wait_timeout参数修改问题,可能经常会有DBA遇到过,下面就试验一下并看看会有什么现象. wait_timeout分为global级及session级别,如未进行配置,默认值为2 ...

  10. [转]Nginx伪静态配置和常用Rewrite伪静态规则集锦

    Nginx伪静态配置和常用Rewrite伪静态规则集锦 作者: 字体:[增加 减小] 类型:转载 时间:2014-06-10 我要评论 伪静态是一种可以把文件后缀改成任何可能的一种方法,如果我想把ph ...