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模块的相关知识,感兴趣的朋友可以关注我。
同时也可以关注下我的个人 微信订阅号,园子里面的文章也会第一时间在订阅号里面进行推送跟更新。