Python入门学习 DAY16 模块导入\软件开发目录规范

「Python」时间模块之datetime模块 os模块 sys模块 jason模块 时间模块之datetime模块 os模块 sys模块 jason模块 阅读详情

Python入门     

DAY 16

今日内容:模块循环导入,区分python文件的两种用途,模块的搜索路径(相对路径和绝对路径),软件开发的目录规范

1.模块循环导入问题

循环导入是在模块之间的,但是模块的循环导入不一定会出错

举一个错误的例子:

有一个模块m1和模块m2代码如下

#模块m1
print('正在导入m1')
from m2 import y
x='m1'
#模块m2
print('正在导入m2')
from m1 import x
y='m2'

错误原因:m1会在自身代码没有全部执行之前,进入了m2的代码体,然而这时m2中的导入的m1的x值是没有在m1的名字空间创建的,所以会报错:cannot import name 'x'

解决这个问题有两种方法

方法一:将导入模块的代码放在赋值变量之后,这样就可以在进入m2之前,创建x,那么在m2中就能导入m1的x了

代码如下:

#模块m1
print('正在导入m1')
x='m1'
from m2 import y

方法二:利用函数定义阶段只检测语法不执行的特性来解决这一问题 

代码如下:

#模块1
print('正在导入m1')
def func1():
    from m2 import y
x='m1'

2.区分python文件的两种用途

文件被执行和文件被导入

python编写的文件中有一个__name__的内置函数

当在m1中运行此代码print(__name__)就会返回一个值为__main__,说明这个文件被执行了

#m1.py
print('run')
print(__name__)

当做run.py文件中导入m1时,那么m1中的print(__name__) 返回的就是m1(模块名),也就是说明了m1文件被导入了

#run.py
import m1

3.模块的搜索路径

导入模块的搜索路径有3个  先是搜索内存  其次搜索内置模块 最后搜索sys.pyth

sys是一个内置的模块 sys.pyth是系统的一个环境路径我们可以通过以下代码得出sys.pyth的路径内容

#run.py
import sys
print(sys.path)

会得到一个路径列表

一般来说,基于sys.pyth中的路径去搜索的都为绝对路径

绝对路径

我们说一个文件导入另一个文件只需要 import 模块名 列如: 在run.py 中 可以通过 import m1 就可以导入模块m1 可以使用m1的功能,但是这是基于2个文件处于同一文件夹下时可以这样导入 但是

如果m1放在和run.py同级的dir1的文件夹下我们要如何去导入m1?

我们可以通过二种方式实现

方式一:import dir1.m1   在导入的模块前加上模块上级文件的文件名即可

方式二:我们可以在sys.path中添加模块所在的文件名称,这样导入时就能找到dir1下的模块m1

#run.py
import sys
sys.path.append(r'E:\python\oldboy_py_03\8月\day16\03 模块的搜索路径\dir1')
import m1

相对路径

相对路径是通过  .  的方式,   一个 '.'   表示在当前目录   二个   '..'  表示当前文件上级目录   三个 '...' 就是表示当前文件上级目录的上级目录 以此类推 

注意:相对路径导入是不能用在执行文件的,只能用在模块中去导入其他模块

例:m1 和 m2 在同一文件目录下,那么m1 可以 通过 from . import m2 来导入m2 ,注意:2个模块如果在包中的话,这样写就会出错

4.软件开发的目录规范

例:按照软件开发的目录规范,为图书管理系统建立一套规范的目录结构,并总结个目录结构的功能

bin 用于存放可执行文件

conf 用于存放配置文件,全局性的变量之类

lib 库文件,用于存放自定义的模块和包

core 用于存放核心逻辑代码

log 用于存放日志文件

db 用于存放数据库信息,数据库操作

Readme 是软件说明之类的软件信息

 

以上为本次学习内容

day 1 python人机交互&&代码规范 3 人机交互 3.1 让计算机开口说话 print(输出内容) #可以是数字和字符串,字符串需要用引号(单、双、三)括起来 例子 a=3 b=5 print(3) print(a) print(a+b) print('你好') 默认输出完毕会换行 若想要一次输出多个内容,而且不换行可使用英文半角逗号把待输出的内容分开 print('你好',a,b) #输出内容之间会自动加入空格 数字转字符: print(chr(97)) #数字转字符 字符转数字: ... 阅读详情

相关推荐

STM32Cubemx-H7-17-麦克纳姆轮驱动

