python的包文件叫什么_python之包和文件目录规范

一、什么是包

包就是一个包含有__init__.py文件的文件夹

二、为何要有包

包的本质是模块的模块的一种形式,包是用来被当做模块导入

1、产生一个名称空间

2、运行包下的__init__.py文件,将运行过程中产生的名字都丢到1的名称空间中

3、在当前执行文件的名称空间中拿到一个名字mmm,mmm指向1的名称空间

import mmm

from mmm import x

三、python3中与python2中的__init__.py的不同:

如果下面存放了好多模块,当然每个模块都应该有自己自己的名字。我们需要把这些名字拿到__init__.py里面, 才能使用。python3中即便没有这个__init__.py文件也不会报错,pyhon2二中就会报错。是因为Python 3具有隐式命名空间包,允许它创建没有__init__.py文件的包。但是在python2中必须要有__init__.py这个文件。

四、包的使用

1、导入包和__init__.py

包属于模块的一种,因而包以及包内的模块均是用来被导入使用的,而绝非被直接执行,首次导入包(如import mmm)同样会做三件事:

1、产生一个名称空间

2、运行包下的__init__.py文件,将运行过程中产生的名字都丢到1的名称空间中

3、在当前执行文件的名称空间中拿到一个名字mmm,mmm指向1的名称空间

import mmm

from mmm import x

强调:

1.关于包相关的导入语句也分为import和from ... import ...两种,但是无论哪种,无论在什么位置,在导入时都必须遵循一个原则:凡是在导入时带点的,点的左边都必须是一个包,否则非法。

可以带有一连串的点,如import 顶级包.子包.子模块,但都必须遵循这个原则。但对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类(它们都可以用点的方式调用自己的属性)。

2、包A和包B下有同名模块也不会冲突,如A.a与B.a来自俩个命名空间

3、import导入文件时,产生名称空间中的名字来源于文件,import 包,产生的名称空间的名字同样来源于文件,即包下的__init__.py,导入包本质就是在导入该文件

2、绝对导入和相对导入

绝对导入,以包的文件夹作为起始来进行导入

import sys

print('==========>这是在被导入的__init__.py中查看到的sys.path')

print(sys.path)

from foo.m1 import f1

from foo.m2 import f2

from foo.m3 import f3

from foo.bbb.m4 import f4 # foo内有了一个f4

# # import foo.bbb.m4.f4 # 语法错误,点的左侧必须是一个包

相对导入:仅限于包内使用,不能跨出包(包内模块之间的导入,推荐使用相对导入)

# .:代表当前文件夹

# ..:代表上一层文件夹

from .m1 import f1

from .m2 import f2

from .m3 import f3

from .bbb.m4 import f4

"""

强调:

1、相对导入只能在包内部使用,用相对导入不同目录下的模块是非法的

2、无论是import还是from import,但凡是在导入时带点的,点的左边必须是包,否则语法错误

3、绝对导入是没有任何限制的,所以绝对导入是一种通用的导入方式

"""

3、from 包 import *

在使用包时同样支持from pool.futures import *

* 代表的是futures下__init__.py中所有的名字,通用是用变量__all__来控制*代表的意思

需要说明一点,包内部的目录结构通常是包的开发者为了方便自己管理和维护代码而创建的

这种目录结构对包的使用者往往是无用的,此时通过操作__init__.py可以“隐藏”包内部的目录结构,降低使用难度,比如想要让使用者直接使用

import aaa

aaa.get()

需要操作sum下的__init__.py(提示: get在sum的aaa.py中):

from .aaa import get

五、软件开发的目录规范

Foo/

|-- core/ # 存放业务逻辑相关代码

| |-- core.py

|

|-- api/ # 存放接口文件,接口主要用于为业务逻辑提供数据操作。

| |-- api.py

|

|-- db/ # 存放操作数据库相关文件,主要用于与数据库交互

| |-- db_handle.py

|

|-- lib/ # 存放程序中常用的自定义模块

| |-- common.py

|

|-- conf/ # 存放配置文件

| |-- settings.py

|

|-- run.py # 程序的启动文件,一般放在项目的根目录下,因为在运行时会默认将运行文件所在的文件夹作为sys.path的第一个路径,这样就省去了处理环境变量的步骤

|-- setup.py #安装、部署、打包的脚本。

|-- requirements.txt # 存放软件依赖的外部Python包列表。

|-- README # 项目说明文件

README的内容:

1、软件定位,软件的基本功能;

2、运行代码的方法: 安装环境、启动命令等;

3、简要的使用说明;

4、代码目录结构说明,更详细点可以说明软件的基本原理;

5、常见问题说明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【youcans 的 OpenCV 例程200篇】150. 边缘检测梯度算子

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 【youcans 的 OpenCV 例程200篇】150. 边缘检测梯度算子 2. 点、线和边缘检测 本节基于图像灰度的不连续性,讨论根据灰…

计算字符串长度

