python_导入模块和包

2021/11/5 22:17:38

本文主要是介绍python_导入模块和包,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、模块和包的定义:

模块(module):xx.py 可以理解为模块就是一个py文件

包(package):可以理解 就是一个文件夹,文件夹中含多个py文件

注意:在包(文件夹)中有一个默认内容为空的`__init__.py`的文件,一般用于描述当前包的信息(在导入他下面的模块时,也会自动加载)。

- py2必须有,如果没有导入包就会失败。
- py3可有可无。

2、导入模块和包时的路径:

例子:

我的项目路径

当程序运行时,python 解释器 会在程序执行入口文件的当前目录查询导入包和模块的路径 ,例子中run.py是我的程序执行入口

故,执行run时,导入包和模块的路径会优先在demo 目录下查找:

通过内置模块sys 获取这个路径:

import sys

curr_path =sys.path
print(curr_path)


'''输出,其中特别注意: 使用pycharm运行代码时会自动将项目的根目录加到sys.path目录中,我这里的项目的根目录是D:\\pythonProject\\PyDemo'''
#['D:\\pythonProject\\PyDemo\\DemoFile\\模块和包',
# 'D:\\pythonProject\\PyDemo',    
# 'D:\\Python\\python38.zip',
# 'D:\\Python\\DLLs',
# 'D:\\Python\\lib',
# 'D:\\Python',
# 'D:\\Python\\lib\\site-packages',    
# 'D:\\Python\\lib\\site-packages\\win32',
# 'D:\\Python\\lib\\site-packages\\win32\\lib',
# 'D:\\Python\\lib\\site-packages\\Pythonwin']

如果要导入 其他项目目录下的 包或者模块 需要 在sys.path中添加对应模块和包所属的路径:

import sys
sys.path.append(path)  #path为对应包或者模块所属的路径

 

3、导入模块和包

 

 

 

导入模块:

1、import 导入方式

导入一个模块 (一般多用于导入sys.path目录下的一个py文件)

'''import 方式导入模块'''
# import 方式导入(从根目录路径开始导入)
# 导入一个read1模块,通过该模块可以调用模块中的所有函数
# import demo.bin1.read_1
# demo.bin1.read_1.read_bytes()
# demo.bin1.read_1.read_text()

# import 方式导入(模块在根目录,直接导入)
# import read_1
# read_1.read_text()

# import 方式导入(从子包中导入模块)
# import demo.bin1.bin2.write1
#
# demo.bin1.bin2.write1.write_text()
# demo.bin1.bin2.write1.write_bytes()

 

 

2、from xxx import xxx 导入方式 :

一般用于路径多层嵌套导入,或者导入某个模块中的函数:

'''from...import... 方式导入模块'''

# 导入模块中的所有函数 (根目录模块)
# from module1 import *
# m1()
# m2()

# 导入模块中指定函数(根目录模块)
# from module1 import m1
# m1()

# 导入模块中所有函数(子包中模块)
# from demo.bin1.bin2.write1 import *
# write_bytes()
# write_text()

 

 

 

导入包:

import 方式导入包:

'''import 方式导入,'''

# 在__init__.py 文件中事先导入模块:from demo.bin1.module1 import *  (导入module模块中的所有函数)
# import demo.bin1
#
# demo.bin1.m2()
# demo.bin1.m1()
# demo.bin1.module1.m1()


# 在__init__.py 文件中事先导入模块:import demo.bin1.module1  (导入module模块)
# import demo.bin1
# demo.bin1.module1.m2()
# demo.bin1.module1.m1()

# 导入子包
# 在子包的__init__.py 文件中事先导入子包中的模块:import demo.bin1.bin2.write1
# import demo.bin1.bin2
#
# demo.bin1.bin2.write1.write_text()
# demo.bin1.bin2.write1.write_bytes()

# 导入子包
# 在子包的__init__.py 文件中事先导入子包中的模块:from demo.bin1.bin2.write1 import *
# import demo.bin1.bin2
#
# demo.bin1.bin2.write1.write_text()
# demo.bin1.bin2.write1.write_bytes()

'''
在包中的__init__.py  未写入任何模块的引用的前提下,直接导入包 ,将无法正常使用
以下导入后,调用将报错:AttributeError: module 'demo.bin1.bin2' has no attribute 'write1'
故仅仅导入包的情况下,要在包中的__init__.py 对应模块的引用
'''
# import demo.bin1.bin2
#
# demo.bin1.bin2.write1.write_text()
# demo.bin1.bin2.write1.write_bytes()

 

from...import...的方式导入:

'''from...import...方式导入包'''


# 在子包的__init__.py 文件中事先导入子包中的模块:import demo.bin1.bin2.write1
# from demo.bin1 import bin2
#
# bin2.write1.write_bytes()
# bin2.write1.write_text()





# 在包中的__init__.py 文件中事先导入子包中的模块:import demo.bin1.module1  (带上根目录路径) 或者写入from demo.bin1.module1 import *

# from demo import bin1
#
# bin1.module1.m2()
# bin1.module1.m1()


# # 在包中的__init__.py 文件中事先导入子包中的模块:import demo.bin1.module1  (带上根目录路径)
# from  demo.bin1.bin2
#
# bin1.module1.m2()
# bin1.module1.m1()

 

 

导入支持使用别名:

两个模块中存在相同的函数名,在导入的时候 使用别名用于区分

# 导入支持 as 别名,用于区分两个模块中相同名字的函数名

# from  bin1.bin2.write1 import write_text as b2_write
# from bin1.write1 import write_text  as b1_write
#
#
# b1_write()
# b2_write

 

 

 

 

 

 

 



这篇关于python_导入模块和包的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程