我们先看.h,知道哪些函数会有哪些功能和宏定义参数首先 是在.h的宏定义处定义引脚编号,比如tb6612控制方向的引脚,以及设定了哪个定时器作为pwm输出,还有编码计次的中断引脚/* 硬件相关宏定义 *//*1 前进方向往上 42 3*/// TB6612 方向引脚定义/* 定时器相关宏定义 *//* 编码器相关宏定义 */把自己的引脚根据原理图填对应,方向引脚也是,如果发现反转就把对应的引脚定义反过来,编码也是,编码我们用一个引脚就好,都在cubemx配置好。

m0_74211379的博客 1420

2024年Python开发规范

pylint是一个在Python源代码中查找bug的工具。对于C和C++这样的不那么动态的语言,这些bug通常由编译器来捕获。由于Python的动态特性,有些警告可能不对,不过伪告警应该很少。模块间共享代码的重用机制。异常是一种跳出代码块的正常控制流来处理错误或者其它异常条件的方式。定义在模块级的变量。类可以定义在方法,函数或者类中;函数可以定义在方法或函数中;封闭区间中定义的变量对嵌套函数是只读的。

2401_84556480的博客 571

云桌面如何部署?云桌面系统方案部署详细教程

云桌面作为一种比较新的技术工具,核心解决的场景是方便设计师的灵活办公,本身技术就是非常的灵活性,所以在安装部署方面青椒云也做到了十足的灵活。

2301_79113726的博客 1633

Python开发规范

遵循这些Python开发规范,可以使你的代码更加规范、整洁,便于自己和其他开发人员理解和维护。

软件行业技术文化交流。 2018

港口集装箱码头运营FlexSim仿真

列队4中的集装箱会根据不同类型的集装箱会放置在不同的堆场,因此根据前面对集装箱设置的标签Type的数值不同,设置不同的发送端口。集装箱到达列队3后,会有70%的集装箱到达堆场,30%的集装箱运出港口,因此在Queue列队3的Flow界面设置按照百分比发送端口,其中70%发送到端口1,即发送到列队4等待进入堆场,30%发送到端口2,即发送至出闸口。通过上述对比表格可以看出,当集卡数量在10的时候,岸桥和场桥的设备利用率达到了最高,当集卡数量为12的时候场桥1和场桥3的利用率有所下降,因此综合考虑。

m0_72514516的博客 1331

152:vue+leaflet 判断一个点是否在一个电子围栏内

本文介绍了一个基于Vue+Leaflet的示例,演示如何判断点是否在电子围栏内。作者大剑师兰特(优快云知名博主)展示了使用polygon.getBounds().contains(latlng)方法检测点与多边形边界的关系。代码仅需80行,通过点击地图触发判断逻辑,结果显示提示信息。该技术可广泛应用于地理围栏、位置服务等场景,需要安装turf依赖。文章提供了完整源码和配置说明,适合GIS开发者学习参考。

大剑师兰特的GIS世界 756

【python知识点】项目开发规范

文章摘要:本文介绍了Python项目开发的三种规范结构。单文件应用需注意文件注释、导入顺序、函数注释和TODO标记;单可执行文件建议分为app.py、config.py、db、files、src和utils等模块;多可执行文件推荐采用bin、config、db、files、src和utils的分层结构。这些规范有助于提高代码可维护性和专业性,使项目结构清晰、配置集中、功能模块化。附有示例项目crm.zip和killer.zip供参考。

2501_93043280的博客 329

“华为杯”研究生数学建模竞赛2020年-【华为杯】D题:无人机集群协同对抗(附获奖论文和MATLAB代码实现)

1.问题重述摘 要:本文针对非线性约束条件下红蓝双方无人机集群协同对抗的最优规划问题,结合贪婪队形、非线性规划、内点法、蒙特卡洛方法和全联立正交配置有限元法,构建了无人机集群协同对抗推演模型。,构建了。我们综合考虑了,和。首先分析红方在集群约束下的贪婪队形和拦截策略,然后我们基于内点法联合MATLAB和AMPL编程求解蓝方突防的非线性规划解,最后基于蒙特卡洛法对整个蓝方突防过程进行推演,得到突防概率图。通过推演,我们提出了两块的区域作为所求区域,并对蓝方的最优突防策略进行分析。

getusushu的博客 1550

关于Python:8. Python项目开发与代码规范

模块化是让代码结构清晰、易维护、可扩展的关键。哪怕是小项目,也应该有像样的模块划分,才能快速扩展新功能,不至于一团乱麻。项目unittestpytest语法风格面向类面向函数使用复杂度较繁琐更简洁插件生态基本没有非常丰富推荐程度仅限官方保守项目推荐实战技巧场景logging 推荐做法控制台调试使用日志保存使用多模块使用封装多级别日志使用和防止重复添加日志格式统一使用替代方案和日志框架框架说明loguru更现代,语法极简,自动格式化、文件轮转structlog。

