从动态语言到python
2013-06-07 13:08
134 查看
首先,动态语言是一些不对编译时和运行时进行严格区分的语言。这不像一些静态编程语言,比如C++,你先进行编译,然后会得到一些编译期错误,稍后再执行,而对于动态语言来说这两个阶段便混合在一起了,一般来说,动态语言是使用解释器来执行的。
另外,动态语言能在运行中改变自己结构。比如,在运行中可以向对象增加一个成员;可以改变继承关系;可以在运行时创建出某个函数等,javascript和python都是动态语言。动态语言的这些特性在静态语言(c,c++,java)中就做不到,静态语言的类结构,继承关系在编译时就已经确定了。
再者,动态语言一般来讲都是动态类型语言(一种在执行期间才去发现数据类型的语言),动态类型语言一般是在第一次给一个变量赋值的时候找出它的类型的。动态类型语言的类型检查是在运行时做的。
python是一种通用的动态语言,它经常运行在python虚拟机(解释器)上。Python的官方解释器是CPython,该解释器用C语言编写,是一个由社区驱动的自由软件,目前由Python软件基金会管理。与Scheme、Ruby、Perl、Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理存储器使用。它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务。Python虚拟机本身几乎可以在所有的作业系统中运行。使用一些诸如py2exe、PyPy、PyInstaller之类的工具可以将Python源代码转换成可以脱离Python解释器运行的程序。
Python支持命令式程序设计、面向对象程序设计、函数式编程、面向侧面程序设计、泛型编程多种编程范式。虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发计划例如Zope、Mnet及BitTorrent,Google也广泛地使用它。Python的支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单程序设计任务的语言,如shell script、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。
举个例子:
假设要你实现一个函数,用来完成两个数的某种 运算,具体的运算类型作为函数的参数传入,然后该函数返回运算结果。比如:
Foo("+", 2, 4) 返回 6
Foo("*", 2, 2) 返回 4
如果你用静态语言(比如C、C++、Java)来实现,你可能会在函数内使用一个switch,根据不同的运算符,进行计算,然后返回计算结果。
对于某些比较OO的语言(例如C++、Java),你或许还会抽象出一个运算的接口类(纯虚类),然后分别派生出若干个不同的计算类(比如加法类、乘法类),看起来似乎比switch要优雅一些。
使用python就两行代码:
def Foo(op, n1, n2) :
return eval( "%d %s %d" % (n1, op, n2) )
python语言的功能很强大,可以支持基本的文件操作,网络操作,甚至对象持久化操作等。也可以集成到其他语言里,或者把其他c/c++代码集成到python里来。
另外,动态语言能在运行中改变自己结构。比如,在运行中可以向对象增加一个成员;可以改变继承关系;可以在运行时创建出某个函数等,javascript和python都是动态语言。动态语言的这些特性在静态语言(c,c++,java)中就做不到,静态语言的类结构,继承关系在编译时就已经确定了。
再者,动态语言一般来讲都是动态类型语言(一种在执行期间才去发现数据类型的语言),动态类型语言一般是在第一次给一个变量赋值的时候找出它的类型的。动态类型语言的类型检查是在运行时做的。
python是一种通用的动态语言,它经常运行在python虚拟机(解释器)上。Python的官方解释器是CPython,该解释器用C语言编写,是一个由社区驱动的自由软件,目前由Python软件基金会管理。与Scheme、Ruby、Perl、Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理存储器使用。它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务。Python虚拟机本身几乎可以在所有的作业系统中运行。使用一些诸如py2exe、PyPy、PyInstaller之类的工具可以将Python源代码转换成可以脱离Python解释器运行的程序。
Python支持命令式程序设计、面向对象程序设计、函数式编程、面向侧面程序设计、泛型编程多种编程范式。虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发计划例如Zope、Mnet及BitTorrent,Google也广泛地使用它。Python的支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单程序设计任务的语言,如shell script、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。
举个例子:
假设要你实现一个函数,用来完成两个数的某种 运算,具体的运算类型作为函数的参数传入,然后该函数返回运算结果。比如:
Foo("+", 2, 4) 返回 6
Foo("*", 2, 2) 返回 4
如果你用静态语言(比如C、C++、Java)来实现,你可能会在函数内使用一个switch,根据不同的运算符,进行计算,然后返回计算结果。
对于某些比较OO的语言(例如C++、Java),你或许还会抽象出一个运算的接口类(纯虚类),然后分别派生出若干个不同的计算类(比如加法类、乘法类),看起来似乎比switch要优雅一些。
使用python就两行代码:
def Foo(op, n1, n2) :
return eval( "%d %s %d" % (n1, op, n2) )
python语言的功能很强大,可以支持基本的文件操作,网络操作,甚至对象持久化操作等。也可以集成到其他语言里,或者把其他c/c++代码集成到python里来。
相关文章推荐
- python动态语言特性小结
- python 的一些思考(字符,django,动态语言)
- python动态语言特性小结
- 为什么说Python是一门动态语言--Python的魅力
- 高效的动态语言开发环境(python: linux + emacs + evil + *.el)
- Python 笔试集(3):编译/解释?动态/静态?强/弱?Python 是一门怎样的语言
- python是一门动态语言
- 学习python语言的动态类型摘要
- 深度解析Python动态语言
- 如何用Python,C#等语言去实现抓取静态网页+抓取动态网页+模拟登陆网站
- 动态语言的灵活性是把双刃剑 -- 以Python语言为例
- 从c++转到python项目碰到的坑--论动态语言的一个小坑
- C#操作动态语言----Python
- 几种动态语言(Python/Perl/PHP/Java Script)的比较
- Python语言动态WEB开发学习总结
- python笔记 ---蛋疼的 动态类型+强类型语言
- python 动态语言 __slots__
- ZODB入门 -- 如何通过面向对象的动态语言 Python 使用对象数据库
- 在emacs开启几个动态语言的shell(perl, python, ruby, bean shell,groovy)
- 为什么说Python是一门动态语言--Python的魅力