python文件组织:包(package)、模块(module)、文件(file)

包:

模块所在的包,创建一个包用于组织多个模块,包文件夹中必须创建一个名为’__init__.py’的文件,以将其识别为包,否则只能算作是一个普通的目录。在使用该包时,init自动执行。

包可以多层嵌套,以层级方式组织。

init方法可以是空文件,也可以用于初始化。

导入包中的模块:import package.module

例子:

test.py

package_runoob

|-- __init__.py

|-- module1.py

|-- module2.py

模块

模块就是包含python代码的文本文件,以py结尾。文件中可以包含类、函数、变量等。但是实际上狭义上应当把实现了具体功能的py文件视作模块。

导入模块:

  1. import 模块名称

只能导入模块,不能导入函数、变量

  1. import 模块名称 as 模块名称别名
  2. form moduleName import *

可以导入模块、函数、变量

例如:

导入模块

from package1 import module1

导入变量

from package1.module1 import var3

导入函数 say_bye是函数名,注意不加括号和参数,只有名字

from package1.module1 import say_bye

导入类 Animal是类名

from package.module1 import Animal

但是,不能只导入类中的函数,却不导入类,如下错误:Dog是类,say_hi是其中函数

from package.module1 import Dog.say_hi

导入模块下所有内容:

from package.module1 import *

  1. 导入时换行:使用关键字反斜线 \

from package1.module1 import var1,var2,var3,var4,var5,\

var6,var7

  1. 相对导入和绝对导入

绝对导入:必须从顶级包开始,依次到指定导入内容。

相对导入:.表示当前目录,..上一级目录。

import不能使用相对导入,如import .package2.package4.m2。

入口文件不可以使用相对路径来导入模块,只能使用绝对路径。

python -m main.py 将入口文件当作一个模块执行,则可以使用相对路径导入模块。

  1. 导入时的写法:

导入顺序是:标准库模块--第三方模块--自定义模块。

  1. 一些项目中共用的需要导入的内容,可以放到包的init中导入
  2. 导入时,搜索文件的顺序如下依次:

当前文件目录、环境变量 PYTHONPATH、sys.path(list 类型)

模块中类可以包含函数、变量。这样形成多个层级的组织形式。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 ReclaiMe Pro 进行 RAIDZ 数据恢复

天津鸿萌科贸发展有限公司是 ReclaiMe Pro 数据恢复软件授权代理商。 ZFS 是一个开源文件系统,主要用于 FreeNAS 和 NAS4Free 存储系统。在开发 ZFS 时,主要目标是可靠性,这是通过写时复制、冗余元数据、日志等不同功能来实现的。ZFS 使用自…

Redis核心数据结构之跳跃表

跳跃表 概述 跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。在大部分情况下&am…

VB 数据质量诊断软件(分析数据的完整性,合理性,准确性)-139-(代码+程序说明)

转载地址http://www.3q2008.com/soft/search.asp?keyword139 前言: 为何口出狂言,作任何VB和ASP的系统, 这个就是很好的一个证明 :) 又有些狂了... 数据库操作谁都会,接触的多了也没什么难的,VB编程难在哪?算法上,这个是一个算法题的毕业设计 哈哈忙活了足足有一○小时, …

C++进阶之路---多态(一)

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、多态的概念 1.概念 多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为…

IPSec NAT穿越原理

一、IPSec VPN在NAT场景中存在的问题 当某些组网中,有的分支连动态的公网IP地址也没有,只能由网络中的NAT设备进行地址转换,才能访问互联网,然而IPsec是用来保护报文不被修改的,而NAT需要修改报文的IP地址&#xff0c…

9、组合模式(结构性模式)

组合模式又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构,以一致的方式处理叶子对象以及组合对象,不以层次高低定义类,都是结点类 一、传统组合模式 举例,大学、学院、系,它们…

崇法致行法律知识竞赛活动方案

赛程安排分两天,两场进行。 第一天(第一场)(初赛) 共 16 个二级分行,每行三人,共16 个战队参赛。 第一轮——必答轮 在大屏幕上显示10个选择题(5个单选、5个多选)&…

docker安装ollama

拉取镜像 docker pull ollama/ollama 运行容器 (挂载路径 D:\ollama 改成你自己喜欢的路径) CPU only docker run -d -v D:\ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama Nvidia GPU(没试过这个) doc…

Vue脚手架

