Python的import详解
1、import包导入有四种情况
(1)本级目录内导入
(2)上级目录导入下级目录
(3)下级目录导入上级目录
(4)同级目录之间导入
python中import 和 from import 的区别:
import 语句导入整个模块内的所有成员(包括变量、函数、类等)。
from import 只导入本语句指定的成员。
from xxx import * 导入模块时,与 import 等价。
from xxx import * 导入模块时,默认为导入模块中所有不以下划线开头的程序单元。
2、目录结构
.
├── pack1
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ ├── run1.cpython-37.pyc
│ │ └── run2.cpython-37.pyc
│ ├── run1.py
│ ├── run2.py
│ ├── samedir.py
│ └── upper.py
├── pack2
│ ├── __init__.py
│ ├── parallel.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ └── run3.cpython-37.pyc
│ ├── run3.py
│ └── run4.py
├── __pycache__
│ └── root_pack.cpython-37.pyc
├── root_pack.py
└── root.py
3、本级目录内导入
直接import本级目录的文件即可。samedir.py导入run1.py 。
run1.py如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
def run1():
print ("I'm running package 1")
def test_run1():
print ("I'm running package test_run1")
本级目录调用,samedir.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import run1
run1.run1()
run1.test_run1()
import run1 as r1
r1.run1()
r1.test_run1()
执行结果:
# python samedir.py
I'm running package 1
I'm running package test_run1
I'm running package 1
I'm running package test_run1
import run1 as r1
简化输入,用r1调用两个函数
4、上级目录导入下级目录
从上级目录导入下级目录的文件,需要下级新建一个的__init__.py文件 ,导入时首先执行init文件。
通常__init__.py 文件为空,但是还可以为它增加其他的功能。导入一个包时,实际上是导入了它的__init__.py文件。这样我们可以在__init__.py文件中批量导入程序所需要的模块,而不再需要一个一个的导入。
import sys
sys.path.append("..")
是为了可以从下级导入上级目录。
if name == ‘main’:
是为了测试导入的执行效果
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys
sys.path.append("..")
if __name__ == '__main__':
print ('main is running')
else:
print ('package 1 init')
root_pack.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 导入 Python 包
import pack1.run1 as t1
import pack2.run3 as t3
t1.run1()
t1.test_run1()
t3.run3()
t3.test_run3()
执行效果如下:
# python root.py
package 1 init
package 2 init
I'm running package 1
I'm running package test_run1
I'm running package 3
I'm running package test_run3
说明:
package 1 init
package 2 init
是导入时,首先执行的是init.py文件,对于同一个包,多次导入,只执行一次init.py 。
5、下级目录导入上级目录
从pack1目录下upper导入上级目录的root_pack.py .
root_pack.py :
#!/usr/bin/python
# -*- coding: UTF-8 -*-
def root_pack():
print ("I'm running package root")
def root_run():
print ("I'm running package root_run")
需要导入上级目录下模块,使用sys.path ,增加路径。
upper.py :
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys
sys.path.append("..")
import root_pack
root_pack.root_pack()
root_pack.root_run()
执行效果:
# python upper.py
I'm running package root
I'm running package root_run
6、同级目录之间导入
parallel.py 在pack2目录下,调用pack1目录下的程序。
parallel.py也需要增加上级目录
import sys
sys.path.append("..")
parallel.py如下:文章来源:https://www.toymoban.com/news/detail-505593.html
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys
sys.path.append("..")
from pack1 import run1
from pack1 import run2 as r2
run1.run1()
r2.run2()
r2.test_run2()
执行结果:文章来源地址https://www.toymoban.com/news/detail-505593.html
# python parallel.py
package 1 init
I'm running package 1
I'm running package 2
I'm running package test_run2
到了这里,关于Python的import详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!