python文件目录下的__init__文件

news/2024/7/6 1:35:12 标签: python

一、声明包

       python 中的项目结构是按照目录来组织的,每个python 文件就是一个模块,将模块整合在一起就是包,也就是把服务于某个功能的一系列模块放在一个目录中,这样如果想要使用某个包中的某个功能,只需要导入相应包中的模块,然后就会去相应的目录中搜索。但是不想所有的目录都是 python 中的目录,因此将目录中含有 __init__ 文件的目录才划分为 python 中的包,只有 python 的包才能被 python 代码识别和使用,而普通目录无法识别,这就将普通目录和 python 代码使用的目录分隔开来。

二、预加载

导入一个包的时候,会首先执行这个包中的 init 文件中的代码
导入包会首先导入__init__文件
这样,可以在 __init__ 文件中把要使用的包导入以及要使用的包变量定义好

三、模块的导入

在 init 文件中常用的预加载主要包含2个方面:

  • 包级别模块的预加载
  • 包变量的预定义

四、包级别模块的预加载

当 __init__ 保持为空文件,他就只是标记目录为python中的包,导入包中模块的函数时需要使用 包.模块 具体指定那个包中的那个模块。因为需要的函数在包中看不到,只在具体模块中可见。
在这里插入图片描述
而 __init__ 文件中导入以后,他将成为包级别的内容,也就是在包中可见。
在这里插入图片描述
看一个包下面的包的例子加深理解
在这里插入图片描述
中间 __init__ 是 innerpkg1 包下的,其中将 tt 模块中的 mul 提升为innerpkg1包级别的函数,但是没有提升为pkg1包级别的函数,因此在 pkg1 中不可见,需要继续向下搜索 innerPkg1 才可见。

五、包变量的预定义

在 __init__ 中 定义 __all__ 可以定义 from pkg import * 中 “*” 包含的内容
在这里插入图片描述
在 pkg2 中的 __all__ 定义了 add 方法后,from pkg2 import * 实际只导入了 add,使用 div 标红了,要想使用 div,需要在 __all__ 中添加 div
在这里插入图片描述


http://www.niftyadmin.cn/n/1385608.html

相关文章

DBunit、Spring TestContext实践

1、定义接口UserDao.java package com.bao.dbunit.dao;import com.bao.dbunit.entity.User;public interface UserDao {public User getUserByNick(String nick);public void save(User user);public void update(User user);public void remove(String nick);}Pojo类&#xff…

微信公众平台开发(105) 分享到朋友圈和发送给好友

<script type"text/javascript">function onBridgeReady() {var mainTitle"华章书院",mainDesc"2014最受企业家喜爱的商业图书评选",mainURL"http://hz.huiyiw.org/hzshuyuan/home/index.php",mainImgUrl "http://hz.huiyi…

linux环境下载google云盘文件

python环境下安装gdown pip install gdownAfter that, you can download any file from Google Drive by running one of these commands: gdown https://drive.google.com/uc?id<file_id> # for files gdown <file_id> # alt…

java上转型和下转型(对象的多态性)

/*上转型和下转型&#xff08;对象的多态性&#xff09; *上转型&#xff1a;是子类对象由父类引用&#xff0c;格式&#xff1a;parent pnew son *也就是说&#xff0c;想要上转型的前提必须是有继承关系的两个类。 *在调用方法的时候&#xff0c;上转型对象只能调用父类中有的…

PCI Express(三) - A story of packets, stack and network

PCI Express(三) - A story of packets, stack and network 原文出处&#xff1a;http://www.fpga4fun.com/PCI-Express3.html Packetized transactions PCI express is a serial bus. Or is it? From the computers perspective, it is a conventional bus where read and wr…

Linux SSH 连接不上的各种联想

一、CentOS之SSH的安装与配置 SSH 为 Secure Shell 的缩写&#xff0c;由 IETF 的网络工作小组 &#xff08;Network Working Group&#xff09;所制定SSH 为建立在应用层和传输层基础上的安全协议 传统的网络服务程序&#xff0c;如FTP、POP和Telnet其本质上都是不安全的 因为…

广告平台的商业模式,行业分析

业务方向&#xff1a;网站&#xff0c;APP&#xff0c;流量 如何让公司的产品形成一个内生的循环&#xff0c;最终都是到提供信息流的服务入口&#xff0c;产生多次盈利的过程&#xff0c;都是简单的点子&#xff0c;但是都是赢在了落实上&#xff0c;互联网的用户基数太大啦。…

centos密码不知道怎么办

特别感谢&#xff1a;http://www.linuxso.com/linuxrumen/4023.html 这里遇到了问题后&#xff0c;上述网站图文并茂的把怎么修改的给写的非常详细。 先收下。有时候遇到这种棘手的问题&#xff0c;可以拿来看看&#xff0c;很不错哦。转载于:https://www.cnblogs.com/jpa2/arc…