字符串是任意类型任意数字组成的一段字符,那么我们如何计算此段字符串的长度呢??? 结果演示 代码演示 package com.four;import java.util.Scanner; public class Long {public static void main(String[] args) {Scanner inpu…

【youcans 的 OpenCV 例程200篇】151. 边缘检测中的平滑处理

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 【youcans 的 OpenCV 例程200篇】151. 边缘检测中的平滑处理 2. 点、线和边缘检测 2.4 边缘检测的常用梯度算子 边缘检测的基本方…

排序 从小到大输出

根据控制台文本提示输入三个数字,控制台会按照从小到大的顺序输出。 结果演示 代码演示 package com.four;import java.util.Arrays; import java.util.Scanner; public class Paixu {public static void main(String[] args) {Scanner input new Scanner(Syste…

c语言uint32_使C语言实现面向对象的三个要素,你掌握了吗?

编排 | strongerHuang微信公众号 | strongerHuang不知道有多少人去了解过语言的发展史,早期C语言的语法功能其实比较简单。随着应用需求和场景的变化,C语言的语法功能在不断升级变化。虽然我们的教材有这么一个结论:C语言是面向过程的语言&am…

【youcans 的 OpenCV 例程200篇】152. 边缘检测之 LoG 算子

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 【youcans 的 OpenCV 例程200篇】152. 边缘检测之 LoG 算子(Marr-Hildreth 算法) 2.5 LoG 边缘检测算子&…

python足球大数据分析_使用Python抓取欧洲足球联赛数据进行大数据分析

背景Web Scraping在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤数据的采集和获取数据的清洗,抽取,变形和装载数据的分析,探索和预测数据的展现其中首先要做的就是获取数据&#xff0…

【youcans 的 OpenCV 例程200篇】153. 边缘检测之 DoG 算子

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中 【youcans 的 OpenCV 例程200篇】153. 边缘检测之 DoG 算子 2.6 DoG 边缘检测算子 LoG 算子的计算量较大,可以通过数学…

目标检测_目标检测: AnchorFree 时代

本文转载自Smarter。自从2018年8月CornerNet开始,Anchor-Free的目标检测模型层出不穷,最近达到了井喷的状态,宣告着目标检测迈入了Anchor-Free时代。其实Anchor-Free并不是一个新概念了,大火的YOLO算是目标检测领域最早的Anchor-F…

热点地图

使用H5制作一个中国的热点地图&#xff0c;地图上标识出的地方会有波纹向四周散发的动态效果。 效果演示 代码演示 <!DOCTYPE html> <html xmlns"http://www.w3.org/1999/xhtml"><head><meta http-equiv"Content-Type" content&qu…

【youcans 的 OpenCV 例程200篇】154. 边缘检测之 Canny 算子

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程200篇】154. 边缘检测之 Canny 算子 2.7 Canny 边缘检测算法 Canny 算法希望在提高边缘的敏感性的同时抑…

段码液晶屏笔段电压范围_LCD段码(笔段)液晶显示屏和点阵液晶显示屏

液晶显示屏简称LCD屏&#xff0c;主要材料为液晶。液晶是一种有机材料&#xff0c;在特定温度范围内&#xff0c;既有液体流动性又有某些光学特性&#xff0c;其透明度和颜色随电场、磁场、光及温度等外界条件的变化而变化。液晶屏是一种被动式显示器件&#xff0c;液晶本身不会…

按规律插入一个数字到数组中

根据控制台的文本提示输入一个数&#xff0c;程序会把这个数按照规律插入到原来已经存在的数组中&#xff0c;并且会输出此数组。 结果演示 代码展示 package com.five;import java.util.Scanner;public class Crpx {public static Scanner input new Scanner(System.in);p…

【youcans 的 OpenCV 例程200篇】155. 边缘连接的局部处理方法

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程200篇】155. 边缘连接的局部处理方法 2.8 局部处理连接边缘 在实际应用中&#xff0c;由于噪声、光照等原…

hadoop yarn 获取日志_Hadoop YARN配置参数剖析(2)—权限与日志聚集相关参数

注意&#xff0c;配置这些参数前&#xff0c;应充分理解这几个参数的含义&#xff0c;以防止误配给集群带来的隐患。另外&#xff0c;这些参数均需要在yarn-site.xml中配置。1. 权限相关配置参数这里的权限由三部分组成&#xff0c;分别是&#xff1a;(1)管理员和普通用户如…

【youcans 的 OpenCV 例程200篇】156. 边缘连接局部处理的简化算法

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列&#xff0c;持续更新中 欢迎关注 『youcans 的 OpenCV学习课』 系列&#xff0c;持续更新中 【youcans 的 OpenCV 例程200篇】156. 边缘连接局部处理的简化算法 2.8 局部处理连接边缘 在实际应用中&#xff0c;由于噪声、光照…

时间索引 mysql_mysql时间类型和表定义及索引定义

3.表定义基本形式&#xff1a;create table 【if not exists】 表名 ( 字段列表 【&#xff0c;索引或约束列表】) 【表选项列表】&#xff1b;或&#xff1a;create table 【if not exists】 表名 (字段1&#xff0c;字段2&#xff0c;....【&#xff0c;索引或约束1&…

矩阵对角线元素之和

根据控制台文本内容的提示输入9个数字&#xff0c;这九个数字将会组成一个3*3的矩阵&#xff0c;程序会计算出你输入的矩阵的对角线之和。 结果演示 代码演示 package com.five;import java.util.Scanner;public class Juzhen {public static Scanner input new Scanner(Sy…

计算机设计大赛国奖作品_5. 模拟退火求解旅行商问题

计算机设计大赛国奖作品_5. 模拟退火求解旅行商问题 本系列是2021年中国大学生计算机设计大赛作品“环境监测无人机航线优化”的相关文档&#xff0c;获得2021年西北赛区一等奖&#xff0c;国赛三等奖。学生习作&#xff0c;只供大家参考。 计算机设计大赛国奖作品_1. 项目概要…

mysql master-user_【MySQL】MySQL5.6数据库基于binlog主从(Master/Slave)同步安装与配置详解...

主从数据库同步原理image.png主从数据库同步工作原理(流程)&#xff1a;当主库的数据发生修改时&#xff0c;数据更改的记录将写入到主库的二进制文件中&#xff0c;从库此时将会调用一个IO线程读取主库的二进制文件&#xff0c;并与中继日志作对比&#xff0c;并将存在差异的事…