转载:http://www.cnblogs.com/phinecos/archive/2010/05/07/1730027.htm当
执行import module时,解释器会根据下面的搜索路径,搜索module1.py文件。
1) 当前工作目录
2) PYTHONPATH中的目录
3) Python安装目录 (/usr/local/lib/python)
事实上,模块搜索是在保存在sys.path这个全局变量中的目录列表中进行搜索。
sys.path会在解释器开始执行时被初始化成包含:
1)当前工作目录
2) PYTHONPATH中的目录
3) Python安装目录 (/usr/local/lib/python)
package是模块的集合,每一个Package的根目录下面都应当有一个__init__.py 文件。当解释器发现目录下有这个文件时,他就会认为这是一个Package,而不是一个普通的目录。
我们通过下面这样的一个实例来说明
假定项目结构如下:
demo.py
MyPackage
---classOne.py
---classTwo.py
---__init__.py
MyPackage
---classOne.py
---classTwo.py
---__init__.py
现在我们通过两种方式来实现包机制,主要区别就在于是否在__init__.py中写入模块导入语句。
1,__init__.py是一个空白文件的方式,
demo.py内容如下:
from MyPackage.classOne import classOne
from MyPackage.classTwo import classTwo
if __name__ == "__main__":
c1 = classOne()
c1.printInfo()
c2 = classTwo()
c2.printInfo()
from MyPackage.classTwo import classTwo
if __name__ == "__main__":
c1 = classOne()
c1.printInfo()
c2 = classTwo()
c2.printInfo()
classOne.py内容如下:
class classOne:
def __init__(self):
self.name = "class one"
def printInfo(self):
print("i am class One!")
def __init__(self):
self.name = "class one"
def printInfo(self):
print("i am class One!")
classTwo.py内容如下:
class classTwo:
def __init__(self):
self.name = "class two"
def printInfo(self):
print("i am class two!")
def __init__(self):
self.name = "class two"
def printInfo(self):
print("i am class two!")
2,如果在__init__.py中写入导入模块的语句,则上述例子可以这样来做。
其中__init__.py中内容如下:
from classOne import classOne
from classTwo import classTwo
from classTwo import classTwo
demo.py内容如下:
import MyPackage
if __name__ == "__main__":
c1 = MyPackage.classOne()
c1.printInfo()
c2 = MyPackage.classTwo()
c2.printInfo()
if __name__ == "__main__":
c1 = MyPackage.classOne()
c1.printInfo()
c2 = MyPackage.classTwo()
c2.printInfo()
或者demo.py也可以定义如下:
from MyPackage import *
if __name__ == "__main__":
c1 = classOne()
c1.printInfo()
c2 = classTwo()
c2.printInfo()
if __name__ == "__main__":
c1 = classOne()
c1.printInfo()
c2 = classTwo()
c2.printInfo()
相关推荐
在 Jython 中,内置类型被描述在一起,以便于查找和引用。例如,整数(int)、浮点数(float)、字符串(str)等都是 Python 的内置类型。对于这些内置类型的了解,是进行 Python 或 Jython 编程的基础。 在编程中...
通过Jython,Java可以像调用Java类一样调用Python模块。不过,Jython并不支持所有Python库,尤其是C扩展的库。 2. **JPyCall**: JPyCall是一个Java库,它提供了与Python互操作的能力,允许Java程序直接调用Python...
21.7.1 在Jython中使用 Java类 466 21.7.2 从Jython访问数据库 471 21.7.3 通过Jython编写 Java EE servlet 477 21.7.4 选择Jython开发工具 483 21.8 使用Jython进行测试 483 21.9 嵌入Jython解释器 484 21.10 处理C...
4. **模块与包**: - 导入模块:import语句,了解内置模块和第三方模块的使用。 - 自定义模块:创建.py文件,组织代码结构。 - 包管理:了解pip工具,用于安装、升级和管理Python包。 5. **面向对象编程**: - ...
Python还可以与其他语言集成,例如与C/C++的集成,以及跨平台的Python实现Jython和IronPython。 Python提供了丰富的内置数据类型,比如数字、字符串、列表、字典、元组等。Python的基本语句包括变量赋值、函数调用...
模块是Python中组织代码的基本单位,可以包含函数、类、变量等,通过导入模块可以访问其内部的资源。 #### 7.2 模块加载 Python在首次导入模块时会执行其代码,并缓存模块对象,后续导入将直接使用缓存的对象,...
- 模块与包:了解如何导入和使用模块,以及创建和组织自定义包。 2. **Python进阶** - 类与对象:深入理解面向对象编程,包括类的定义、继承、多态和封装。 - 异常处理:学习try-except、finally和else子句,...
4.23 确保名字已经在给定模块中被定义 178 第5章 搜索和排序 180 引言 180 5.1 对字典排序 185 5.2 不区分大小写对字符串列表排序 185 5.3 根据对象的属性将对象列表排序 187 5.4 根据对应值将键或索引排序 ...
在Python开发中,PyPI(Python Package Index)是官方的第三方Python软件包仓库,它为开发者提供了一个平台来发布他们的模块、库和其他工具,方便其他用户下载和安装。PyPI上的资源通常通过pip(Python的包管理器)...
例如,通过Jython(一个Python的Java实现)可以在Java环境中运行Python代码,或者使用Java的`Jython`库调用Python模块。另外,Java应用可以通过`JDBC`连接Python的数据库驱动,实现数据交互。在自然语言处理领域,...
`.whl`文件包含了Python模块的编译代码,以及所有必要的依赖项,使得用户可以直接通过pip(Python的包管理工具)进行安装,而无需构建源码。 标签“Python库”表明`datelibrary_javis`是一个专门设计用于Python编程...
Python库是一系列预先编写好的函数或模块集合,它们可以被其他Python程序引用和使用,以增强程序的功能或简化编程任务。"bugrest"这个库可能是为了特定目的,如处理错误报告、调试或者与RESTful API交互等而设计的。...
- 包管理:创建和导入自定义的模块和包,提高代码组织性。 5. **面向对象编程**: - 类(class):定义对象的蓝图,包含属性和方法。 - 对象实例化:基于类创建对象,可以继承和多态。 - 构造函数(__init__)...
"none"意味着这个包不包含特定于实现的代码,也就是说,它不依赖于Python的特定实现,如CPython、Jython或PyPy。这样的设计使得该库具有更好的跨平台兼容性。 Wheel格式的优点在于它预编译了Python字节码,可以避免...
12. **增强的`__init__.py`**:在Python 3.7中,如果子包的`__init__.py`为空,Python将不再生成一个空的文件,而是自动识别该目录为一个包。 13. **`sys.implementation`**:此属性提供了关于Python实现的详细信息...
Java引用JPython是一种将Python代码嵌入到Java应用程序中的技术,允许Java程序调用Python库和执行Python脚本。在Java中使用JPython,我们需要引入Jython库,它是一个Python的实现,使得Java能够理解并运行Python代码...
PyPI是Python社区中最主要的第三方库分发平台,开发者可以将他们的Python模块或库上传到这里,供其他用户下载和安装。这个特定的包名为 "crossref_commons",版本号为0.0.1,是为Python 3设计的,因为文件名中的 "py...