0
点赞
收藏
分享

微信扫一扫

python-17-包和模块

python-17-包和模块

一.说明

python中的基础系列关于组织代码的基本单位就是包和模块,在真实项目中我们不可能将所有代码都写在一起,或者我们的一些工具类库等需要单独处理,方便各模块调用,怎么办?这时候包和模块就来了,可以很方便的帮我们组织代码。来开始我们今天的日拱一卒!。

二.模块

  • 定义:
    模块是一个包含 Python 代码的文件,通常以 .py 结尾。模块可以定义函数、类和变量,也可以包含可执行代码。
    模块一般分为 自定义模块 内置标准模块 开源模块(第三方模块),我们这章重点介绍自定义模块
  • 创建模块
    让我们创建一个简单模块 mymodule.py,内容如下:

# mymodule.py
def greet(name):
     return f"Hello, {name}!"
PI = 3.14159

  • 调用模块
    在模块当前目录下,创建main.py文件,内容如下

# mymodule.py
import mymodule
print(mymodule.greet("Alice")) # 输出: Hello, Alice!
print(mymodule.PI) # 输出: 3.14159

  • 多种导入方式
  1. 整包导入 import mymodule

# mymodule.py
import mymodule
print(mymodule.greet("Alice")) # 输出: Hello, Alice!
print(mymodule.PI) # 输出: 3.14159

  1. 使用 from ... import ...

# mymodule.py
from mymodule import greet,PI
print(greet("Alice")) # 输出: Hello, Alice!
print(PI) # 输出: 3.14159

  1. 使用 from ... import *

# mymodule.py
from mymodule import *
print(greet("Alice")) # 输出: Hello, Alice!
print(PI) # 输出: 3.14159

  1. 使用 import ... as ...

# mymodule.py
import mymodule as  my_m
print(my_m.greet("Alice")) # 输出: Hello, Alice!
print(my_m.PI) # 输出: 3.14159

三.包

  1. 定义
    包是一个包含多个模块的文件夹。包通过一个特殊的 __init__.py 文件来标识,文件可以是空的,也可以包含初始化代码。
  2. 创建包 我们在项目文件里面创建一个文件夹utils,里面包含3个文件__init__.pymodule1.pymodule2.py,内容如下:

# __init__.py
#空的 暂时什么都不用写

# module1.py
def func1():
     return "Function 1 from module 1"

# module2.py
def func2():
     return "Function 2 from module 2"

整体结构如下:

  1. 引入包
    在主程序 main.py中引入 utils包,内容如下:

# main.py
from utils import module1, module2
print(module1.func1()) # 输出: Function 1 from module 1
print(module2.func2()) # 输出: Function 2 from module 2

  1. 多种方式来导入包
  • 导入整个模块

# main.py
import utils.module1
import utils.module2
print(utils.module1.func1())# 输出: Function 1 from module 1
print(utils.module2.func2())# 输出: Function 2 from module 2

  • 使用别名

import utils.module1 as m1
import utils.module2 as m2
print(m1.func1())
print(m2.func2())

  • 导入特定函数或类

from utils.module1 import func1
from utils.module2 import func2
print(func1())
print(func2())

  • 导入所有内容(不推荐)

from utils.module1 import *
from utils.module2 import *
print(func1())
print(func2())

  1. __init__.py 文件的作用
    在刚刚举例中 __init__.py 文件是一个空文件,那么这个文件具体是用来干嘛的呢?一般来说总结有以下几点:
  1. 标识包:使得 Python 知道该目录是一个包,可以导入其中的模块。
  2. 初始化代码:在包导入时自动执行,可以用于设置包的初始状态或导入子模块。
  3. 控制导入内容:可以通过定义 __all__ 列表,控制从包中导入时可访问的模块或对象。

# utils/__init__.py
from .module1 import func1
from .module2 import func2
__all__ = ['func1', 'func2'] # 控制导入内容

'''
这样,当你使用 from mypackage import * 时,只会导入 func1 和 func2。
'''

四.总结

Python 中包和模块 大家重点学会包的创建和导入,导入的方式很多,大家根据自己的习惯来灵活实现包和模块的导入,通过本章的介绍 大家可以自己动手 创建属于自己的工具包!

创作整理不易,请大家多多关注 多多点赞,有写的不对的地方欢迎大家补充,我来整理,再次感谢!

举报

相关推荐

0 条评论