[Python步步为营]1.python哲学

七 31st, 2011

ing………………….

喜欢Python的人一定看过下面这段一段对话,原文是来自于:Favourite SnakesAndRubies quotes

当谈到"非主流"语言:
Adrian:"我们的回应是:
  人们学习PHP是因为要得到一份工作;
  人们学习Java是因为他们选修了计算机科学这门课;
  人们学习Python是因为他们爱这门语言,因为他们追寻美,(我相信这对Ruby也是适用的)
  如果我雇佣了一个Python程序员,他很有可能是优秀的程序员。"
David:"善!"

你能从这段对话中看到什么了?——学习python是因为热爱,而这也是学好一门技术的必备条件。

呵呵,当你了解python之后,成为一个真正的pythonic, 你会发现它的优点是无须去证明的。当然,在开始之前,我还是得介绍一下Python的优美之处,以及python的学习途径(当然也是没有什么捷径的)。

为什么说python是一门优美的语言?怎么体现了?好吧,我就balabala一下,仅限个人理解,当然这些并不会影响你学习python, 仅仅是一点调料吧!

1. 最高品质:

因为python具有清楚的语法和一致的设计,所以可以让我们很容易写出清晰,易懂的代码。那么理所当然,在Python的世界里,最高品质就应该是简单,直接和易读三个要素。假如你读过一些python的代码,你就会发现Python语法就像可执行的伪代码,它使代码放置很久后仍容易理解,修改和使用。能有这个优点,不得不说创造者在设计之初,就坚持要做到最高品质,让语言本身具有正交的,清晰的和最小化的设计,保证它的代码易懂和容易预见。

Python通过提供一个简单的内核语言,把应用类的工具拆分成大量的模块库组件来实现复杂的功能。正是这种简单化的设计,让它也成为非专业程序员的理想语言。

当然除了这么高品质的设计之外,Python还很好的体现了现代软件方法论,例如结构化,模块化和面向对象设计,这就允许代码书写一次、多次重用的特性。

2. 开发效率

如果既写过java,C++代码,又写过python代码的同学们,就会深刻体会到它们在开发速度上的差别。事实上,用Python写的程序所花的时间一般是用C++或Java写所花时间的三分之一到四分之一左右。这个比例的意义直接说明了Python可以提高开发者的效率,而且由于Python具备的最高品质,开发者可以做更少的编码,调试和维护工作了。

Python是用解释器来处理细节工作,而类似Java之类的语言则必须明确地用代码实现。像一些类型定义,存储布局,内存管理,普通任务实现和构建过程在Python脚本中是找不到的。例如没有类型定义,Python代码不会限制于特定的类型,适用于很多类型,任何对象都可以有兼容的接口。

总的来说Python是一种非常灵活快捷的语言,我们可以用它来进行快速的战术任务,比如测试和系统管理之类的。

3. 程序移植性:

大多数Python脚本通过简单的复制源代码就可以在Windows,Linux或Mac上运行。而且,用Python标准Tkinter库写的GUI程序可以不加修改地运行在X Windows系统,微软Windows和Mac上。当然该标准库的替代库有wxPython和PyQt,它们也提供相似的GUI移植性。

4. 可扩展性:

Python不是封闭的,它的设计理念就是可以集成其他工具的。用Python写的程序可以很容易地与其它的系统组件混合。这是Python成为理想的可控制和可定制语言的一个很重要的条件。当程序用Python层扩展时,他们的终端用户是可以集成和裁剪它们的,而且还不用动系统整体的源代码。

Python脚本可以调用存在的C/C++库,Java类文件,集成COM,.NET和CORBA组件,以及与其它组件通讯需要的网络协议如套接字,HTTP,XML-RPC和SOAP,等等。另外用其他语言写的程序可以通过调用API函数运行Python脚本。Python允许开发者用多种方式定制自己需要的功能。


总之,看过上面的所谓优点之后,你肯定得问:“知道这些有个屁用啊,我还没法编码啊?这些浮云对我有什么帮助么?”

我只能借用一句来自《unix编程艺术》这本书中的一句话:“少一点技术,多一些共享文化:显见和隐蔽的,直观和潜流的—-做到不至于方法,更重乎理念。”

—End 1


好了,扯多了,还是先看看python的工作环境:

FL~03`4AMLV6LWO7(M94K~L

注意,看到我敲入的命令是什么没?  >>> import this

自己动手试一下吧(取决于你安装好python没??不会就google吧,安装实在是简单得不行了),你会看到下面的哲学思想:中文是加上去的(python作者可不会中文哦)

 
>>>  import this

The Zen of Python, by Tim Peters 
 
Beautiful is better than ugly. 
漂亮的代码要比丑陋的代码要好得多。 
Explicit is better than implicit. 
明确的定义比 隐式定义更好。 
Simple is better than complex. 
简单比复杂要好。 
Complex is better than complicated. 
复杂要比搞复杂要好。 
Flat is better than nested. 
扁平结构要比嵌套结构好。 
Sparse is better than dense. 
简洁明了的代码要比稠密的代码要好。 
Readability counts. 
可读写的计数。 
Special cases aren’t special enough to break the rules. 
专门的用例不是特殊到足以违反规则。 
Although practicality beats purity. 
是的,实用性练就纯度。 
Errors should never pass silently. 
错误永远都不会沉默。 
Unless explicitly silenced. 
除非明确啥也不干。 
In the face of ambiguity, refuse the temptation to guess. 
面对模糊定义、拒绝视图拍脑袋猜。 
There should be one– and preferably only one –obvious way to do it. 
Although that way may not be obvious at first unless you’re Dutch. 
虽然一开始不那面明确,我们会选择更清晰一条到走。 
Now is better than never. 
现在开始总比不开始的要好。 
Although never is often better than *right* now. 
虽然从不尝试总比现在开始尝试好。 
If the implementation is hard to explain, it’s a bad idea. 
如果实现难以说明,那它是个坏主意。 
If the implementation is easy to explain, it may be a good idea. 
如果实现容易说明,那它是个好主意。 
Namespaces are one honking great idea — let’s do more of those! 
名称空间是一个好东西——让我们做更多那样的东西!

哈哈,是不是觉得很有感觉啊,放下你的好奇感,自己动手去尝试吧。最后的最后,来欣赏一下python社区一直所推崇的八荣八耻,带着这些信念开始后面的python之行吧。

以动手实践为荣 , 以只看不练为耻;
以打印日志为荣 , 以单步跟踪为耻;
以空格缩进为荣 , 以制表缩进为耻;
以单元测试为荣 , 以人工测试为耻;

以模块复用为荣 , 以复制粘贴为耻;
以多态应用为荣 , 以分支判断为耻;
以Pythonic为荣, 以冗余拖沓为耻;
以总结分享为荣 , 以跪求其解为耻;

 

—- End 2


推荐阅读:

1. 啄木鸟社区:http://wiki.woodpecker.org.cn/moin/

2. 很短小精悍的一本电子书 《a byte of python》





除非注明,本站文章均为原创。本文基于 BY-NC-SA 协议进行授权,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 metaboy(包含链接).

本文链接地址: http://blog.wangyuxiong.com/archives/51225

订阅本站:http://www.wangyuxiong.com/feed

分类: 语言编程         标签: , ,
  1. linlin
    七 31st, 201123:50

    啥事写的,怎么也不通知一下,写得很不错嘛!呵呵

无觅相关文章插件,快速提升流量