从0开始的Python学习011模块

简介


你已经学习了如何在你的程序中定义一次函数而重用代码。如果你想要在其他程序中重用很多函数,那么你该如何编写程序呢?你可能已经猜到了,答案是使用模块。模块基本上就是一个包含了所有你定义的函数和变量的文件。为了在其他程序中重用模块,模块的文件名必须.py为扩展名。

模块可以从其他程序 输入 以便利用它的功能。这也是我们使用Python标准库的方法。首先,我们将学习如何使用标准库模块

使用sys模块


import sys

print('The command line atguments are:')

for i in sys.argv:
    print(i)

print('\n\nThe PYTHONPATH is',sys.path,'\n')

运行结果

如何工作

首先,我们利用import语句 输入 sys模块。基本上,这句语句告诉Python,我们想要使用这个模块。sys模块包含了与Python解释器和它的环境有关的函数。

当Python执行import sys语句的时候,它在sys.path变量中所列目录中寻找sys.py模块。如果找到了这个文件,这个模块的主块中的语句将被运行,然后这个模块将能够被你 使用 。注意,初始化过程仅在我们 第一次 输入模块的时候进行。另外,“sys”是“system”的缩写。

sys模块中的argv变量通过使用点号指明——sys.argv——这种方法的一个优势是这个名称不会与任何在你的程序中使用的argv变量冲突。另外,它也清晰地表明了这个名称是sys模块的一部分。

from...import语句


如果你想要直接输入argv变量到你的程序中(避免在每次使用它时打sys.),那么你可以使用from sys import argv语句。如果你想要输入所有sys模块使用的名字,那么你可以使用from sys import *语句。这对于所有模块都适用。一般说来,应该避免使用from..import而使用import语句,因为这样可以使你的程序更加易读,也可以避免名称的冲突。

模块的__name__


if __name__ == '__main__':
    print ('This program is being run by itself')
else:
    print ('I am being imported from another module' )

运行结果

每个Python模块都有它的__name__,如果它是'__main__',这说明这个模块被用户单独运行,我们可以进行相应的恰当操作。

创建自己的模块


创建你自己的模块是十分简单的,你一直在这样做!每个Python程序也是一个模块。你已经确保它具有.py扩展名了。下面这个例子将会使它更加清晰。

要使用的模块studyPython015_doc.py

def printMax(x,y):
    '''Prints the maximum of two numbers.
    The two values must be integers.'''
    x=int(x) # convert to integers, if possible
    y=int(y)
    if x>y:
            print(x,'is maximum')
    else:
            print(y,'is maximum')
printMax(3,5)
print (printMax.__doc__)

使用模块

import studyPython015_doc

studyPython015_doc.printMax(1,2)

运行结果

记住这个模块应该被放置在我们输入它的程序的同一个目录中,或者在sys.path所列目录之一。

dir()函数


你可以使用内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。

当你为dir()提供一个模块名的时候,它返回模块定义的名称列表。如果不提供参数,它返回当前模块中定义的名称列表

import studyPython015_doc

studyPython015_doc.printMax(1,2)

print(dir(studyPython015_doc))

运行结果

概括


模块的用处在于它能为你在别的程序中重用它提供的服务和功能。Python附带的标准库就是这样一组模块的例子。我们已经学习了如何使用这些模块以及如何创造我们自己的模块。

接下来,我们将学习一些有趣的概念,它们称为数据结构。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区