Python Module 模块详解:模块导入与项目管理的最佳实践
文章目录
- Python Module 模块详解:模块导入与项目管理的最佳实践
- 一 准备示例代码
- 二 引用 module
- 三 大型项目的模块管理
- 四 完整文件示例
- 五 源码地址
本文详细介绍了 Python 中模块(Module)的定义与使用,展示了如何通过 import
、from...import
等方式引入模块及其函数。文中提供了多种模块导入的方法,包括模块的重命名、从模块中导入单个或多个函数等。此外,还讲解了大型项目中的模块管理,如何通过 __init__.py
文件实现模块初始化,并展示了如何在目录结构中引用其他文件的函数。本文通过多个实例和完整代码,帮助读者掌握模块的使用技巧,提升 Python 项目的组织与管理效率。
这个module 模块的示例需要的脚本: file.py,me.py,Module 模块.py 和 module 文件夹(模块),代码见 Gitee 或者 GitHub。
一 准备示例代码
准备 file.py
# file.py
def create_name():
return "new_file.txt"
def create_time():
return "new_file_time.txt"
二 引用 module
1 第一种 import file
import file
print("1", file.create_name())
2 第二种 from
from file import *
print("2", create_name())
print("2", create_time())
3 第三种 重命名
import file as f1
print("f1:", f1.create_name())
# 重命名的用法对比
class File02:
def create_name(self):
return "new_file02.txt"
# 这里相当于 as f1 可以暂时这么理解
f2 = File02()
# 这里和 f1 的调用方法类似
print("f2:", f2.create_name())
4 第四种 从模块中引用函数
from file import create_name
print(create_name())
5 第五种 从模块中引用多个函数
# 从模块中引用多个函数
from file import create_name, create_time
print(create_name(), create_time())
三 大型项目的模块管理
module 和 class 类似, module 看到一个 __init__.py
文件,和 class 里的 def __init__(self)
类似,在里面写上要如何初始化你的 files
目录。例如在中写
# files/__init__.py
from .video import get_video_size # 点运行会报错的
我们就可以在files
里 import get_video_size
。
from module.files import get_video_size
print(f"get_video_size = ", get_video_size())
目录结构为
不过和 video.py
同级的 text.py
就无法通过这种 import 方式获取到 text.py
的功能。想使用 text.py
的功能,可以这样 import。
# from module.files import create_name # 这里会报错
# 获取到 text.py 的功能
import module.files.text
print(module.files.text.create_name())
# 或者这样:
from module.files import text
print(text.create_name())
四 完整文件示例
这是 Module 模块.py 脚本。
# This is a sample Python script.
# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.
def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press ⌘F8 to toggle the breakpoint.
# 文件中的代码 module 中的 file.py
# 引用 module, 可以表述为 引用库,引用包,引用代码
# me.py
# 引用 module 这里时 me.py 中的内容 start
# 第一种
import file
print("1", file.create_name())
# 第二种更偷懒
from file import *
print("2", create_name())
print("2", create_time())
# 给模块重命名
import file as f1
print("f1:", f1.create_name())
# 从模块中引用函数
from file import create_name
print(create_name())
# 从模块中引用多个函数
from file import create_name, create_time
print(create_name(), create_time())
class File02:
def create_name(self):
return "new_file02.txt"
f2 = File02()
print("f2:", f2.create_name())
from module.files import get_video_size
print(f"get_video_size = ", get_video_size())
# from files import create_name # 这里会报错
# 获取到 text.py 的功能
import module.files.text
print(module.files.text.create_name())
# 或者这样:
from module.files import text
print(text.create_name())
# 引用 module 这里时 me.py 中的内容 end
# 大项目的模块管理
# 见 module 中的 files
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
print_hi('Module 模块')
# See PyCharm help at https://www.jetbrains.com/help/pycharm/
复制粘贴并覆盖到你的 main.py 中运行,运行结果如下。
1 new_file.txt
2 new_file.txt
2 new_file_time.txt
f1: new_file.txt
new_file.txt
new_file.txt new_file_time.txt
f2: new_file02.txt
get_video_size = 20
text new_file.txt
text new_file.txt
Hi, Module 模块
五 源码地址
代码地址:
国内看 Gitee 之 Module 模块.py
国外看 GitHub 之 Module 模块.py
这个module 模块的示例需要的脚本: file.py,me.py,Module 模块.py 和 module 文件夹(模块),代码见 Gitee 或者 GitHub。
引用 莫烦 Python