建议2---编写pythonic代码
(1)要避免劣化代码
1)避免只用大小写来区分不同的对象。如a是一个数值类型变量,A是String类型,虽在编码过程容易区分二者的含义,但这样做毫无益处,它不会给其他阅读代码的人带来多少便利。
2)避免使用容易引起混淆的名称。如重复使用已经存在于上下文的变量来表示不同的类型;误用了内建名称来表示其他含义的名称而使之在当前命名空间被屏蔽;没有使用新建的数据类型的情况下使用类似于element、list、dict等作为变量名;使用字母小写o容易与1 混淆,1与字母L的小写。因此推荐变量名与要解决的问题域一致。有如下两个实例:
#示例1
def funA(list,num):
for element in list:
if num == element:
return True
else:
return Flase
#示例2
def find_num(searchlist,num):
for listValue in searchlist:
if num == listValue:
return True
else:
return False
3)不用害怕过长的变量名。为了使得程序更易理解和阅读,有的时候变量名是必要的。不要为了少写几个字母而过分缩写。下例是一个用来保存用户信息的字典结构,变量名person_info比pi的可读性要强得多。
>>> person_info = {'name':'John','IDCard':''}
(2)深入认识Python有助于编写Pythonic代码
可以从以下几个方面入手:
1)全面掌握Python提供给我们的所有特性,包括语言特性和库特性。其中最好的学习方式应该是通读官方手册的Language Reference和Library Reference。
2)深入学习业界公认的比较Pythonic的代码,如Flask、gevent和requests等。以requests这个通过HTTP(HTTPS)协议获取网络资源的程序库为例,要获取带有Basic Auth的网络资源时,代码如下:
import requests
r = requests.get('https://api.github.com',auth=('user','pass'))
print(r.status_code)
print(r.headers[content-type])
而使用Python标准库httplib2时,代码就非常复杂,程序员需要了解相当多的关于HTTP协议和Basic Auth的知识才能编程。
import urllib2
gh_url = 'https://api.github.com'
req = urllib2.Request(gh_url)
password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_manager.add_password(None,gh_url,'user','pass')
auth_manager =urllib2.HTTPBasicAuthHandler(password_manager)
opener = urllib2.build_opener(auth_manager)
urllib2.install_opener(opener)
handler = urllib2.urlopen(req)
print(handler.getcode())
print(handler.headers.getheader('content-type'))
最后,除了修炼内功外,也可以尝试利用工具达到事半功倍的效果。接下介绍风格检查程序PEP8。其实一开始PEP8是一篇关于Python编码风格的指南,它提出了保持代码一致性的细节要求。它至少包括了代码布局、注释、命名规范等方面的要求。比如对代码的换行,不好的风格如下:
if foo == 'blah': do_blah_thing()
do_one();do_two();do_three()
而Pythonic的风格是这样的:
if foo =='blah':
do_blah_thing()
do_one()
do_two()
do_three()
如果“人肉”检查代码是否符合PEP8规范,则比较困难,而容易跟同僚引发争论,所以有人开发了一个应用程序来进行检测,那就是PEP8应用程序。它是使用Python开发的,安装它很容易。
$ pip install -U pep8
在自己的shell中执行这一命令就可以安装成功了(首先安装pip),然后即可用它检测自己的代码。
$ pep8 --first test.py
值得注意的是,PEP8不是唯一的编程规范,同样PEP8也不是唯一的风格检测程序,类似的应用还有Pychecker、Pylint、Pyflakes等。
建议2---编写pythonic代码的更多相关文章
- 最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!【转载+整理】
原文地址 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和for-of循环 生成器 Generators 模板字符串 不定参数和默认参数 解构 Destructu ...
- VsCode中使用Emmet神器快速编写HTML代码
一.Emmet简述 Emmet (前身为 Zen Coding) 是一个能大幅度提高前端开发效率的一个工具. 在前端开发的过程中,一大部分的工作是写 HTML.CSS 代码.特别是手动编写 HTML ...
- 建议1---理解Pythonic的概念
对于Pythonic的概念,众人都有自己的看法,但大家心中都认同一个更具体的指南,即Tim Peters的<The Zen of Python>.在这一篇充满禅意的诗篇中,有几点非常深入人 ...
- JUnit编写单元测试代码注意点小结
用eclipse编写单元测试的时候,可以直接选中某个类,然后右键new新疆一个junit case,界面如下图1所示: 图1:新建test case 选 择图1中的JUnit Test Case,然后 ...
- 最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!
原文地址 迁移到:http://www.bdata-cap.com/newsinfo/1741515.html 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和f ...
- [转]通过Visual Studio为Linux编写C++代码
Build 2016大会上Microsoft首次公布的Visual Studio 2015扩展提供了在VS2015中编写C++代码,随后通过Linux/UNIX计算机进行编译和执行的能力.这种想法非常 ...
- 基于CkEditor实现.net在线开发之路(2)编写C#代码,怎么调用它。
上一章简约的介绍了CkEditor编辑器,可以编辑js逻辑代码,css,html,C#代码,这章我根据实际例子,讲解怎么编写C#代码和怎么调用它. 大家都还记得刚刚接触程序编时的hello Word吧 ...
- 解决VS2012编写JQuery代码不能智能提示的问题(其他js库的代码提示设置估计类似)
VS默认设置下编写jQuery代码是这样的: 解决办法: 1.在项目的"管理NuGet程序包"中安装JQuery: 2.打开:工具 -> 选项 -> 文本编辑器 -&g ...
- JNI技术基础(2)——从零开始编写JNI代码
书接上文: <JNI技术基础(1)——从零开始编写JNI代码> 2.编译源程序HelloWorld.java并生成HelloWorld.class 3.生成头文件HelloWorld.h ...
随机推荐
- 8.02-json_use
import json # 1.字符串和 dic list转换 # 字符串(json)----dict list data = '[{"name":"张三",& ...
- 关于 chrome canary X64 在 win7 64bit 下面缺少openvr_api.dll的解决方法
在github上下载openvr_api.dll放到chrome的安装目录下就可以. 其实放到系统目录下最好,以后其他程序要使用的时候也能使用的到. https://github.com/ValveS ...
- A. Many Equal Substrings(水题)
思路: 直接比较橘色框里的取第一次相等,即可. #include<iostream> #include<string> using namespace std; string ...
- 004_Python之all()\any()
http://www.jianshu.com/p/65b6b4a62071 一.待验证整理
- springboot中使用freemarker生成word文档并打包成zip下载(简历)
一.设计出的简历模板图以及给的简历小图标切图 二.按照简历模板图新建简历word文件 :${字段名},同时将图片插入到word中,并将建好的word文件另存为xml文件: 三.直 ...
- python textwrap的使用
参考:https://docs.python.org/3.6/library/textwrap.html textwrap模块提供了一些方便的函数,以及TextWrapper类,它执行所有的工作.如果 ...
- IndentationError 这个错误是缩进的问题
1.自定义库导入时,提示这个错误,是缩进的问题
- vue-electron脚手架
vue-electron官方文档(中文):https://simulatedgreg.gitbooks.io/electron-vue/content/cnvue-electron官方文档(英文):h ...
- HTTP协议、HTTP请求方法、常见状态码、HTTP消息
HTTP协议 客户端请求,服务端响应.浏览器与服务器不建立持久连接,响应后连接失效. HTTP请求方法 一.GET GET方法用于获取请求页面的指定信息. 二.HEAD 除了服务器不能在响应里返回消息 ...
- WPF在Canvas中绘图实现折线统计图
最近在WPF中做一个需要实现统计的功能,其中需要用到统计图,之前也没有接触过,度娘上大多都是各种收费或者免费的第三方控件,不想用第三方控件那就自己画一个吧. 在园子还找到一篇文章,思路来自这篇文章,文 ...