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

阅读: 评论:0

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

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

Python入门     

DAY 16

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

1.模块循环导入问题

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

举一个错误的例子:

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

 
  1. #模块m1

  2. print('正在导入m1')

  3. from m2 import y

  4. x='m1'

 
  1. #模块m2

  2. print('正在导入m2')

  3. from m1 import x

  4. y='m2'

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

解决这个问题有两种方法

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

代码如下:

 
  1. #模块m1

  2. print('正在导入m1')

  3. x='m1'

  4. from m2 import y

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

代码如下:

 
  1. #模块1

  2. print('正在导入m1')

  3. def func1():

  4. from m2 import y

  5. x='m1'

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

文件被执行和文件本导入

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

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

 
  1. #m1.py

  2. print('run')

  3. print(__name__)

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

 
  1. #run.py

  2. import m1

3.模块的搜索路径/

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

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

 
  1. #run.py

  2. import sys

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

 
  1. #run.py

  2. import sys

  3. sys.path.append(r'E:pythonoldboy_py_038月day163 模块的搜索路径dir1')

  4. import m1

相对路径/

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

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

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

4.软件开发的目录规范

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

bin 用于存放可执行文件

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

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

core 用于存放核心逻辑代码

log 用于存放日志文件

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

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

本文发布于:2024-01-28 19:29:04,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064413499736.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模块   入门   目录   软件
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23