设为首页 收藏本站
查看: 839|回复: 0

[经验分享] 冲刺豆瓣(2):知其Python哲学

[复制链接]

尚未签到

发表于 2015-4-23 10:57:38 | 显示全部楼层 |阅读模式
一、Python哲学



    •   Beautiful is better than ugly.
      美优于丑。



    •   Explicit is better than implicit.
      直白优于隐晦。



    •   Simple is better than complex[1].
      简单优于复杂。



    •   Complex is better than complicated[2].
      复杂优于纠结。



    •   Flat is better than nested.
      扁平优于嵌套。



    •   Sparse is better than dense[3].
      稀疏优于稠密。



    •   Readability counts.
      可读性有重要意义的。



    •   Special cases aren't special enough to break the rules.
      特例可以,但不能特例到打破规则。



      •   Although practicality beats purity.
        尽管我们在纯粹性和实用性之间是倾向实用性的。




    •   Errors should never pass silently.
      出错决不允许静静地Pass。



      •   Unless explicitly silenced.
        除非明确的说明了是静静地Pass。




    • 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[4].
        尽管这个做法可能刚开始的时候不是那么显而易见的,毕竟你不是荷兰人Python之父。




    •   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. 如果一个实现很难解释清楚,说明实现的idea有问题。


    •   If the implementation is easy to explain, it may be a good idea.
      如果一个实现很容易解释清楚,那可能是个好的实现idea。



    •   NameSpaces are one honking great idea -- let's do more of those!
      Namespace真真儿是个好想法 — 放手多多使用吧!




译注
  [1] [2] 单词complex的意思是 复杂,而complicated 是 结构复杂。
  在计算机中,单个模块复杂理解为complex,而多个模块互相关联的复杂理解为complicated。用计算机的术语,complicated是模块之间“耦合”很多,说明理解不深,设计不好。
  软件的核心复杂度不可避免,但要这些集中一起,给使用一个干净高级的接口,也就是说:如果complex(核心复杂度)不可避免可以接受,但complicated一定要想办法去除,随着系统深入理解,模块职责的划分会更简明干净。
PS: 核心复杂度的说明讨论可以参见《代码大全》一书。
  翻译上,complex翻成 复杂,complicated翻成 纠结。
  [3] 稀疏、稠密指的是代码行中操作的疏密。C的Geek,喜欢写稠密的代码,比如使用++,--运算符来压缩代码行。在Python看来,这个做法不可取,即会让代码更可能出错(如自增操作的负作用),也降低了代码的可读性。
  [4] 这里的荷兰人指Python 之父Guido,参见说明:http://qianjigui.javaeye.com/blog/266365
  原文来自:http://oldratlee.com/147/tech/python/python-philosophy.html
二、关于Python

  Python是一门优雅而健壮的编程语言,它继承了传统编译语言的强大性和通用性,同时也借鉴了简单脚本和解释语言的易用性。

DSC0000.jpg

  Python又是一门强类型语言,即一种强制类型定义的语言。如果有一个整数,不明确的进行转换就不能当成一个字符串等随意使用。

  而Javascript是一门弱类型语言,它们对比如下:



//Js演示
var s1='12';
var s2=3
document.write(s1+s2)    //输出123


//Python演示
str1='12'
s = 3
print str1+s    #TypeError: cannot concatenate 'str' and 'int' objects
  计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序.
翻译的方式有两种:一个是编译,一个是解释。
编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,以后要运行的话就不用重复翻译了,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等。 解释型语言在运行程序的时候才翻译,专门有一个解释器去进行翻译,每个语句都是执行的时候才翻译。效率比较低,依赖解释器,跨平台性好,如Basic。 脚本语言介于HTML和C,C++,Java,C#等编程语言之间。  
HTML通常用于格式化和链结文本。而编程语言通常用于向机器发出一系列复杂的指令。  脚本语言与编程语言也有很多相似地方,其函数与编程语言比较相象一些,其也涉及到变量。与编程语言之间最大的区别是编程语言的语法和规则更为严格和复杂一些.  
脚本与程序代码的关系:脚本也是一种语言,其同样由程序代码组成。 注:脚本语言一般都有相应的脚本引擎来解释执行。他们一般需要解释器才能运行。JAVASCRIPT、ASP、PHP、PERL都是脚本语言。C/C++编译、链接后,可形成独立执行的exe文件。  
脚本语言是一种解释性的语言,例如vbscript、javascript、installshield script等等,它不象c\c++等可以编译成二进制代码,以可执行文件的形式存在。 脚本语言不需要编译,可以直接用,由解释器来负责解释。  脚本语言一般都是以文本形式存在,类似于一种命令。  
举个例子说,如果你建立了一个程序,叫aaa.exe,可以打开.aa为扩展名的文件。你为.aa文件的编写指定了一套规则(语法),当别人编写了.aa文件后,你的程序用这种规则来理解编写人的意图,并作出回应.那么,这一套规则就是脚本语言。

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-59984-1-1.html 上篇帖子: Python框架之Django学习笔记(十六) 下篇帖子: 使用Python创建Silverlight控件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表