Python 中的模块和包
模块(module):包含定义的类/函数/变量的文件,后缀是.py。Python代码的可重用性由此保证
包(package):由模块或者子模块组成的Python应用程序执行环境,本质上是一个文件目录,目录中必须直接带有“init.py”文件
1. import语句
可以使用import语句进行模块和包的导入,
# 导入一个模块
import module1
# 导入多个模块
import module1,module2,module3
# 导入模块中指定的属性和方法
from module1 import module_element1,module_element2 [as new_module_name]
2. import语句的本质
import实际上是一种路径搜索;
2.1 导入模块
module1.py
# -*- coding:utf-8 -*-
print("this is python module1")
name = "module1"
def hello():
print("HELLO!")
module2.py
# -*- coding:utf-8 -*-
import module1
print("this is python module2")
print(type(module1))
print(module1)
运行
[Running] python -u "e:\2code\gitee\PythonDataScience\fundations\pythonimport\module2.py"
this is python module1
this is python module2
<class 'module'>
<module 'module1' from 'e:\\2code\\gitee\\PythonDataScience\\fundations\\pythonimport\\module1.py'>
在导入模块的时候,模块所在文件夹会自动生成一个__pycache__\module1.cpython-36.pyc文件。
"import module1" 的本质是将"module1.py"中的全部代码加载到内存并赋值给与模块同名的变量写在当前文件中,这个变量的类型是'module';
默认先当前目录下查找,然后再在系统变量中查找。系统查找的范围是:sys.path下的所有路径,按顺序查找。
2.2 导入包
导入包和模块相对而言在形式上差别并不大
import package
"from module_name import name" 的本质是导入指定的变量或方法到当前文件中
一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行;
【参考文献】
http://www.runoob.com/python3/python3-module.html
https://www.cnblogs.com/yan-lei/p/7828871.html