Select Language

AI社区

AI技术百科

4.2、Python包的使用

包对应的是一个目录而不是一个源文件,包目录下一定要存在一个名为 __init__.py 的文件。如我们可以创建下面的目录结构:

$ tree pkgDemo1/
pkgDemo1/
└── __init__.py

这里 pkgDemo1 目录就是一个包。

>>> import pkgDemo1
>>> pkgDemo1
<module 'pkgDemo1' from '/pkgDemo1/__init__.py'>

__init__.py 现在就是一个模块,可以使用前面介绍的方法来使用其定义的内容。如修改 __init__.py 的内容,让其包含以下内容:

""" this is the pakage demo file
"""
name =  "pkgDemo1"
author = "love.pythoh"

现在就可以访问这些新加的内容了:

>>> import pkgDemo1
>>> pkgDemo1.name
'pkgDemo1'
>>> pkgDemo1.author
'love.pythoh'
>>> pkgDemo1.__doc__
' this is the pakage demo file\n'


一般来说,一个包包含多个模块。例如在同一个目录下放入两个文件 mod1.py 和 mod2.py,它们的结构如下:

$ tree pkgDemo1/
pkgDemo1/
├── __init__.py
├── mod1.py
└── mod2.py

mod1.py 的内容如下:

""" this is mod1.py
"""
name =  "pkgDemo1.mod1"
def hello():
    print("hello from pkgDemo1.mod1")

mod2.py 的内容如下:

""" this is mod2.py
"""
name =  "pkgDemo1.mod2"
def hello():
def hello():
    print("hello from pkgDemo1.mod2")

下面来使用这个包的内容,代码如下:

>>> import pkgDemo1.mod1        # 引入mod1,注意前面的包名
>>> import pkgDemo1.mod2        # 引入mod2,注意前面的包名
>>> pkgDemo1.mod1
<module 'pkgDemo1.mod1' from 'pkgDemo1/mod1.py'>
>>> pkgDemo1.mod2
<module 'pkgDemo1.mod2' from '/pkgDemo1/mod2.py'>
>>> pkgDemo1.mod1.hello()       # 带上包名和模块名
hello from pkgDemo1.mod1
>>> pkgDemo1.mod2.hello()
hello from pkgDemo1.mod2


我要发帖
Python模块和包
2021-12-10 23:41:51加入圈子
  • 10

    条内容
在 Python 中,目录和文件非常重要,不同的文件可以定义相同的函数和相同的变量而不会引起冲突。这点和 Java 类似,明显不同于 C、C++。由于 Python 没有在源代码层面上定义命名空间,所以文件和路径配合 import 语句就起到了命名空间的作用。
不同的 Python 文件对应不同的模块,多个在同一个目录下的 Python 文件的集合就是一个包。
本章将给读者讲解Python模块和包的概念与定义,同时介绍第三方Python包的各种安装方法及用法。