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

__init__.py __all__和 __name__的作用及其用法

    __ init__.py 的作用及其用法: 包下的__init__.py 所在目录是一个模块包,本身也是一个模块,可用于定义模糊导入时要导入的内容。当我们导入一个包的时候,包下的__init__.py中的代码会自动执行,因此在某些大的项目被使用频率较高的模块,我们也可以用于批量导入模块。


    首先创建一个名为 package5的包,这个包的__init__.py 也自动生成,再创建 init_test.py。 创建子包 package_init, 同样这个包的__init__.py 也自动生成,最后创建 init_demo1.py 和 init_demo2.py



在这里插入图片描述



    分别给 init_demo1.py 和 init_demo2.py 随意加一个str



在这里插入图片描述



在这里插入图片描述



    当在 init_test.py 中 执行模糊导入 from package5.package_init import * 后,打印 init_demo1 的 str1 和 init_demo2 的 str2 变量时,都会出现报错



在这里插入图片描述



在这里插入图片描述



    可以在 package_init 包下的__init__.py 添加 __ all__ = [‘init_demo1’,‘init_demo2’],
__ all__ 的作用稍后下面会继续说明



在这里插入图片描述



    再次执行 init_test.py, 能正常打印出 2个变量值



在这里插入图片描述



    当导入包时,自动执行 __init __.py 里面的代码



在这里插入图片描述



在这里插入图片描述



    批量导入模块, 假设有3个常用的模块,可以添加到 __ init __.py



在这里插入图片描述



    导入 package_init,相当于已经自动导入以上3个模块



在这里插入图片描述



    __all__的作用及其用法 :上面已经演示了在包下的 __init __.py, 可用于标识模糊导入时的模块。


    在普通模块中使用时,表示一个模块中允许哪些属性可以被导入到别的模块中,在 all_demo1.py 中添加3个变量,以及 标明 __ all__ = [‘str1’,‘str2’], 表示只允许 str1,str2 变量被导入



在这里插入图片描述



    可见,当模糊导入模块时, str3 变量值是不能被打印出来的



在这里插入图片描述



    如果需要打印出 str3 变量,需要导入模块时指明



在这里插入图片描述



    __name__的作用及其用法: __name__这个系统变量显示了当前模块执行过程中的名称,如果当前程序运行在这个模块中, __ name __ 的名称就是__main __ 如果不是,则为这个模块的名称。__main__一般作为函数的入口, 也称主程序入口



在这里插入图片描述



    当 all_demo1.py 作为模块被导入时,结果为该模块名



在这里插入图片描述

http://www.lryc.cn/news/474405.html

相关文章:

  • js操作数组的方法 / js操作字符串的方法
  • Docker 部署RocketMQ
  • Linux(Cent OS)环境离线安装mkfontscale mkfontdir命令 解决java项目在linux系统下无法获取中文字体问题
  • 计算堆栈中的剩余数字
  • 笔记:mysql升级 5.6至5.7
  • 前端的全栈Deno篇(五):与前端保持一致的模块化方案,摆脱ERR_REQUIRE_ESM和mjs、cjs等模块混乱带来的心智负担
  • 与外部公司做数据交互时,需要注意哪些事情?
  • 基于hive分析Flask为后端框架echarts为前端框架的招聘网站可视化大屏项目
  • Ansible 部署应用
  • 使用Docker Swarm进行集群管理
  • 基于树莓派的安保巡逻机器人--(一、快速人脸录入与精准人脸识别)
  • 中间件的应用
  • 真题与解析 202206二级 青少年软件编程(Python)考级
  • ChatGPT新体验:AI搜索功能与订阅支付指南
  • 【植物识别】Python+深度学习+人工智能+CNN卷积神经网络+算法模型训练+TensorFlow
  • 快讯,Flutter PC 多窗口新进展,已在 Ubuntu/Canonical 展示
  • BigDecimal 详解
  • ESP-HaloPanel:用 ESP32-C2 打造超低成本智能家居面板
  • CSS3新增盒子属性(三)
  • Manus在虚拟现实仿真模拟中的应用案例分享
  • 大数据-201 数据挖掘 机器学习理论 - 决策树 局部最优 剪枝 分裂 二叉分裂
  • Scala 的trait
  • vue3官方示例-简单的 markdown 编辑器。
  • Linux标准I/O库汇总整理
  • BGP路由优选+EVPN
  • 牛客练习赛131(未补)
  • 功能更新丨AI黑科技助燃VR全景新势能
  • JavaCV学习第一课
  • Java第二阶段---16字符串---第一节 String
  • <十六>Ceph mon 运维