Triste__chengxi的博客 1741

[Python从零到壹] 十四.机器学习之分类算法五万字总结全网首发(决策树、KNN、SVM、分类对比实验)

分类(Classification)属于有监督学习(Supervised Learning)中的一类,它是数据挖掘、机器学习和数据科学中一个重要的研究领域。分类模型类似于人类学习的方式,通过对历史数据或训练集的学习得到一个目标函数,再用该目标函数预测新数据集的未知属性。本章主要讲述分类算法基础概念,并结合决策树、KNN、SVM分类算法案例分析各类数据集,从而让读者学会使用Python分类算法分析自己的数据集,研究自己领域的知识,从而创造价值。 19.1 分类 19.1.1 分类模型 与前面讲述的聚类模型类似

杨秀璋的专栏 2万+

基于STM32L4XX、HAL库的STS40-CD1B-R3温度传感器 驱动程序设计

/ HAL库需要左移一位。// 每2秒读取一次。// 等待测量完成 - 高精度模式大约需要15ms。// 执行软复位确保传感器处于已知状态。温度测量范围:-40°C ~ +125°C。湿度测量范围:0% ~ 100% RH。// 复位后需要等待至少1ms。// 初始化STS40传感器。// 读取温湿度数据。// 转换原始数据为实际值。// 发送读取序列号命令。// 读取序列号数据。湿度精度:±1.5% RH。

zhusl6688的博客 287

python开发规范文档

以上是 Python 开发的详细规范文档,希望能够帮助您和您的团队在开发过程中保持代码的一致性和高质量。

jixiaoyu0209的博客 2818

嵌入式面经篇八——进程&线程

记录一些招聘公司在招聘嵌入式软件岗位时的一些问题,此文为第八篇。进程上文:是指进程由用户态切换到内核态时需要保存用户态时CPU寄存器中的值,进程状态以及堆栈上的内容。即保存当前进程的状态,以便再次执行该进程时,能够恢复切换时的状态,继续执行。进程下文:是指切换到内核态后执行的程序,即进程运行在内核空间的部分。中断上文:硬件通过中断触发信号,导致内核调用中断处理程序,进入内核空间。这个过程中,硬件的一些变量和参数也要传递给内核,内核通过这些参数进行中断处理。

明天你好的博客 1854

python软件开发目录_python 之 软件开发目录规范 、logging模块

6.4 软件开发目录规范软件(例如:ATM)目录应该包含:文件名存放备注binstart.py,用于起动程序coresrc.py,程序核心功能代码confsettings.py, 程序配置信息dbdb.txt 数据库信息libcommon.py ,存放常用功能logaccess.log ,存放记录start.py :import sys,os ...

weixin_36019375的博客 234

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...

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

循环导入问题,区分python文件的2种用途,模块的搜索路径与查找优先级,软件开发目录规范

day17一.循环导入问题二.区分python文件的2种用途三.模块的搜索路径与查找优先级(1)先从内存中已经导入的模块里找(2)然后再查找内置的模块(3)最后去sys.path列表中存放的多个文件夹里依次检索四.软件开发目录规范 一.循环导入问题 循环导入问题指的是在一个模块加载,导入的过程中导入另外一个模块 而在另外一个模块中又返回来导入第一个模块中的名字,由于第一个模块尚未加载完毕,所以引用失败,抛出异常 # 循环导入: run.py导入m1模块 m1模块导入m2模块 m2模块导入m1模块 # 循环

yikenaoguazi的博客 236

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

入门学习 DAY16 模块导入\软件开发目录

Python入门      DAY 16 今日内容:模块循环导入,区分python文件的两种用途,模块的搜索路径(相对路径和绝对路径),软件开发的目录规范 1.模块循环导入问题 循环导入是在模块之间的,但是模块的循环导入不一定会出错 举一个错误的例子: 有一个模块m1和模块m2代码如下   #模块m1 print('正在导入m1') from m2 im...

qq_38459897的博客 186

day 16 循环导入问题 模块搜索路径的优先级 软件开发目录规范 包的使用 ATM简单部署

