主题:【原创】Python简介 -- 请尽量

大河奔流 导读 复 44 阅 119204

全看 分页 树展 一览 主题

2005-02-06 01:16:05
320496 复 320119
请尽量
请尽量`4112`/bbsIMG/face/0002.gif`70`2540`1128`43574`从六品上:奉议郎|振威校尉`2004-11-13 23:54:49`
更正及补充 3

首先,原文中把包的定义放到了模块上。

每一个Python源代码文件就是一个模块(module)。当一个或多个模块放在一个目录下,这个目录包含一个名为__init__.py的文件,并且这个目录起始于某个模块搜索路径(search path),那么这个目录就是一个包(package)。

比如说,一个HR软件,有employee.py、timesheet.py、rate.py、commission.py等等。如果我们把这些文件放到目录/usr/lib/python/HR/payroll下,在这个目录下产生一个__init__.py文件,然后把/usr/lib/python/加入到Python的模块搜索路径表中,我们就有了一个名为“HR.payroll”的包。当要使用这个包中的代码,例如类Employee,我们可以引入employee模块:

import HR.payroll.employee

在这行代码之后,定义在employee模块中的类Employee及其非私有成员和方法就被引入了当前模块中。当然,如果还有其他类或free functions,也一并被引入了当前模块。

其次,Python还有functional programming languages的某些特征。Python支持lambda,也就是在call site即时定义的无名函数,Perl称为closure。Python还有一些非常有趣和高效的处理sequence的内置函数。如:

[vec1[i]*vec2[i] for i in range(len(vec1))]返回一个list,其中每个元素是vec1和vec2对应元素的乘积。再如:map( lambda (x): x*x, [1,2,3] )得到一个list,[1,4,9]。


2005-02-06 01:16:05