建议2---编写pythonic代码

(1)要避免劣化代码

  1)避免只用大小写来区分不同的对象。如a是一个数值类型变量,A是String类型,虽在编码过程容易区分二者的含义,但这样做毫无益处,它不会给其他阅读代码的人带来多少便利。

  2)避免使用容易引起混淆的名称。如重复使用已经存在于上下文的变量来表示不同的类型;误用了内建名称来表示其他含义的名称而使之在当前命名空间被屏蔽;没有使用新建的数据类型的情况下使用类似于element、list、dict等作为变量名;使用字母小写o容易与1 混淆,1与字母L的小写。因此推荐变量名与要解决的问题域一致。有如下两个实例:

#示例1def  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的可读性要强得多。

1 >>> person_info = {‘name‘:‘John‘,‘IDCard‘:‘131321‘}

(2)深入认识Python有助于编写Pythonic代码

可以从以下几个方面入手:

  1)全面掌握Python提供给我们的所有特性,包括语言特性和库特性。其中最好的学习方式应该是通读官方手册的Language Reference和Library Reference。

  2)深入学习业界公认的比较Pythonic的代码,如Flask、gevent和requests等。以requests这个通过HTTP(HTTPS)协议获取网络资源的程序库为例,要获取带有Basic Auth的网络资源时,代码如下:

1 import requests
2 r = requests.get(‘https://api.github.com‘,auth=(‘user‘,‘pass‘))
3 print(r.status_code)
4 print(r.headers[content-type])

而使用Python标准库httplib2时,代码就非常复杂,程序员需要了解相当多的关于HTTP协议和Basic Auth的知识才能编程。

 1 import urllib2
 2 gh_url = ‘https://api.github.com‘
 3 req = urllib2.Request(gh_url)
 4 password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
 5 password_manager.add_password(None,gh_url,‘user‘,‘pass‘)
 6 auth_manager =urllib2.HTTPBasicAuthHandler(password_manager)
 7 opener = urllib2.build_opener(auth_manager)
 8 urllib2.install_opener(opener)
 9 handler = urllib2.urlopen(req)
10 print(handler.getcode())
11 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等。

原文地址:https://www.cnblogs.com/xiaoshayu520ly/p/10489135.html

时间: 2024-10-31 10:58:01

建议2---编写pythonic代码的相关文章

对编写html代码的几点儿小建议

1.DOCTYPE说明:告诉浏览器要使用哪种规范来解释该文档内容: <!DOCTYPE html PUBLIC "-W3//DTD//XHTML 1.0  Transitional//EN"  "http://www.w3.org/1999/xhmlt"> 解释:-W3:w3标准:DTD:文档类型定义: XHTML 1.0:XHTML 1.0版本:Transitional:过渡模式(Strict:严格模式):EN:语言为英语: "http://

VsCode中使用Emmet神器快速编写HTML代码

VsCode中使用Emmet神器快速编写HTML代码 出 处:http://www.cnblogs.com/summit7ca/ 转载: http://www.cnblogs.com/summit7ca/p/6944215.html 一.Emmet简述 Emmet (前身为 Zen Coding) 是一个能大幅度提高前端开发效率的一个工具. 在前端开发的过程中,一大部分的工作是写 HTML.CSS 代码.特别是手动编写 HTML 代码的时候,效率会特别低下,因为需要敲打很多尖括号,而且很多标签都

[转载]编写优秀代码的10个技巧

作为程序员,写代码是需要一种崇高无上的精神来支撑的,写出优秀的代码,更需要你有深厚的底蕴和良好的编码习惯.在介绍写优秀代码的10个技巧之前,我们先来探讨一下什么样的代码才是优秀的代码. 稳定可靠(Robustness) 可维护且简洁(Maintainable and Simple Code) 高效(Fast) 简短(Small) 共享性(Reusable) 可测试性(Testable) 可移植性(Portable) 面对以上的目标,我们总结了以下10个写代码的技巧,希望对你有所帮助. 1.百家之

编写可读性代码的艺术

在做IT的公司里,尤其是软件开发部门,一般不会要求工程师衣着正式.在我工作过的一些环境相对宽松的公司里,很多程序员的衣着连得体都算不上(搞笑的T恤.短裤.拖鞋或者干脆不穿鞋).我想,我本人也在这个行列里面.虽然我现在改行做软件开发方面的咨询工作,但还是改不了这副德性.衣着体面的其中一个积极方面是它体现了对周围人的尊重,以及对所从事工作的尊重.比如,那些研究市场的人要表现出对客户的尊重.而大多数程序员基本上每天主要的工作就是和其他程序员打交道.那么这说明程序员之间就不用互相尊重吗?而且也不用尊重自

最新的JavaScript核心语言标准&mdash;&mdash;ES6,彻底改变你编写JS代码的方式!【转载+整理】

原文地址 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和for-of循环 生成器 Generators 模板字符串 不定参数和默认参数 解构 Destructuring 箭头函数 Arrow Functions Symbols 集合 学习Babel和Broccoli,马上就用ES6 代理 Proxies ES6 说自己的宗旨是"凡是新加入的特性,势必已在其它语言中得到强有力的实用性证明."--TRUE!如果你大概浏览下 ES6 的新特性,事实上它

web前端入门到实战:编写CSS代码的8个策略,资深开发工程师总结

编写基本的CSS和HTML是我们作为Web开发人员学习的首要事情之一.然而,我遇到的很多应用程序显然没有人花时间真正考虑前端开发的长久性和可维护性. 我认为这主要是因为许多开发人员对组织CSS / HTML和JavaScript的策略缺乏深刻的理解. 在我和我们团队的观念中,编写可维护的前端代码非常重要.尽管我们有一些使用了多年的客户端,但要记住你永远不会是唯一一个工作于应用程序的人.仅仅因为你的一次性元素和配置对你有意义,并不意味着它们对下一个可能继承应用程序的人有意义. 为了防止这篇文章太长

实时显示iOS编写UI代码效果

编写iOS应用UI的方式大概有两种,一种是Storyboard/Xib,另一种是手写代码.采用Storyboard/Xib方式组织UI,由于提供可视化的特性,只要从UI库中拖动UI控件,便可以显示结果,极大地提高开发速度.但面临一个问题就是多人协作开发,由于所有的UI都放在同一个Storyboard文件中,使用Git/SVN合并代码就会出现冲突.多人协作开发还不是主要问题,有人提出可以创建多个Storyboard来分开UI编写,而Storyboard/Xib最主要问题是代码复用性比较差.所以有些

第1课第4.4节_Android硬件访问服务编写HAL代码

4 编写HAL代码 源码下载方法 第一次: git clone https://github.com/weidongshan/SYS_0001_LEDDemo.git 更新: git pull origin 取出指定版本: git checkout v1 // 有JNI没有HAL git checkout v2 // 有JNI,HAL git checkout v3 // add MODULE TAG, DEVICE TAG JNI 向上提供本地函数, 向下加载HAL文件并调用HAL的函数HAL

JNI技术基础(2)——从零开始编写JNI代码

书接上文: <JNI技术基础(1)——从零开始编写JNI代码> 2.编译源程序HelloWorld.java并生成HelloWorld.class 3.生成头文件HelloWorld.h 在Linux控制台输入命令:javah –jni HelloWorld 生成HelloWorld.h头文件 //HelloWorld.h /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header