首页 > 编程语言 >python-17-包和模块-创建属于自己的python工具包

python-17-包和模块-创建属于自己的python工具包

时间:2024-11-04 08:46:21浏览次数:5  
标签:17 python utils py 工具包 模块 print import mymodule

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
      
    2. 使用 from ... import ...

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

      # mymodule.py
      from mymodule import *
      print(greet("Alice")) # 输出: Hello, Alice!
      print(PI) # 输出: 3.14159
      
    4. 使用 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"
    

    整体结构如下:

    在这里插入图片描述

  3. 引入包

    在主程序 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
    
  4. 多种方式来导入包

    • 导入整个模块

      # 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())
      
  5. __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 中包和模块 大家重点学会包的创建和导入,导入的方式很多,大家根据自己的习惯来灵活实现包和模块的导入,通过本章的介绍 大家可以自己动手 创建属于自己的工具包!

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

标签:17,python,utils,py,工具包,模块,print,import,mymodule
From: https://blog.csdn.net/Lookontime/article/details/143472376

相关文章

  • Python实现Tonelli-Shanks算法
    目录Python实现Tonelli-Shanks算法引言一、Tonelli-Shanks算法的理论基础1.1模平方根的定义1.2Tonelli-Shanks算法的原理1.3Tonelli-Shanks算法的复杂度二、Tonelli-Shanks算法的Python实现2.1基本实现2.2案例一:求多个模平方根2.2.1实现代码2.3案例二:应用于密码......
  • python的变量
       python的变量有 int 整型, float 浮点数(小数),  str 字符,bool 布尔型   int指整数,该变量的类型为整数   float指小数,该变量的类型为小数   str指字符,该变量的类型为字符   bool指布尔,用于判断命题的真假,判断的情况:   1,......
  • Python轴承故障诊断 (17)基于TCN-CNN并行的一维故障信号识别模型
    往期精彩内容:Python-凯斯西储大学(CWRU)轴承数据解读与分类处理Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客三十多个开源数据集|故障诊断再也不用担心数据集了!P......
  • Python轴承故障诊断 (16)高创新故障识别模型(二)
    往期精彩内容:Python-凯斯西储大学(CWRU)轴承数据解读与分类处理Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客三十多个开源数据集|故障诊断再也不用担心数据集了!P......
  • python+flask计算机毕业设计光爱之家孤儿院管理系统设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于孤儿院管理的研究,现有研究主要以孤儿院的运营模式、儿童心理关怀等为主。专门针对孤儿院管理系统,尤其是结合光爱之家这种特定模式......
  • python+flask计算机毕业设计高校学生饮食推荐系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于饮食推荐系统的研究,现有研究多以大众群体为主,专门针对高校学生这一特定群体的饮食推荐系统研究较少。在国内外,饮食推荐相关研究主......
  • python+flask计算机毕业设计国风彩妆网站(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于国风彩妆网站的研究,现有研究主要以彩妆产品本身或一般的商业网站为主,专门针对国风彩妆网站特色功能、用户体验以及文化融合等方面......
  • 小白对python的一些概念的总结
    在python中常数<变量<常数是可以的  如if15<x<40:python的逻辑运算符只有三个andornot也就是与或非通俗来讲意思分别为并且或者不(否)其中andor要对两个或两个以上的操作对象进行链接但是not只能连接一个操作对象进行取反true变falsefalse变true 比如......
  • 鸿蒙系统与python
    鸿蒙系统与python鸿蒙系统鸿蒙系统是华为公司发布的一款面向万物互联时代的全场景分布式操作系统。以下是关于它的一些主要信息:发展历程:早期规划:华为从2012年开始规划自有操作系统,并在芬兰赫尔辛基设立智能手机研发中心,招募相关技术人才。2016年5月,华为消费者BG软......
  • 汉诺塔问题python算法
    汉诺塔问题就是有且只有三个可以放置圆环的地方,所有圆环按照从小到大依次从上向下排列在第一个柱子上,求经过什么操作将顺序不变的将圆环整体从第一个移动第三个柱子上defhanoi(n,a,b,c):ifn>0:hanoi(n-1,a,c,b)#1print("movingfrom%sto......