当前位置: 首页 > news >正文

python开发之 __init__.py的一些基本用法

        在我们查看别人的项目的时候,我们经常可以看到__init__.py这个py脚本,它存在于Python包的每个目录中,标示着该目录是一个Python包。这个文件可以为空,但它的存在有其特殊的意义。

        总的来说,__init__.py文件扮演着初始化Python包的重要角色,其主要作用有以下几个

初始化python package

        当一个目录下包含__init__.py文件时,Python会将该目录视为一个包。这个文件不仅可以用来组织代码结构,还可以用来执行包的初始化代码,或者定义当从包中导入模块时自动执行的代码。

        比如,这里我们有一个名为mymodule的文件夹,其内部有一个名为module的py脚本。

当我们想要从mymodule文件夹中module.py作为模块使用其内部的一些函数时,在代码中便可以这样写

from mymodule import module
module.print_something('你好')

        倘若我们使用setupTools将项目上传给pypi时(上传项目给pypi时需要上传的是一个文件夹,具体上传流程可查看往期文章:Python开发之手把手教你上传项目至PyPi(保姆级教程)-CSDN博客),我们的文件夹内没有__init__.py的话, 那么setupTools内的find_packages()函数将无法找到你要上传的文件夹,进而返回空值。

__init__.py存在时

 __init_.py存在时find_packages()函数可以找到pywechat这个文件夹,并把他看做一个package

 __init__.py不存在时

__init__.py不存在时,find_packages()函数无法找到pywechat这个文件夹,无法把它看做一个package

导入包内模块

依然以pywechat这个模块为例,当用户想要调用pywechat内的WechatAuto内的Messages类或某个函数时需要:

from pywechat.WechatAuto import Messages
from pywechat.WechatAuto import get_chat_history

get_chat_history()
Messages.send_messages_to_friend()

这样的导入可能有点太麻烦,我们只需要在__init__.py中这样写:

 那么我们在调用时便可以直接从pywechat这个文件夹内导入函数或类,这时我们导入的所有类或函数都来自于__init__.py,由于我们在__init__.py里边已经导入过Messages类与get_chat_history函数,所以我们可以直接导入函数或类。

包的元数据信息

        当我们在__init__.py中使用''' '''多行注释写了一些信息后,这些信息将被pylance(python解释器)当做该package文件夹下的help文档,当我们导入这个package后,对这个模块使用help函数后pylance便会将这些信息进行整理并格式化输出

pywechat __init__.py内的内容

import pywechat
print(help(pywechat))

     

输出结果 

       总之, _init__.py文件是Python包开发中不可或缺的一部分,它帮助开发者初始化包,组织代码结构并提供包的元数据信息。

相关文章:

  • C高级(shell)
  • C高级----shell作业
  • 山东大学软件学院nosql实验二
  • pta天梯L1-004 计算摄氏温度
  • 基于 Spring AI 的 HIS 系统智能化改造
  • (七)消息队列-Kafka 序列化avro(传递)
  • 深入理解 Kubernetes 命名空间:高效管理与隔离资源的关键
  • React Native 原理
  • TDengine 中的数据库
  • C++-第十三章:红黑树
  • webpack5在生产环境屏蔽掉控制台打印 失效处理
  • Nginx 配置前端后端服务
  • 矩阵 trick 系列 题解
  • 【51单片机】快速入门
  • 关于mysql 表中字段存储JSON对象对JSON对象中的bolean字段进行查询的方式
  • 【原创】Ubuntu 24搭建Ollama+ DeepSeek局域网服务器
  • salesforce 为什么无法关闭task,显示:insufficient access rights on object id
  • smolagents学习笔记系列(八)Examples - Master you knowledge base with agentic RAG
  • 第13天:数据序列化实战 - 从内存到磁盘的完美转换
  • 2025 软件供应链安全情报预警平台建设与实践
  • 魔都眼|锦江乐园摩天轮“换代”开拆,新摩天轮暂定118米
  • 人民网三评“网络烂梗”:莫让低级趣味围猎青少年
  • 著名词作家陈哲逝世,代表作《让世界充满爱》《同一首歌》等
  • 微软宣布全球裁员约3%:涉及约6000人,侧重经理层
  • 马上评|“衣服越来越难买”,对市场是一个提醒
  • 江西贵溪:铜板上雕出的国潮美学