python-模块入门二(模块循环导入,区分python文件的两种用途,模块搜索路径,软件开发的目录规范)
一、模块的循环导入问题
run.py
# import m1 # 第一次导入
m1.py
# 错误示范
'''
print('正在导入m1')
from m2 import y #第一次导入m2
x='m1'
'''
m2.py
# 错误示范
'''
print('正在导入m2')
from m1 import x y='m2'
'''
解决方案:
一:把循环导入的语句放到名字定义的后面
# m1.py
# y='m2'
# from m1 import x
# m2.py
# print('正在导入m2')
#
# y='m2'
# from m1 import x
二:将循环导入的语句放到函数内
# m1.py
print('正在导入m1') def f1():
from m2 import y,f2 #第一次导入m2
print('m1.f1---->y: ',y)
f2()
x='m1'
# m2.py
def f2():
from m1 import x
print('m2.f2--->x: ',x) y='m2'
二、区分python文件的两种用途
当文件被执行时__name__=='__main__'
当文件被导入时__name__=='模块名'
if __name__ == '__main__':
f1()
f2()
三、模块的搜索路径
模块搜索路径的优先级:1.内存中已经加载过的,2.内置模块,3.sys.path第一个值是当前执行文件所在的文件夹
环境变量是以当前执行文件为准的.
注: 所有被导入的模块参照环境变量sys.path都是以执行文件为准的.被导入的模块再去导入其它模块,也是参照sys.path
四、绝对导入与相对导入
绝对导入:以执行文件的sys.path为起始位置开始导入,称之为绝对导入
优点:执行文件与被导入的模块中都可以用
缺点:所有导入都是以sys.path为起始点,导入麻烦
相对导入:
符号:一个"."代表当前所在文件夹,".."代表上一级文件夹,"..."代表上一级的上一级文件夹
优点:导入更加简单
缺点:只能在导入包中的模块时才能使用,不能在执行文件中使用
注意: 执行文件中只能用绝对导入
五、软件开发的目录规范
规范化的目录结构能更好的控制程序,让程序具有更高的可读性
1.可读性高 2.可维护性高
通常一个项目都会有的目录如下:
项目名/
| -- bin/ #程序启动脚本/程序入口
| | -- start.py
|
| -- conf/ #配置文件
| | --settings.py
| -- core/ #业务逻辑
| | --src.py
| -- db/
| | --数据库文件
| -- lib/ #第三方库
| | --common.py
| -- log/ #日志
| | --transaction.log
README #说明文档
目录后继会继续补充!
python-模块入门二(模块循环导入,区分python文件的两种用途,模块搜索路径,软件开发的目录规范)的更多相关文章
- [软件开发的目录规范、区分py文件的两种用途]
[软件开发的目录规范] 软件开发的目录规范 bin: 执行文件 conf: 存放配置文件相关代码 core: 存放源文件,业务逻辑相关代码 db: 存放数据库文件,主要用于与数据库交互 lib: 存放 ...
- 模块的四种形式、 import和from...import、 循环导入问题、模块的搜索路径、 python文件的两种用途
目录 模块的四种形式 模块 模块的四种形式 import和from...import 循环导入问题 模拟问题的发生: 解决方案 模块的搜索路径 Python文件的两种用途 模块的四种形式 Nike推荐 ...
- 模块导入及使用,关键字,模块搜索路径,python文件的两种用途
06.05自我总结 一.模块导入及使用 1.模块导入的两种方式 我们拿time模块并使用其中的time功能进行举例 a)第一种 import time print(time.time) import首 ...
- Python 1-3区分Python文件的两种用途和模块的搜索路径
区分Python文件的两种用途 run.py文件: import m1 m1.py文件: def f1(): print('f1') def f2(): print('f2') #当文件被执行时__n ...
- Python文件的两种用途
目录 一.Python文件的两种用途 一.Python文件的两种用途 python文件总共有两种用途,一种是执行文件:另一种是被当做模块导入. 编写好的一个python文件可以有两种用途: 脚本,一个 ...
- 第九章、python文件的两种用途
目录 第九章.python文件的两种用途 一.用途 第九章.python文件的两种用途 一.用途 当前运行的文件(脚本) 被导入的文件(模块) # aaa.py x = 1 def f1(): pri ...
- python学习之-软件开发的目录规范
通常软件目录下有几个标准文件夹 软件主文件夹命名,通常都是大写(ATM_SHOPPING) ------------------------------------------------------ ...
- Python模块入门(二)
一.模块的循环导入问题 在python工程中,由于架构不当,可能会出现模块间互相引用的情况.这时候需要通过一些方法来解决这个问题 1.重新设计架构,解决互相引用的关系. 2.把import语句放置在模 ...
- 2.Python爬虫入门二之爬虫基础了解
1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. ...
随机推荐
- Retrofit提交Json
1.APIService为自定义接口类, 定义@Headers @Headers({"Content-Type: application/json","Accept: a ...
- error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
解决方案 1. http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 下载twisted对应版本的whl文件(我的Twisted‑17.5.0‑cp36 ...
- Nginx正反向代理、负载均衡等功能实现配置
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 系统环境: VirtualBox Manager Centos6.4 nginx1.10.0 IP对应的机器名: IP ...
- Docker(二)搭建和使用Docker
摘自 https://mp.weixin.qq.com/s/E9tqhe00EjfV8y1pqWkZfw 一.Docker的架构 Docker使用C/S结构,即客户端/服务器体系结构.Docker客户 ...
- 对div的操作
链接:https://blog.csdn.net/wide288/article/details/34116495 判断DIV的内容改变的方法 近日,在帮朋友写一段小程序的时候,用到了iframe,在 ...
- 用JavaMail通过QQ邮箱来发送邮件(第一篇博客,备忘)
1.先启用QQ邮箱里POP3/STMP服务:生成授权码 2.导入mail.jar包(不要用太古董的技术,你懂得) 3.注意要在代码里加上开启SSL加密的代码 4.直接上代码 import java.u ...
- Redis 深度历险
学习资料 https://juejin.im/book/5afc2e5f6fb9a07a9b362527 包括下面几方面的内容 基础 应用 原理 集群 拓展 源码 to be done
- Spring重温(四)--Spring自动组件扫描
通常情况下,声明所有的Bean类或组件的XML bean配置文件,这样Spring容器可以检测并注册Bean类或组件. 其实,Spring是能够自动扫描,检测和预定义的项目包并实例化bean,不再有繁 ...
- delete 和 delete []的区别
(1). 针对简单类型 使用new分配后的不管是数组还是非数组形式内存空间用两种方式均可 如: int *a = new int[10]; delete a; delete [] a; ...
- Photoshop CS6打开图片后看不到怎么办
https://jingyan.baidu.com/album/54b6b9c0d45c632d583b4793.html