Python工程师Java之路(p)Module和Package

Python模块导入机制深度解析:从ModuleNotFoundError到sys.meta_path Python模块导入远不止import语句的语法层面,其本质是解释器基于sys.path路径搜索、模块编译加载、命名空间注入的动态资源绑定过程。理解import背后六阶段执行链(字符串解析→路径搜索→文件定位→字节码编译→模块执行→符号注入),是解决ModuleNotFoundError、ImportError和相对导入失败等高频问题的技术根基。该机制直接关联虚拟环境隔离、包结构设计、IDE路径配置及容器化部署等工程实践场景。本文聚焦Python 3模块系统的运行时行为,结合sys.path调试、impor 阅读详情

Module通常译作模块,Package通常译作包

1、Python的Module和Package

  • Python模块(Module):1个以.py结尾的文件
    在模块中可定义的变量、函数、类以供外部使用
    如:from 包.模块 import 函数、from 包 import 模块、import 模块
  • Python包(Package):实质上是1个目录(Directory)
    在包被导入时,包里的__init__.py会被执行

创建Python的Package

创建完成后,文件夹里还有个__init__.py

2、Java的Module和Package

  • IDEA里,Project最高的存储目录,创建Project时伴随创建src和pom.xml
    创建完Project后可以不创建Model,也可在Project下创建多个Model
  • Module创建完成后会自带src和pom.xml
    在Module下可以创建多个Package
  • 在Package下可以创建多个Java类

IDEA中Project、Module、Package的关系

2.1、Module

使用IDEA在Project下创建Module

创建完Module后,Module中的pom.xml会有Module和Project间的继承关系

<parent>
    <groupId>org.example</groupId>
    <artifactId>project01</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

与此同时,最外层的pom.xml会添加modules信息和 <packaging>pom</packaging>

<packaging>pom</packaging>
<modules>
    <module>module01</module>
    <module>module02</module>
</modules>

也可在Module下创建Module,子Module将会继承父Module

2.1.1、分模块开发意义

增强项目的扩展性,方便其它项目引用相同的功能

各模块可由不同团队各自独立维护

将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享

2.1.2、模块的调用

module02想要调用module01,就要在module02的pom.xml添加依赖(去module01那粘贴)

<dependency>
    <groupId>org.example</groupId>
    <artifactId>module01</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

2.2、Package

Java的包可以是多层的文件夹,语法格式为:pkg1[.pkg2[.pkg3…]]

Java的Package

使用import可以调用Package中的类

import org.example.Main;

public class Hello {
    public static void main(String[] args) {
        Main.main(new String[]{""});
    }
}
Python核心语法精讲:从环境搭建到项目实战的完整指南 Python作为一门动态类型语言,其核心语法设计遵循简洁优雅的原则,通过变量动态绑定和自动内存管理机制实现高效的开发体验。在编程语言层面,Python支持面向对象、函数式编程等多种范式,这种技术价值使其在数据分析、Web开发、人工智能等领域广泛应用。理解Python数据结构如列表、字典的操作原理,掌握函数定义与面向对象编程的核心概念,是构建复杂应用的基础。本文通过环境搭建、基础语法、数据结构等热词内容,结合流程控制、异常处理等高频搜索关键词,为开发者提供从入门到精通的系统学习路径。 阅读详情

相关推荐

Python进阶实战:从语法到项目的深度转型与工程化实践

在编程学习的中期阶段,学习者常面临从掌握基础语法到解决实际问题的能力鸿沟。这一阶段的核心在于实现思维转型,即从孤立的知识点记忆转向系统化的工程实践。理解面向对象编程、装饰器、生成器等核心概念,并掌握其背后的设计原理,是构建复杂应用的基础。这些技术的价值在于提升代码的可维护性、可扩展性和执行效率。在实际开发中,通过项目驱动的方式,将模块化设计、依赖管理、单元测试等工程化实践融入学习路径,能有效巩固理论知识并培养解决真实场景问题的能力。本文以Python学习的中期阶段为例,探讨如何通过环境配置优化、核心语法深度

weixin_34375251的博客 559

React为何是全栈工程师的最佳能力触发器

