当前位置: 首页 > news >正文

【观点】如何成为Python高手

导读:本文是从《How to become a proficient Python programmer》这篇文章翻译而来。译文来自外刊IT评论《如何成为Python高手》。

内容如下:

这篇文章主要是对我收集的一些文章的摘要。因为已经有很多比我有才华的人写出了大量关于如何成为优秀Python程序员的好文章。

我的总结主要集中在四个基本题目上:函数式编程,性能,测试,编码规范。如果一个程序员能将这四个方面的内容知识都吸收消化,那他/她不管怎样都会有巨大的收获。

函数式编程

命令式的编程风格已经成为事实上的标准。命令式编程的程序是由一些描述状态转变的语句组成。虽然有时候这种编程方式十分的有效,但有时也不尽如此(比如复杂性)——而且,相对于声明式编程方式,它可能会显得不是很直观。

如果你不明白我究竟是在说什么,这很正常。这里有一些文章能让你脑袋开窍。但你要注意,这些文章有点像《骇客帝国》里的红色药丸——一旦你尝试过了函数式编程,你就永远不会回头了。

http://www.amk.ca/python/writing/functional

http://www.secnetix.de/olli/Python/lambda_functions.hawk

http://docs.python.org/howto/functional.html

性能

你会看到有如此多的讨论都在批评这些“脚本语言”(Python,Ruby)是如何的性能低下,可是你却经常的容易忽略这样的事实:是程序员使用的算法导致了程序这样拙劣的表现。

这里有一些非常好的文章,能让你知道Python的运行时性能表现的细节详情,你会发现,通过这些精炼而且有趣的语言,你也能写出高性能的应用程序。而且,当你的老板质疑Python的性能时,你别忘了告诉他,这世界上第二大的搜索引擎就是用Python写成的——它叫做Youtube(参考Python摘录)

http://jaynes.colorado.edu/PythonIdioms.html

http://wiki.python.org/moin/PythonSpeed/PerformanceTips

测试

如今在计算机科学界,测试可能是一个最让人不知所措的主题了。有些程序员能真正的理解它,十分重视TDD(测试驱动开发)和它的后继者 BDD(行为驱动开发)。而另外一些根本不接受,认为这是浪费时间。那么,我现在将告诉你:如果你不曾开始使用TDD/BDD,那你错过了很多最好的东西!

这并不只是说引入了一种技术,可以替换你的公司里那种通过愚蠢的手工点击测试应用程序的原始发布管理制度,更重要的是,它是一种能够让你深入理解你自己的业务领域的工具——真正的你需要的、你想要的攻克问题、处理问题的方式。如果你还没有这样做,请试一下。下面的这些文章将会给你一些提示:

http://www.oreillynet.com/lpt/a/5463

http://www.oreillynet.com/lpt/a/5584

http://wiki.cacr.caltech.edu/danse/index.php/Unit_testing_and_Integration_testing

http://docs.python.org/library/unittest.html

编码规范

并非所有的代码生来平等。有些代码可以被另外的任何一个好的程序员读懂和修改。但有些却只能被读,而且只能被代码的原始作者修改——而且这也只是在他或她写出了这代码的几小时内可以。为什么会这样?因为没有经过代码测试(上面说的)和缺乏正确的编程规范。

下面的文章给你描述了一个最小的应该遵守的规范合集。如果按照这些指导原则,你将能编写出更简洁和漂亮的代码。作为附加效应,你的程序会变得可读性更好,更容易的被你和任何其他人修改。

http://www.python.org/dev/peps/pep-0008/

http://www.fantascienza.net/leonardo/ar/python_best_practices.html

那就去传阅这这些资料吧。从坐在你身边的人开始。也许在下一次程序员沙龙或编程大会的时候,也已经成为一名Python编程高手了!

祝你学习旅途顺利。

如果你喜欢这些文章,请在微博上顶一下,让其他人也知道。

文章来源:外刊IT评论

转载于:https://www.cnblogs.com/waw/archive/2011/09/23/2187240.html

相关文章:

  • SDN对传统网络的变革和提升
  • 【观点】停止编程
  • 着眼大数据 预测未来趋势
  • 烟草网站如何实现防攻击、防病毒、防篡改
  • NB-IoT将给物联网带来革命性变化
  • 金山戴尔达成战略合作协议 春节后宣布
  • ASP.NET Aries JSAPI 文档说明:AR.Utility
  • C#公历转农历算法
  • 熊本又地震,索尼CMOS传感器厂再次停工
  • UNIX上C++程序设计守则(信号和线程)(下)
  • 可能收购Brocade IP业务的黑马:Arris
  • 悼念乔布斯
  • “灰色区域”不能成为安全的“法外之地”
  • 拯救网管老克
  • Facebook和Instagram正秘密创建用户上传图片的ASCII字符图形
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【刷算法】求1+2+3+...+n
  • Android系统模拟器绘制实现概述
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • Codepen 每日精选(2018-3-25)
  • CSS魔法堂:Absolute Positioning就这个样
  • emacs初体验
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • isset在php5.6-和php7.0+的一些差异
  • JavaScript设计模式系列一:工厂模式
  • java取消线程实例
  • JSDuck 与 AngularJS 融合技巧
  • LeetCode29.两数相除 JavaScript
  • python 学习笔记 - Queue Pipes,进程间通讯
  • redis学习笔记(三):列表、集合、有序集合
  • sessionStorage和localStorage
  • vue2.0项目引入element-ui
  • 从零开始学习部署
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • C# - 为值类型重定义相等性
  • 阿里云重庆大学大数据训练营落地分享
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • #QT(串口助手-界面)
  • #window11设置系统变量#
  • (26)4.7 字符函数和字符串函数
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (三分钟)速览传统边缘检测算子
  • (转)Scala的“=”符号简介
  • (转)大型网站架构演变和知识体系
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .naturalWidth 和naturalHeight属性,
  • .NET 快速重构概要1
  • .net 提取注释生成API文档 帮助文档
  • .NET 依赖注入和配置系统
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET的数据绑定
  • .net后端程序发布到nignx上,通过nginx访问