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

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 是软件说明之类的软件信息

 

以上为本次学习内容

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值