- A+
一、包:在创建许多模块后,我们可能希望将某些功能相近的文件组织在同一文件夹下,这里就需要运用包的概念了。包对应于文件夹,使用包的方式
通常包是一个目录,可以使用import导入包,或者from...import来导入包中的部分模块。包目录下必须存在的一个文件是_init_.py,否则会python就会把这个目录当成一个普通的目录,而不是一个包。然后是一些模块文件和子目录,假如子目录中也有_init_.py,那么它就是这个包的子包了。
二、模块:在Python中,一个.py文件就称之为一个模块(Module)。在创建了一个脚本文件后,定义了某些函数和变量。在其他需要这些功能的文件中,导入这个模块,就可以重用这些函数和变量。模块的好处是大大提高了代码的可维护性。其次,编写代码时,不必每个功能都亲力亲为了。同时,也解决了不同模块之间的全局变量的重名问题,以及多个模块组成的包时,模块的重名问题。
2.1导入方法
-
import的语法:import module1[,module2[,....N]]]
import命令可以导入模块和包,能否被导入,取决于其是否在系统搜索路径中。导入内置模块sys后可以查看sys.path内容确定系统搜索路径。
一般用module_name.fun_name来引用模块的函数;用moudle_name.var_name来引用模块中的变量。modoule_name即为文件名去掉.py的后缀
-
from...import的语法: from modname import name1[,name2[,...N]]]
“ from 模块 import 对象 ”可以导入模块中的对象,多个对象可以用逗号隔开或用*导入所有的对象,这种导入方式是将对象导入到当前模块中,所以导入的对象不能和当前模块中的对象同名。
一般可直接使用导入的对象,不需要通过module_name.fun_name的方法了。
2.2搜索路径
Python在import module的时候,是按照以下顺序去搜索模块的位置的:
1.首先判断这个module是否是built-in即内建模块,如果是则引入内建模块,如果不是则在一个称为sys.path的list中寻找。
2.sys.path在python脚本执行时动态生成,包括以下3个部分:
2.1.当前目录;
2. 2.如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录,即.bash_profile;
2.3.如果都找不到,Python会察看默认路径,即安装python时的依赖位置。