1 / 21

程序设计语言中的瑞士军刀 - Python

F1124004 5110309084 蒋舜宁. 程序设计语言中的瑞士军刀 - Python. 什么是 Python ?. [1]. Python 的偏执. 程序缩进必须良好,否则不允许编译 / 解释。 -_-# 语法死板,无法做成 Ruby on Rails 之类的框架。 但是 …… 豆瓣 : Ruby on Rails or Python???. Python 的设计哲学. “优雅,明确,简单” Python 的语法不那么花哨,更具有可读性,支持大规模软件开发。 -Perl: There's more than one way to do it

brant
Download Presentation

程序设计语言中的瑞士军刀 - Python

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. F1124004 5110309084 蒋舜宁 程序设计语言中的瑞士军刀 - Python

  2. 什么是Python?

  3. [1]

  4. Python的偏执 • 程序缩进必须良好,否则不允许编译/解释。 • -_-# • 语法死板,无法做成Ruby on Rails之类的框架。 • 但是…… • 豆瓣: Ruby on Rails or Python???

  5. Python的设计哲学 • “优雅,明确,简单” • Python的语法不那么花哨,更具有可读性,支持大规模软件开发。 • -Perl: There's more than one way to do it • -Python: There should be one-and preferably only one-obvious way to do it. • The Zen of Python: import this

  6. Python经常被人拿来比 (1) • vs Perl [2] • Eric Raymond(一位黑客文化的历史学家以及人类学家) : • Perl(1987)是增强的Shell。 • Pros:强劲的文本处理能力与正则表达式支持,全套Unix API的内部支持,对C的需求顿减。 • Cons:某些部分设计得非常丑陋且无法补救,也过于复杂。当程序规模增大时,必须严格遵守约定,才能保证模块化和设计的可控性,难于维护。

  7. Python经常被人拿来比 (2) • Python(1991):与C语言紧密集成的脚本语言。 • Pros:干净优雅,代码清晰易读,易学易用;面向对象,但并不强求;出色的模块化特性,同Java一样适合用来做需要协同开发的大型复杂项目。多数情况比Java简单。此外,对许多网络协议支持好,很适合网络管理。 • Cons:效率低下,速度缓慢,不仅无法与C/C++竞争,而且也不如其他脚本语言。(注:这问题不严重,有时网络或磁盘的延迟,会完全抵消本身消耗的时间,且性能关键的 Python模块,可以很方便地转化成C语言来提高速度。)

  8. Python经常被人拿来比 (3) • vs Ruby [3] • 语法:Ruby性感,Python质朴。 • 解释器:Ruby打补丁,Python完善。 • 应用领域:Python瑞士军刀,Ruby做Web。 • 第三方包:Python成熟,Ruby有Gem。

  9. 某个人的言论 • “如果我个人选择的话,会首选用Rails来构建Web应用,再根据情况选择Python或者Java处理一些服务器后端的运算。总之,未来还是一个混合编程的时代,我们需要多了解一些编程工具,然后根据需要看菜吃饭才行。”[3] • 范凯,JavaEye技术网站创始人,领导JavaEye网站率先在国内推广Hibernate、Spring开源框架、AJAX技术、敏捷软件开发方法和Ruby on Rails等,在数个技术领域(Java/Ruby/Web...) 都是牛人。 对 SNS的系列大作让人耳目一新。

  10. Python的语言特性 • 解释执行 • 动态数据类型 • 函数定义:def func(): • 强制缩进 • Python memory manager (引用计数垃圾收集和可选的循环结构垃圾空间扫描技术)

  11. Python很慢(1) • Python作为解释执行的脚本语言... • 你确定你知道该怎么写快? • e.g. • >>>tmp=x • >>>x=y • >>>y=tmp • >>>x, y=y, x

  12. Python很慢(2) • >>>S=A+B • >>>S.join(A) • >>>S.join(B) • 当你需要监听一个事件: • >>>while True: • >>>while 1:

  13. Python中的一些函数(1) • [4] • filter(func, seq):对seq中的item依次执行func (item),将执行结果为true的item组成一个List/String/Tuple(取决于seq的类型)返回。 • map(func, seq) :对seq中的item依次执行func (item),将执行结果组成一个List返回。 • Lambda: g = lambda x: x * 2 >>> g(3) • 6

  14. Python中的一些函数(2) • yield • def gen():        print ‘let'        yield 1        print ‘it'        yield 2        print ‘roll’ for i in gen():        print i let 1 it 2 roll

  15. Python的实现 [1] • Cpython: 通常的Python,完全用C语言实现的最原始的版本。 • Jython: Python的纯Java实现;Python源代码可被翻译成在Java虚拟机上运行的Bytecode,而且用户可以从Python访问所有Java库、构建Applet、与Java Bean集成等。 • Python for .NET, IronPython

  16. wxPython • wxPython是一个GUI工具箱。 • 一个自己做的简单软件demo。

  17. 一些高性能第三方包 • NumPy: 一个开源的相当于MatLab的包 • SciPy: 另一个数值处理库 • GPULib: 使用GPUs加速代码 • PyPy: 使用 just-in-time 编译器优化Bytecode • Cython: 將Python优码转成C • ShedSkin: 將Python代码转成C++

  18. graphics.py • 另一个简单demo:计科导讨论课大作业。

  19. 该怎么用Python? • Python是利器,但也有局限性。 • 我的意见:由于代码简洁精致易读易于实现,所以有想法就随时实现(作为参考的原型),如果有完整实现的意义,那么再借助Python与c/c++的用c/c++去替换一些关键模块来提高效率。 • 特殊需求特殊考虑(文本Perl,Web用Ruby),其余全扔给Python吧!

  20. Reference • [1] http://zh.wikipedia.org/wiki/Python • [2] 《UNIX编程艺术》Eric Raymond • [3]记上海Python社区聚会,谈Python和Ruby • [4] Python特殊语法:filter、map、reduce、lambda、yield

  21. Thanks! • Q&A • 

More Related