[Effective Python] 用Pythonic方式来思考
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方式来思考的更多相关文章
- 《Effective Python》笔记——第1章 用Pythonic方式来思考
一. 遵循PEP8风格指南. PEP8是对python代码格式而编订的风格指南.地址:https://www.python.org/dev/peps/pep-0008/ 个人觉得不一定完全按照PEP8 ...
- 编写高质量的Python代码系列(一)之用Pythonic方式来思考
Python开发者用Pythonic这个形容词来描述具有特定风格的代码.这种风格是大家在使用Python语言进行编程并相互协作的过程中逐渐形成的习惯.那么,如何以改风格完成常见的Python编程工作呢 ...
- 用Pythonic方式来思考
一门语言的编程习惯是由用户来确立的.这些年来,Python开发者用Pythonic这个形容词来描述那种符合特定风格的代码. 这种Pyhtonic风格,既不是严密的规范,也不是由编译器强加给开发者的规则 ...
- 《Effective Python:编写高质量Python代码的59个有效方法》读书笔记(完结)
Effective Python 第1章 用Pythonic方式来思考 be pythonic 遵守pep8 python3有两种字符序列类型:bytes(原始的字节)和str(Unicode字符). ...
- Python -- Effective Python:编写高质量Python代码的59个有效方法
第 1 章 用 Pythonic 方式来思考 第 1 条:确认自己所用的 Python 版本 python --version import sys print(sys.version_info) p ...
- Effective Python之编写高质量Python代码的59个有效方法
这个周末断断续续的阅读完了<Effective Python之编写高质量Python代码 ...
- [修]python普通继承方式和super继承方式
[转]python普通继承方式和super继承方式 原文出自:http://www.360doc.com/content/13/0306/15/9934052_269664772.shtml 原文的错 ...
- Effective Python 中文版
如题,博主正在翻译一本Python相关的书. 图为Python作者. [美]Brett Slatkin的名作. Effective Python: 59 Specific Ways to Write ...
- 【转】python 退出程序的方式
[转]python 退出程序的方式 python程序退出方式[sys.exit() os._exit() os.kill() os.popen(...)] 知乎说明 http://www.zhihu. ...
随机推荐
- CodeForces - 598A Tricky Sum (数学,快速幂的运用)
传送门: http://codeforces.com/problemset/problem/598/A A. Tricky Sum time limit per test 1 second memor ...
- Ueditor上传图片到本地改造到上传图片到七牛云存储
作为新手说多了都是泪啊!我特别想记录一下作为菜鸟时的坑.看看以后是否会看着笑出来. 为什么要改到云存储上就不说了.好处多多. 视频教程上使用的又拍云同时也提到了七牛云.下来我自己也查了下.又拍云是试用 ...
- 发布Android程序
这个选项的意思是说,要使用.NET 2.0的完整版本,而非其子集. 下午发布Apk,一直报错,解决好了,忘记选这个了,以前都记得,明天再去公司发布去
- Java虚拟机垃圾回收:基础点(转载)
1.Java虚拟机垃圾回收 垃圾回收,或称垃圾收集(Garbage Collection,GC)是指自动管理回收不再被引用的内存数据. 在1960年诞生于MIT的Lisp语言首次使用了动态内存分配和垃 ...
- 使用 Cordova(PhoneGap)构建Android程序
移动终端开发随着智能手机的普及变得越来越热,什么项目都想移动一把,但反观要去学这些各个终端的控件使用,实属不易,又特别是每个终端的控件及所用语言都各不相同,使得这种学习变得更加困难. 有没有一种简单的 ...
- cornerstone提交报错"but is missing"以及xocde提示"missing from working copy"
问题描述 xocde提示"missing from working copy" 虽然这种警告不会影响程序到运行,但是数量很多,而且在svn提交的时候回出现这种问题 使用的svn工具 ...
- C++练习--创建Boat类和Car类(含友元)
/* 定义Boat与Car两个类,二者都有weight属性, 定义二者的一个友元函数totalWeight()为外部函数, 计算二者的重量和. */ #include<iostream> ...
- TCP/IP协议模型详解
TCP
- 高级同步器:同步屏障CyclicBarrier
引自:http://ifeve.com/concurrency-cyclicbarrier/ 简介 CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier).它要做的 ...
- 初学Node.js -环境搭建
从毕业一直到现在都是在做前端,总感觉缺少点什么,java? PHP? .Net? 框架太多了,学起来不好掌握,听说node.js挺牛的,我决定把node.js好好的学一下.首先是环境的配置,这个配置真 ...