python模块怎么编写_如何在Python 3中编写模块

介绍

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中导入模块来了解有关安装和导入模块的更多信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值