五千年(敝帚自珍)

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

共:💬45 🌺35
全看分页树展 · 主题 跟帖
家园 更正及补充

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

每一个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]。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河