Python一天一颗糖(十九)模块与包,模块的导入,模块的路径添加,模块的运行,导入模块的多种方式

发布于:2022-12-14 ⋅ 阅读:(401) ⋅ 点赞:(0)

模块与包

原因:代码量越来越多,让代码更容易被定位,归类和引用,让我们可以重复使用他人的代码,可以多人协作更大的项目。

1.模块:Module,是一个Python文件,以.py结尾,包含了Python对象定义和Python语句。可以把包,类比成文件夹,模块就是文件,函数等就是文件内容。

1.1 模块的导入(import)

导入系统自带的模块:import math

导入自己定义的模块:实际就是创建自己的文件,文件内容有函数,在另一个文件当中引入该文件中的内容,即需要import,则为导入自己定义的模块。如下图

# 首先创建我们自己的模块(文件),内部定义函数add()。

 

# 在另一个文件中调用该模块。

1.2 模块的运行 

# 当我们在自己的模块当中写下该行代码,这行代码属于模块下的脚本方式。

# 只要我们引入该模块,模块中的脚本会自动执行,而函数没有被调用的话不会打印

但是我们写的自己的模块中,有些代码不希望在其它文件中引入该模块的时候打印出来,那么要如何进行区分呢?

首先我们在模块中写“脚本内容”的时候,先划分脚本内容:

# 我们在自己的模块当中输入这行代码,意思是如果是以__main__的模式(脚本模式)进行调用该模块,那么打印输出下面的内容。

# 这次我们再回到另一个文中,引入该模块,就不会打印输出该模块的脚本内容,而不影响引用该模块的函数。

通过以上方式,我们还可以将识别文本模式和函数进行嵌套

 

# 我们在模块内部的函数内部再使用识别脚本的方式下,定义一个函数,这样的话,引入该模块的时候如果不是脚本模式,就不会应用到该函数。

 # 在引入该模块的时候,没有上面的脚本方式下的函数

 1.3模块的搜索路径

# 第五项,lib文件夹下有许多的库,但是我们找不到系统内置的库,比如math,sys等,这是因为系统内置的模块是在解释器当中的,但是我们可以通过代码查看:

# 第六项,系统路径追加目录,我们import sys,打印sys.path,可以查到系统搜索模块的各种路径,如果我们创建了属于自己的模块,可以单独创建一个文件夹,并且将该文件夹的路径使用append()添加到搜索路径中,这样就可以使得自己的库得以引用。

但是我们可以看到,无论是第三项环境变量,还是第五项第六项,输入的查找路径都是绝对路径。绝对路径在同一个电脑上还是没有问题的,但是如果换了电脑,绝对路径变更,那么就找不到该模块了。

# 首先引入模块os(operating system),利用path(路径),dirname,文件名字,这样无论任何系统都能查到该文件的父路径(不能使用字符串截取,因为不同操作系统路径不同),父路径即为该项目的路径,拼接上要引用的模块的文件夹名字,即获取到绝对路径。

# 完成以上步骤,再可以使用系统路径追加目录,这样再就可以把自己创建的包,模块成功引入了。

# 其中print(__file__)是获取当前所在文件的完整路径 

1.4 其它导入模块的方式:

A. 从模块中引入指定的函数   ( from 。。。import。。。)

# 此时不可以再使用myModule.add()

B. 一次性引入

 # 此时会出现一个问题,如果我们通过上述方式引入模块中的函数,函数的名字与现在该文件中我们自己定义的函数重名了,那么调用该重名的函数的时候,会引用离调用代码最近的函数。

这是我们就可以使用别名:

C. 使用别名,解决函数重名问题:

 # 同时也可以给模块起别名:


网站公告

今日签到

点亮在社区的每一天
去签到