day 16 循环导入问题 模块搜索路径的优先级 软件开发目录规范 包的使用 ATM简单部署 1.循环导入问题 循环导入问题指的是在一个模块加载/导入的过程中导入另外一个模块,而在另外一个模块中又返回来导入第一个模块中的名字,由于第一个模块尚未加载完毕,所以引用失败、抛出异常,究其根源就是在python中,同一个模块只会在第一次导入时执行其内部代码,再次导入该模块时,即便是该模块尚未完全加载完毕也不会去重复执行内部代码 解决方法:导入语句放到最后,保证在导入时,所有名字都已经加载过 解决方法2:导入语句

qq_1617271856的博客 155

【Python-Day 16】代码复用基石:详解 Python 函数的定义与调用

本文是Python学习系列的第16天,重点介绍了函数的概念及其重要性。函数是组织好的、可重复使用的代码段,能够提高代码的复用性、模块化和可读性。通过将重复的逻辑封装到函数中,开发者可以避免代码冗余,简化维护工作。文章通过示例展示了如何定义和调用函数,并强调了函数在实践DRY(Don't Repeat Yourself)原则中的作用。此外,函数还能将复杂问题分解为更小的任务,使程序结构更清晰、易于管理。本文为初学者提供了函数的基础知识,帮助读者理解其在编程中的核心作用。

吴师兄大模型的博客 2333

day16 序列化、hashlib、collections和软件开发规范

目录 day16 序列化、hashlib、collections和软件开发规范 今日内容 昨日回顾 今日内容详细 序列化 hashlib模块 collections模块 软件开发规范 ...

291

9/16 知识总结(名字查找顺序、导入、包的使用和正则表达式)

就是文件夹,其实就是文件夹中包含了一些列的py文件(模块)

weixin_66010453的博客 72

Python学习日志9.16

包名字的查找顺序 绝对导入和相对导入 包的使用 正则表达式

safvirtu的博客 139

模块的导入

模块的种类 1、内置模块 2、自定义模块 3、第三方模块 注意: py:里面叫模块 其他:里面叫类库 模块的存在方式 1、先导入,后使用。 2、大模块就是文件夹,小模块就是文件。 模块的使用方式 1 1、导入整个模块,并定义别名 (单模块的导入,推荐使用方式) 2 import module1 as s1 3 4 调用方法:m...

weixin_30556959的博客 105

python学习day16

python学习day17 # 1.json数据格式的作用 “”" json和xml是两种通用的数据格式,几乎所有的高级编程语言都支持。 json和xml数据的格式的存在,是为了让不同编程语言的程序可以进行有效的数据沟通 “”" # 2. json数据格式 “”" json数据格式的要求:1)一个json有且只有一个数据 2)唯一的这个数据必须是json支持的数据类型的数据 json支持的数据类型: 数字 - 表示的时候直接写,并且支持科学计数法,例如:23、3.89、3e4 字符串 - 表示的

qq_44981522的博客 135

python入门

字符串(string),又称文本,是由任意数量的字符如中文、英文、各类符号、数字等组成。所以叫做字符的串如:"abcde""原神,启动!"123 木头人"都是字符串name = "小李"name2 = '小刘'# # 为了解决上面的问题可以采用# 里面如果有单引号,外面就用双引号,反之亦然# 使用转义符将需要原样输出的内容转义 转义符:\# 换行 \n")# 缩进 \t")# 因为路径中出现了\n以及\t默认就会被python理解为你要转义。

Y0UZI的博客 1180

《从练习到应用:day16_接口加强练习中的可复用代码设计》

通过“day16_接口加强练习”,我们学会了如何设计可复用代码:从定义接口契约,到实现模块化,再到应用依赖注入。这种设计不仅提升代码质量,还加速开发流程。读者可尝试扩展练习,如添加新接口方法或集成测试框架。记住,优秀的代码设计源于持续练习和实际应用迭代。

sghjcnmvnk的博客 757

Python模块机制详解:从基础概念到高级应用

模块化编程是现代软件开发的核心范式,Python通过模块系统实现了代码的高效组织与复用。从技术原理看,模块本质上是包含Python定义和语句的文件,通过导入机制被整合到运行时环境中。这种设计带来了显著的工程价值:避免命名冲突、提升代码可维护性、支持团队协作开发。在实际应用中,模块系统支撑了从简单的脚本到复杂框架的开发,如Flask等Web框架都基于模块化架构。理解模块的导入路径搜索、缓存机制以及__name__等特殊属性,是掌握Python工程化开发的关键。通过标准库os、sys等模块的典型应用,开发者可以

weixin_30699955的博客 449
上一篇: Python入门学习 DAY15 模块
下一篇: Python入门学习 DAY17 常用模块
A_GooD_CanceR
博客等级 码龄8年 23粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值