Python合集之模块(二)

1.使用from...import 语句导入模块

在使用import语句导入模块时,每执行一条import语句都会创建一个新的命名空间,并且该命名空间中执行与.py文件相关的所有语句。在执行时,需要具体的变量、函数和类名前加上模块名. 前缀 如果不行在每次导入模块时都创建一个新的命名空间,而是将具体的定义导入到当前的命名空间中,这是可以使用from...import语句。使用from...import语句导入模块后,不需要在添加前缀,直接通过具体放入变量、函数和类名等访问即可。

注:命名空间可以理解为记录对象名字和对象之间对应关系的空间。目前Python的命名空间大部分都是通过字典来实现,其中,key是标识符,value是具体的对象。

语句格式如下:

from modelname import member
参数说明:
modelname:模块名称,区分大小写字母,需要和定义模块时设置的模块名称的大小写保持一致
member:用于指定要倒入的变量、函数或者类等。可以同时导入多个定义,各个定义之间使用逗号分隔,如果想导入全部定义,使用通配符 * 代替。

注:在导入模块时,如果使用通配符,倒入全部定义后,想查看具体导入了那些定义,可以使用显示 dir()函数的值来查看。

例如:

from bmi import fun_bmi
from bmi import fun_bmi,fun_bmi_upgrade
from bmi import *

注:在使用from...import语句导入模块中的定义时,需要保证所导入的内容在当前的命名空间中是唯一的,否则将出现冲突,后导入的同名变量,函数或者类会覆盖先导入的,这时就需要使用import 语句进行导入。

2.模块搜索目录

当使用import语句导入模块时,默认情况下,会按照一下顺序进行查找。

1.在当前目录下查找。

2.到PythonPath下的每个目录中查找

3.到Python的默认安装目录下查找。

以上各个目录的具体位置保存在标准模块sys的sys.path变量中,可以通过一下代码输出具体的目录:

import sys
print(sys.path)

注:使用import语句导入模块时,模块名是区分字母大小写的。

如果要导入的模块不在上面的目录中,那么在导入模块时,会提示相关的异常信息,这时我们可以通过3种方式添加指定的目录到sys.path中。

2.1 临时添加

临时添加即在模块的Python文件中添加。例如:需要将“e:/program/python/code/demo”目录添加到sys.path中,可以使用下面的代码:

import sys
sys.path.append("e:/program/python/code/demo")

注:通过该方法添加的目录只在执行当前文件的窗口中有效,窗口关闭及失效。

2.2 增加.path文件

在Python安装目录下的lib/site-packages子目录中,创建一个扩展名为 .pth的文件,文件名任意。这里创建一个 mrpath.pth 文件,在该文件中添加要导入模块所在的目录。

例如:将模块目录 “e:/program/python/code/demo” 添加到 mrpath.pth文件,添加后的代码如下:

#.pth文件是创建的路径文件
e:/program/python/code/demo

注:创建 .pth文件后,需要重新打开要执行的导入模块的Python文件,否则新添加的目录不起作用。 通过该方法添加的目录只再当前版本的Python中有效。

2.3  在PYTHONPATH换将变量中添加

打开 环境变量 对话框,如果没有 PYTHONPATH系统环境变量,则需要先创建一个,否则直接选中PYTHONPATH变量,在点击编辑 按钮,并且在弹出对话框的 变量值 文本框中 添加新的模块目录,目录之前使用逗号分隔。

注:在环境变量中添加模块目录后,需要重新打开要执行的导入模块的Python文件,否则新添加的目录不起作用。通过该方法添加的目录可以在不同版本的Python中共享。

花絮:

本期的Python 模块就分享到这里,下期我们将继续分享Python模块的相关知识,感兴趣的朋友可以关注我。

同时也可以关注下我的个人 微信订阅号,园子里面的文章也会第一时间在订阅号里面进行推送跟更新。

 

posted @ 2021-04-10 21:19  @睦  阅读(77)  评论(0编辑  收藏  举报