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. javascript操作Date对象

    Date 对象用于处理日期和时间. 创建 Date 对象的语法: var myDate=new Date() Date 对象会自动把当前日期和时间保存为其初始值. 参数形式有以下5种: new Dat ...

  2. 12java基础继承

    26.定义类Human,具有若干属性和功能:定义其子类Man.Woman: 在主类Test中分别创建子类.父类和上转型对象,并测试其特性.   package com.hry.test; public ...

  3. .NET中Ajax跨越访问

    说明:我们知道Ajax是不能进行跨域请求的,我们是可以设置我们的项目让Ajax支持跨域访问. 跨域: aa.xxx.com 中用ajax请求  bb.ccc.com中的数据成为跨域. 找了一些文章看了 ...

  4. Android手机上抓包神器

    Packet Capture 一款依托安卓系统自身VPN来达到免Root抓取数据包的应用程序.Packet Capture一个使用SSL网络解密的 捕获数据包/网络嗅探 工具,虽然它的功能并不丰富,但 ...

  5. 前行记录 - NOIP2018游记

    NOIP2018游记 - 前行记录 NOIP2018 完跪……滚回学校考半期 QwQ 这篇不是题解 awa ,题解之后会发布的,毕竟我还没有AC呢 又及……G2020 陌路笙歌 - 再见(╯▽╰) 感 ...

  6. 云监控自定义HTTP状态码说明

    您在使用站点监控时,返回的6XX状态码均为云监控自定义HTTP状态码,具体含义如下表所示: 状态码      含义     备注  610  HTTP连接超时      监测点探测您的网站时出现连接超 ...

  7. 强化记忆之php

    php 输出的区分 新手摸索道路,有说不对的地方,还请多多包涵. echo 能够输出一个以上的字符串,也能输出html标签 print  一次只能接受一个字符串(区分与echo),也能输出html标签 ...

  8. python 排列组合

    笛卡尔积(product): 假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2) ...

  9. python中 列表常用的操作

    列表可以装大量的数据,不限制数据类型,表示方式:[]:列表中的元素用逗号隔开. lst = [] #定义一个空列表 lst = ["Tanxu",18,"女", ...

  10. go学习笔记-语言指针

    语言指针 定义及使用 变量是一种使用方便的占位符,用于引用计算机内存地址.取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址. 一个指针变量指向了一个值的内存地址.类似于变量和常量, ...