Python模块的平滑刷新

这将是Python复习系列中的最后一篇教程。 当然,除非我将您带入编程的下一个层次,即使用模块 ,否则在完成本系列文章之前,这些模块在处理非常规的编程任务时被认为是基础知识。

大多数情况下,非平凡的编程任务意味着包含许多代码行的长程序。 当模块试图将这些复杂的程序分解为可管理的块并实现代码重用时,它们就派上用场了。 这样,通过导入该模块,您也可以随时使用代码。 您还可以通过模块进行管理,从而解决在不同程序中多次复制某些功能的问题。

让我们继续学习本教程的内容,看看如何在Python中使用模块。

Python中的模块

创建Python程序时,您曾经将它们放在以.py结尾的某些源文件中。 Python中的模块就是以这种方式创建的。 也就是说,它们是以.py结尾的源文件,位于Python能够找到它们的目录中(即当前工作目录或sys.path中列出)。

模块通常包含彼此相关的语句。 如上所述,我们可以随时使用模块。 使用模块意味着使用存储在该模块中的代码(即变量,函数)。 提出并使用这种代码的过程称为导入

创建模块

用Python创建模块非常简单。 假设我们要创建一个可以打印某人姓名的模块。 使用您喜欢的编辑器键入以下代码,并将其另存为myname.py 。 这将是您的模块名称( .py部分除外),该部分将分配给全局变量__name__

def print_name(n):
    print 'Hi', n

导入模块

如果您对使用上述模块中的代码感兴趣的另一个Python文件,我们将使用import关键字导入模块,如下所示:

import myname
name.print_name('Abder')

该脚本的输出为: Hi Abder

确保Python能够找到导入的文件。 例如,将其放置在与使用import的Python文件相同的目录中。

如您所见,导入模块使我们能够通过从外部文件(即模块)向程序添加新功能来增强程序。

但是,幕后发生了什么? import模块时,Python会编译该模块并生成一个.pyc文件,并且仅当.py.pyc文件新时,才重新编译程序。

让我们再举一个例子,但是这次使用Python内置模块。 让我们选择数学模块。 在此示例中,对于一个传递的数字,我们想要找到上限 (大于或等于该数字的最小整数值), 下限 (小于或等于该数字的最大整数值)以及该数字的绝对值 。 该程序的Python脚本如下所示:

import math
x = 4.7
print 'The ceiling of ' + str(x) + ' is: ' + str(math.ceil(x))
print 'The floor of ' + str(x) + ' is: ' + str(math.floor(x))
print 'The absolute value of ' + str(x) + ' is: ' + str(math.fabs(x))

如果运行此脚本,则输出应如下所示:

The ceiling of 4.7 is: 5.0
The floor of 4.7 is: 4.0
The absolute value of 4.7 is: 4.7

因此,我们能够对数字应用不同的运算,而无需为每个运算编写代码,而是通过重用 math模块中已经可用的函数。 这很有帮助,不是吗?

您可能想知道,我们是否应该始终使用math.function()表示法? 我们不能在没有模块名称(例如math )的情况下立即使用该函数吗? 是的,您可以使用以下语法进行import

from math import *

这样,您可以调用先前的函数( ceil(x)floor(x)fabs(x) ),而无需在模块名称前加上math

模块作为脚本

让我们回到简单的模块myname.py

def print_name(n):
    print 'Hi', n

我们能否将此模块视为独立的(主)脚本,我们可以直接运行该模块并将其从命令行传递给参数? 例如,如果您在命令行中键入以下内容,将会发生什么?

python myname.py 'Abder'

没有! 尝试一下-您将不会获得任何输出。

为了能够将模块作为脚本运行,我们必须设置__name__ = '__main__ '。 因此,模块myname现在将如下所示:

def print_name(n):
    print 'Hi', n

if __name__ == '__main__':
    import sys
    print_name(sys.argv[1])

如果在终端python myname.py 'Abder'运行此命令,则应获得以下输出:

Hi Abder

配套

与模块紧密相关的一个重要概念是软件包的概念 。 包是模块的集合。 换句话说,当模块是文件时,包是目录/文件夹。 这是一种通过使用点分的模块名称来构造模块的方法。 因此,如果您看到一个类似于以下内容的import语句:

import university.department

这意味着我们在university包中有一个称为department的模块。

如我们所见,使用模块使我们能够将复杂的程序拆分为可管理的块,从而更容易跟踪程序中的任何错误,更好地了解其功能并实现可重用性。

至此,我们进入了Python复习系列的结尾。 在本系列文章中,我们学习了为了在Python编程语言中进一步发展而需要掌握的基础知识和必要概念。 我们已经了解了列表字典元组的概念。 我们还学习了如何通过条件( 链接到Python条件 )进行决策,以及如何通过循环( 链接到Python循环 )进行决策。 我们还学习了如何使用函数 ,创建和实例化它们( 对象)以及将我们的工作打包在模块中。

翻译自: https://code.tutsplus.com/tutorials/a-smooth-refresher-on-pythons-modules--cms-25607

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值