Vue脚手架 学习目标: 理解Node.js基本使用方法理解包资源管理器NPM的使用理解webpack的作用理解 vue-cli 脚手架 (重点)Element-UI 组件库 1.vue的格式:new Vue({//作用的视图el:"id选择器",//vue中的数据/*data:{key:value,key:value,...}…

判断链表回文

题目&#xff1a; //方法一&#xff0c;空间复杂度O(n) class Solution { public:bool isPalindrome(ListNode* head) {vector<int> nums; //放进数组后用双指针判断ListNode* cur head;while(cur){nums.emplace_back(cur->val);cur cur->next;}for(int i0…

Microsoft SQL Server 编写汉字转拼音函数

目录 应用场景 举例 函数实现 小结 应用场景 在搜索应用中&#xff0c;我们一般会提供一个搜索框&#xff0c;输入关健字&#xff0c;点击查询按钮以获取结果数据。大部分情况我们会提供模糊查询的形式以在一个或多个字段进行搜索以获取结果。这样可以简化用户的操作&…

高分1、2号卫星原始遥感影像数据

高分一号 高分一号卫高分一号卫星是中国高分辨率对地观测系统的首发星&#xff0c;突破了高空间分辨率、多光谱与宽覆盖相结合的光学遥感等关键技术&#xff0c;设计寿命5至8年。 高分辨率对地观测系统工程是《国家中长期科学和技术发展规划纲要(2006&#xff5e;2020年)》确定…

专题二 - 滑动窗口 - leetcode 1004. 最大连续1的个数 III | 中等难度

leetcode 1004. 最大连续1的个数 III leetcode 1004. 最大连续1的个数 III | 中等难度1. 题目详情1. 原题链接2. 基础框架 2. 解题思路1. 题目分析2. 算法原理3. 时间复杂度 3. 代码实现4. 知识与收获 leetcode 1004. 最大连续1的个数 III | 中等难度 1. 题目详情 给定一个二…

Linux之线程控制

目录 一、POSIX线程库 二、线程的创建 三、线程等待 四、线程终止 五、分离线程 六、线程ID&#xff1a;pthread_t 1、获取线程ID 2、pthread_t 七、线程局部存储&#xff1a;__thread 一、POSIX线程库 由于Linux下的线程并没有独立特有的结构&#xff0c;所以Linux并…

蓝牙系列十一:HCI层的数据格式

HCI层作为Host和Controlor链接的接口存在。以下是对HCI层的数据格式的解析。 1、参考&#xff1a;蓝牙协议core_v5.0.pdf 《Vol 2: Core System Package [BR/EDR Controller volume]》的“Part E: Host Controller Interface Functional Specification” 2. 协议栈框图 对于被…

Linux:kubernetes(k8s)pod的基础操作(6)

Linux&#xff1a;kubernetes&#xff08;k8s&#xff09;允许在任意节点使用kubectl命令&#xff08;5&#xff09;-CSDN博客https://blog.csdn.net/w14768855/article/details/136460090?spm1001.2014.3001.5501 我在前两张进行了基础环境的一系列搭建&#xff0c;现在就正…

NIFI从Oracle11G同步数据到Mysql_亲测可用_解决数据重复_数据跟源表不一致的问题---大数据之Nifi工作笔记0065

首先来看一下整体的流程: 可以看到了用到了上面的这些处理器,然后我们主要看看,这里之前 同步的时候,总是出现重复的数据,奇怪. 比如源表中只有166条数据,但是同步过去以后变成了11万条数据了. ${db.table.name:equals(table1):or(${db.table.name:equals(table2)})} 可以看…

职场成功的关键:积极主动,勇于担当

在职场中&#xff0c;每个人都渴望成功。然而&#xff0c;成功并非一蹴而就&#xff0c;而是需要我们在日常工作中不断积累、锻炼和提升。本文将为您揭示职场成功的关键因素&#xff0c;帮助您在职场道路上越走越远。 一、积极主动&#xff0c;主动承担责任 在职场中&#xff0…

吴恩达机器学习笔记十六 如何debug一个学习算法 模型评估 模型选择和训练 交叉验证测试集

如果算法预测出的结果不太好&#xff0c;可以考虑以下几个方面&#xff1a; 获得更多的训练样本 采用更少的特征 尝试获取更多的特征 增加多项式特征 增大或减小 λ 模型评估(evaluate model) 例如房价预测&#xff0c;用五个数据训练出的模型能很好的拟合这几个数据&am…

RocketMQ入门指南:从零开始学习分布式消息队列技术

RocketMQ 1. MQ介绍1.1 为什么要用MQ1.2 MQ的优点和缺点1.3 各种MQ产品的比较 2. RocketMQ快速入门2.1 准备工作2.1.1 下载RocketMQ2.2.2 环境要求 2.2 安装RocketMQ2.2.1 安装步骤2.2.2 目录介绍 2.3 启动RocketMQ2.4 测试RocketMQ2.4.1 发送消息2.4.2 接收消息 2.5 关闭Rocke…