介绍
Python 模块是.py
文件,由Python代码组成。任何Python文件都可以作为模块引用。 一些模块可通过
Python标准库获得 ,因此会随您的Python安装一起安装。 其他可以
安装 Python的包管理器
pip
。 此外,您可以创建自己的Python模块,因为模块由Python
.py
文件组成。 本教程将指导您编写Python模块,以在其他编程文件中使用。
编写和导入模块
编写模块就像写任何其他Python文件。模块可以包含函数,类和变量的定义,然后可以在其他Python程序中使用。 从我们的Python 3 本地编程环境或 基于服务器的编程环境 ,让我们开始创建一个文件hello.py
,我们将以后导入到另一个文件。 首先,我们将创建一个打印
Hello, World!
的函数
Hello, World!
:
hello.py
# Define a function
def world():
print("Hello, World!")
如果我们在命令行运行程序与
python hello.py
没有什么会发生,因为我们没有告诉程序做任何事情。 让我们
在同一目录
中创建一个名为
main_program.py
的第二个文件
,以便我们可以导入刚创建的模块,然后调用该函数。此文件需要在同一目录中,以便Python知道在哪里找到模块,因为它不是内置模块。
main_program.py
# Import hello module
import hello
# Call function
hello.world()
因为我们正在
导入一个模块 ,所以我们需要通过引用以点号表示的模块名称来调用该函数。 我们可以
from hello import world
导入模块,并将该函数直接调用为
world()
。 您可以通过阅读
如何使用from
... import
模块时了解有关此方法的更多信息。 现在,我们可以在命令行上运行该程序:
python main_program.py
当我们这样做,我们将收到以下输出:
OutputHello, World!
要看看我们如何在模块中使用变量,让我们在
hello.py
文件中添加一个变量定义:
hello.py
# Define a function
def world():
print("Hello, World!")
# Define a variable
shark = "Sammy"
接下来,我们将在
main_program.py
文件中的
print()
函数中调用变量:
main_program.py
# Import hello module
import hello
# Call function
hello.world()
# Print variable
print(hello.shark)
一旦我们再次运行该程序,我们将收到以下输出:
OutputHello, World!
Sammy
最后,让我们在
hello.py
文件中定义一个类。 我们将创建类
name
Octopus
的
name
和
color
属性和一个函数,打印出属性时调用。
hello.py
# Define a function
def world():
print("Hello, World!")
# Define a variable
shark = "Sammy"
# Define a class
class Octopus:
def __init__(self, name, color):
self.color = color
self.name = name
def tell_me_about_the_octopus(self):
print("This octopus is " + self.color + ".")
print(self.name + " is the octopus's name.")
我们现在将类添加到
main_program.py
文件的末尾:
main_program.py
# Import hello module
import hello
# Call function
hello.world()
# Print variable
print(hello.shark)
# Call class
jesse = hello.Octopus("Jesse", "orange")
jesse.tell_me_about_the_octopus()
一旦我们使用
hello.Octopus()
调用Octopus类,我们可以访问
main_program.py
文件的命名空间中的类的函数和属性。 这让我们在最后一行写
jesse.tell_me_about_the_octopus()
而不调用
hello
。 我们还可以,例如,调用类的属性,如
jesse.color
而不引用
hello
模块的名称。 当我们运行程序时,我们将收到以下输出:
OutputHello, World!
Sammy
This octopus is orange.
Jesse is the octopus's name.
重要的是要记住,虽然模块通常是定义,他们也可以实现代码。要看看这是如何工作的,让我们重写我们的
hello.py
文件,以便它实现
world()
函数:
hello.py
# Define a function
def world():
print("Hello, World!")
# Call function within module
world()
我们也删除了文件中的其他定义。 现在,在
main_program.py
文件中,我们将删除除import语句之外的每一行:
main_program.py
# Import hello module
import hello
当我们运行
main_program.py
我们将收到以下输出:
OutputHello, World!
这是因为
hello
模块实现了
world()
函数,然后将其传递给
main_program.py
,并在
main_program.py
运行时执行。 模块是一个由可以在其他Python程序文件中使用的定义或代码组成的Python程序文件。
从另一个目录访问模块
模块可能对多个编程项目有用,在这种情况下,将模块保存在与特定项目绑定的特定目录中并不太有意义。 如果你想从主程序所在的目录以外的地方使用一个Python模块,你有几个选择。附加路径
一个选项是通过使用该模块的编程文件调用模块的路径。这应该被认为更多的是可以在开发过程中完成的临时解决方案,因为它不会使模块在系统范围内可用。 要将模块的路径附加到另一个编程文件,首先要导入sys
模块以及您希望在主程序文件中使用的任何其他模块。
sys
模块是Python标准库的一部分,并提供特定于系统的参数和函数,您可以在程序中使用这些参数和函数来设置要实现的模块的路径。 例如,假设我们移动了
hello.py
文件,它现在在路径
/usr/ sammy /
,而
main_program.py
文件在另一个目录中。 在
main_program.py
文件中,我们仍然可以导入
hello
模块,方法是导入
sys
模块,然后将
/usr/ sammy /
附加到Python检查文件的路径。
main_program.py
import sys
sys.path.append('/usr/sammy/')
import hello
...
只要正确设置
hello.py
文件的路径,您就可以运行
main_program.py
文件而没有任何错误,并且在
hello.py
位于同一目录时接收与上面相同的输出。
将模块添加到Python路径
第二个选项是将模块添加到Python检查模块和包的路径。这是一个更永久的解决方案,使模块可在环境范围或系统范围内使用,使此方法更便携。 要找出Python检查什么路径,请从编程环境运行Python解释器:python
接下来,导入
sys
模块:
import sys
然后让Python打印出系统路径:
print(sys.path)
在这里,您将收到一些至少有一个系统路径的输出。如果你在编程环境中,你可能会收到几个。您将需要查找当前正在使用的环境中的模块,但是您可能还想将模块添加到主系统Python路径中。你正在寻找什么将类似于:
Output'/usr/sammy/my_env/lib/python3.5/site-packages'
现在,您可以将您的
hello.py
文件移动到该目录。 一旦完成,您可以照常导入
hello
模块:
main_program.py
import hello
...
当你运行你的程序,它应该完成没有错误。 修改模块的路径可以确保您可以访问模块,而不管您所在的目录是什么。如果有多个项目引用特定模块,这是非常有用的。
结论
编写Python模块与编写任何其他Python.py
文件相同。本教程介绍了如何在模块中编写定义,在另一个Python编程文件中使用这些定义,并讨论了保留模块的选项以便访问它。 您可以通过阅读
如何在Python 3中导入模块来了解有关安装和导入模块的更多信息。