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 -*-

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


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. Android学习笔记_13_网络通信之多个上传文件

    一.获取HTTP协议: 建立一个Web项目,建立一个如下所示的jsp界面,用IE捕获表单提交信息. <%@ page language="java" contentType= ...

  2. Node.js 笔记02

    一.关于命令 常用命令: dir 列出当前目录下面所有的文件 cd 目录名 进入到指定的目录,. 当前目录, .. 进入上级目录,cd . 当前目录, cd .. 上级目录 md 目录名 创建文件夹 ...

  3. 用c#语言编写水仙花数

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  4. select 获取选中option的值方法,选中option方法

    options=$("#Select option:selected"); options.attr('name');options.val(); options.text(); ...

  5. Java经典书籍-PDF

    密码:rhgr https://pan.baidu.com/s/17MkdVFS9JrsbseMveQePOQ

  6. Oracle oerr工具介绍

    (1)什么是oerr oerr是Oracle提供的在UNIX/Linux上查看Oracle错误的小工具,使用起来非常方便. (2)如何使用 oerr工具位于ORACLE_HOME下面,可以使用whic ...

  7. call、apply和bind的用法

    在改变 this 指向的时候,经常会把这三个方法混淆,下面就详细的整理一下三者的用法和区别 call() 方法 call() 方法可以有无数个参数 第一个参数是改变 this 指向的对象 后面的参数直 ...

  8. poj 2763 Housewife Wind : 树链剖分维护边 O(nlogn)建树 O((logn)²)修改与查询

    /** problem: http://poj.org/problem?id=2763 **/ #include<stdio.h> #include<stdlib.h> #in ...

  9. SAP常见问题与解决办法(转)

    1.A:在公司代码分配折旧表时报错? 在公司代码分配折旧表时报错,提示是“3000 的公司代码分录不完全-参见长文本” 希望各位大侠帮我看看.3000 的公司代码分录不完全-参见长文本 R: a.你把 ...

  10. Spring Boot2.4双数据源的配置

    相较于单数据源,双数据源配置有时候在数据分库的时候可能更加有利 但是在参考诸多博客以及书籍(汪云飞的实战书)的时候,发现对于spring boot1.X是完全没问题的,一旦切换到spring boot ...