python的import语句
1、import作用
import跟C/C++中的#include作用有点类似,都是为了调用定义在其他文件中的变量、函数或者类,但实现的区别很大。
-
C/C++中如果a.cpp include了b.h那么b.h这个文件就原样加到a.cpp文件中去了,这样在b.h中的变量、函数、类就在a.cpp文件中声明了,所以在a.cpp中能够访问。注意,这里的添加是C/C++原文件的添加。
-
python中如果a.py import了b.py那么不是把b.py的原代码加到a.py中,而是把b.py编译为一个module类型的对象,保存到b.pyc文件中,然后读取到内存中。在a.py中可以调用module对象中的变量、函数、类。其中b.py中的普通语句会在编译的时候被直接执行。
下面是一个import一个module(更应该说是include一个文件,将文件转换成module对象包含进来。)
module_name.py
print("include module")
name = "jeck"
def func():
print("hello world")
class test():
def func(self):
print("class hello world")
测试文件
import module_name # 将module_name.py编译成module对象包含进来
print(module_name.name) # 调用module对象中的变量
module_name.func() # 调用module对象中的函数
a = module_name.test() # 例化module对象中的类。
a.func()
输出
include module # 编译时候直接执行了普通语句
jeck # 调用name变量
hello world # 调用func函数
class hello world # 调用test类的func函数
2、import模块的搜索顺序
- 先去build_in的模块中去查找
- build_in中没有找到,就去sys.path中查找,sys.path的路径包括:当前目录、安装python时的依赖位置、环境变量中的PYTHONPATH
如果要引用直接定义的module,要不把文件放在调用文件相同的目录中,要么把module的存放路径加入到sys.path中,sys.path是一个列表,可以这样添加路径
sys.path.append("/home/ydh/py/lib/") # lib目录为存放自己定义module的路径。
3、import包
import包是import一个目录,然后编译目录下的__init__.py文件,将__init__.py文件编译成一个module对象包含到当前文件中来。
标签:文件,name,python,py,module,func,import From: https://www.cnblogs.com/yuandonghua/p/17692942.html