全栈开发本质是前后端协同解决真实业务问题的能力,其核心在于理解HTTP协议、数据流一致性、环境耦合与可观测性等基础工程原理。React虽为前端框架,但凭借useEffect副作用管理、服务端渲染(SSR)支持、生态工具链(Vite/Next.js)对构建部署的深度集成,天然将后端问题(如认证鉴权、数据库事务、Docker容器化、CI/CD)以可调试错误的形式暴露在前端上下文中。这种‘问题即教学’机制,使React成为驱动全栈认知闭环的高效触发器——它不替代后端知识,而是将Node.js、PostgreSQL

dingguayi7025的博客 433

Python单元测试实战:从unittest入门到测试套件构建

单元测试是软件工程中确保代码质量的核心实践,它通过自动化验证代码单元的行为是否符合预期。其基本原理是隔离待测代码,使用断言机制对比实际输出与预期结果,从而快速定位问题。在Python生态中,unittest作为标准库测试框架,提供了xUnit风格的测试结构,包括TestCase、TestSuite和丰富的断言方法,为构建可靠测试体系奠定基础。掌握unittest不仅能提升代码健壮性,还能为后续使用pytest等更高级框架铺平道路。本文通过计算器测试实例,详解unittest的setUp/tearDown夹具

weixin_34343308的博客 612

模块(Module)、包(Package)、类(Class)

在 Java 中,有几个相关但不同的概念,包括包(Package)、模块(Module)、类(Class)。在 Java 9 模块系统中,有以下基本概念:模块(Module)、包(Package)、类(Class)。

weixin_50993868的博客 5524

Python虚拟环境选型指南:Pipenv与Conda实战对比

虚拟环境是Python工程化开发的基石,用于隔离项目依赖、保障版本一致性和环境可复现性。其核心原理在于为每个项目创建独立的Python解释器副本与包安装路径,避免全局site-packages引发的版本冲突与二进制不兼容问题。技术价值体现在提升协作效率、强化CI/CD稳定性、降低调试成本,并支撑微服务与多语言混合栈(如Python+R/CUDA)的可靠部署。典型应用场景包括Web后端(Flask/Django)、数据科学(PyTorch/NumPy)、机器学习服务及自动化脚本开发。本文聚焦Pipenv与Co

weixin_30664615的博客 393

Python生产部署实战:WSGI/ASGI选型与Gunicorn深度配置

Python部署本质是构建可复现、可验证、可回滚的交付流水线,其核心在于理解WSGI与ASGI代表的两种并发模型——前者基于同步进程/线程,适合CPU密集型传统应用;后者依托异步事件循环,专为高并发I/O场景设计。技术价值体现在稳定性提升、资源利用率优化及故障隔离能力增强。典型应用场景包括Flask/Django(WSGI)与FastAPI/Starlette(ASGI)服务上线,尤其在金融、电商等对延迟和可靠性要求严苛的领域。本文聚焦gunicorn修改py代码自动重启失效、ubuntu deployin

lvwenwen 676

Java中的模块(Module)入门介绍

在Java 9版本中Java 语言引入了一个非常重要的概念:模块(module)。module引入了Java代码分组的另一个级别。每个module都包含许多子package(包)。模块是一组密切相关的包和资源以及一个新的模块描述符文件。...

cnds123的专栏 2万+

PyPy入门实战:Ubuntu下Python性能加速指南

Python解释器是执行Python代码的核心运行时环境,其性能直接影响计算密集型任务的执行效率与内存占用。CPython作为官方参考实现,采用传统解释执行模式,存在JIT缺失、GIL限制等固有瓶颈;而PyPy通过RPython重写解释器并集成即时编译(JIT)技术,在不修改源码前提下显著提升纯Python逻辑的执行速度与内存效率。其技术价值体现在对数值迭代、树遍历、正则匹配等场景的平均4倍加速,以及长期服务中35%~60%的内存峰值下降。典型应用场景包括数据清洗脚本、日志聚合服务、爬虫后端及Flask/D

weixin_34067102的博客 436

【idea】模块、包、类、接口

模块:组织和管理项目的子部分。包:组织和管理类,避免类名冲突,控制访问权限。类:定义对象的属性和行为,支持封装、继承和多态。接口:定义......

初学者个人学习记录、梳理 1594

Ubuntu 18.04 Python 3环境搭建:apt、venv与系统兼容性全解析

Python虚拟环境(venv)是现代Python开发的基础隔离机制,其核心原理是通过符号链接复用系统解释器并独立管理依赖路径,实现轻量级进程级隔离。在Ubuntu等Debian系发行版中,venv并非默认内置,而是依赖独立包(如python3.6-venv),这源于APT包管理的模块化设计哲学——将解释器与运行时功能解耦,以保障最小化安装和安全性。这种设计带来显著技术价值:提升系统可维护性、降低攻击面、支持多环境共存。典型应用场景包括服务器部署、CI/CD流水线、AI模型服务(如PyTorch需Pytho

weixin_34414650的博客 320

AFSim编译一:windows

AFSim在windows上的编译

Meepo的博客 4740

模块Modules和包Packages区别

模块可以是任何一个文件或目录(目录下可以有很多个文件),只要能被node.js require()即可 包是一个文件或目录(目录下可以有多个文件)必须要有一个package.json文件描述,可以就是一个包。 来自百度 2016-11-08 回答 1、什么是模块呢?我们可以简单的把它看成一个实现单独功能的文件。比如在前端JS中的jQuery.js,在node.js里,我们把它就看成一个模块的概念就...

玲曦的博客 3556

【学一点英飞凌】AutoSar-MCAL-Gtm-TOM模块

本文基于英飞凌TC3X7芯片手册,GTM的TOM模块是产生并输出PWM的地方,想要彻底了解PWM,就必须知道它是怎么产生和如何被输出的。TOM通道还没有介绍的,详见下一篇;

qq_44688936的博客 6031

Java中的项目结构简述(项目、模块、包、类)

Java中的项目结构简述(项目、模块、包、类)

AryCra_07的博客 1万+

内存越界一定会导致程序崩溃吗?详解内存越界

本文详细解释了内存越界不一定导致内存越界的问题,全面介绍了C++内存越界的相关内容。

dvlinker的技术专栏 2万+

R语言数据可视化:绘制世界地图的两种方案

本文介绍了两种使用R语言绘制世界地图的方案:包含边界边框和不包含边界边框。无论您选择哪种方案,使用ggplot2包和相关的地理数据包,我们可以轻松地绘制出漂亮的世界地图。R语言提供了丰富的包和函数,使我们能够轻松地绘制世界地图,并根据需求添加边界边框。在本文中,我将介绍两种绘制世界地图的方案:一种包含边界边框,一种不包含边界边框。在上述代码中,我们使用了与方案一相同的数据准备和地图绘制步骤,但省略了添加边界边框的代码。函数的调用,我们可以绘制不包含边界边框的世界地图。方案二:绘制不包含边界边框的世界地图。

CodeMaven的博客 2228

跨语言调用C++接口:从原理到Python/C#/Java/Node.js实践

在软件工程中,跨语言调用C++接口是连接高性能底层与业务逻辑的常见需求。其核心原理是解决符号命名修饰(name mangling)和数据内存布局不一致的问题,通过extern "C"将C++接口暴露为C风格二进制接口。借助pybind11、P/Invoke、JNI、N-API等绑定方案,开发者可以在Python、C#、Java、Node.js中复用C++库,显著提升开发效率。本文从二进制接口概念出发,剖析跨语言调用的技术价值,并结合字符串、数组、结构体、回调、内存所有权等高频场景,给出工程实践经验,帮助读者

weixin_33755557的博客 361

IgH EtherCAT 从入门到精通:第 5 章 多主站与系统集成配置

本文介绍了 EtherCAT 多主站配置与系统集成方法。主要内容包括: 多主站实例配置原理:通过内核模块参数指定多个主站设备,每个主站独立管理一条 EtherCAT 总线,最多支持32个主站实例。 配置文件详解:在/etc/ethercat.conf中通过MASTER<X>_DEVICE变量定义各主站绑定的网卡或MAC地址,支持冗余备份配置。 系统服务集成:提供了systemd服务单元文件和传统init.d脚本两种方式实现开机自启动和管理,并建议通过override文件定制服务依赖关系。 架构示

从事嵌入式linux android驱动开发,拥有全栈能力 355

FastAPI 学习教程(写给想学 FastAPI 的 Java 工程师的)

<think>好的,用户要求根据提供的FastAPI教程内容生成一个不超过150字的文章摘要。 需要快速概括教程的核心定位、目标读者、内容结构特点。教程的独特之处在于面向Java开发者,开篇有Python速成章节,用Java对照讲解,这一点比较关键,应该提到。目录涵盖了从基础到部署的十六个章节,也可以简要概括。 字数限制150字,需要非常精炼。摘要应该包括:教程定位(有编程基础学习者)、目标读者(Java开发者,无Python基础)、核心亮点(Java对照的Python速成章)、内容范围(路径操作、数据校验

热爱编程、热爱生活、热爱探索 457

【纯干货分享】常用高速接口眼图模板合集

文章汇集了常见的高速接口的信号眼图测试模板技术要求,比如,LPDDR5/4、PCIe 5.0/4.0、USB、MIPI等等,方便工程师快速进行查询和使用。

一只豌豆象的博客 3118

mapbox进阶,百度地图、高德地图纠偏,使用在线网络地图加载插件

本文详细介绍如何基于mapbox-gl v3.8.0版本百度地图、高德地图纠偏,使用在线网络地图加载插件,亲测可用。希望能帮助到您。一起学习,加油!加油!

我哎GIS博客 752

Python基础语法精要与核心概念解析

Python作为动态类型语言,其变量与数据类型机制是编程基础的核心。理解整型、浮点型等基本数据类型的存储原理,掌握运算符的短路特性与对象引用机制,是编写高效Python代码的前提。在工程实践中,合理的控制流程结构和函数设计能显著提升代码可维护性。本文深入解析Python基础语法的关键要点,包括变量作用域LEGB规则、参数传递机制等核心概念,帮助开发者规避常见陷阱,为后续学习面向对象编程和高级特性奠定坚实基础。

weixin_30535843的博客 415

32、社交媒体大数据中的情感分析与网络欺凌检测

本文探讨了社交媒体大数据在情感分析和网络欺凌检测中的应用。情感分析有助于应对自动化带来的社会变化、促进社会包容和推动环境保护。网络欺凌作为一种严重的在线危害,其检测依赖于数据预处理、特征提取与深度学习模型(如CNN、LSTM)进行分类。文章还总结了大数据在欺诈检测、医疗、制造、交通等领域的广泛应用,并分析了数据存储、处理速度、质量和技术工具等方面的挑战,提出了相应的应对策略。未来,随着技术进步,社交媒体大数据将在更多领域发挥关键作用。

cc789的博客 92

如何保护Python源码?从打包、混淆到加密字节码执行

在软件开发中,代码安全是一个重要的课题。Python 代码由于以源码形式直接部署到服务器并通过解释器执行,容易暴露其中的敏感信息,如 API 密钥、加密盐等。为了解决这一问题,开发者需要采取有效的措施对代码进行加密或保护。本文将详细探讨几种常见的方案,包括编译为可执行文件、生成字节码文件、代码混淆以及基于动态解密的自定义解释器等。这些方法各有特点,可根据实际需求选择适合的方案。第一种方法是编译为可执行文件。

General_zy的博客 3913

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Python单元测试框架unittest:从核心原理到工程实践

单元测试是软件工程中保障代码质量的核心实践,通过自动化验证代码单元的行为是否符合预期。其基本原理是将测试逻辑封装为可重复执行的代码片段,利用断言机制验证结果,从而实现测试的标准化与自动化。这一技术能显著提升代码的可靠性与可维护性,降低回归错误风险,是持续集成和敏捷开发流程的关键环节。在Python生态中,unittest框架作为标准库组件,提供了TestCase、TestSuite等核心构建块,并可通过setUp/tearDown实现测试固件管理。结合unittest.mock进行依赖隔离,能有效应对数据库

407

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

跨平台开发选型困境:硬件交互、构建分发与性能体验的权衡

跨平台开发已从单纯追求代码复用,演进为对全生命周期交付确定性的系统性挑战。其核心在于理解各框架在硬件直连能力(如SerialPort/MIDI)、构建链路稳定性(Electron打包、Flutter Gradle、Tauri交叉编译)及运行时体验(Flutter Isolate内存隔离、Web Audio低延迟、React Native Fabric初始化)上的本质差异。技术选型不再取决于‘能否实现’,而在于‘以何种成本保障物理设备兼容性、用户首次启动成功率与60fps帧率一致性’。真实业务场景——如跨平台

weixin_34268169的博客 257

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: 桃矢:我把魔力都给你,希望你保护好小樱,和你自己
下一篇: Python工程师Java之路(p)Maven聚合和继承
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值