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 #说明文档
目录后继会继续补充!
焚膏油以继晷,恒兀兀以穷年。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
区块链开发公司谈公有链是区块链未来的趋势
公有链通常也称为非许可链,任何人都可以参与区块链数据维护和读取,容易部署应用程序,完全去中心化不受任何机构控制。 公有链是真正意义上的完全去中心化的区块链,它通过密码学保证交易不可篡改,同时也利用密码学验证以及经济上的激励,在互为陌生的网络环境中建立共识,从而形成去中心化的信用机制。 在上海举办的“2018中国金融科技发展论坛”上,蚂蚁金服副总裁俞胜法在演讲中表示,区块链的发展方向是公有链,公有链很重要,特别是对C端的应用场景,并断言“以后肯定会有一个爆发”。 蚂蚁金服副总裁俞胜法分享了蚂蚁金服在区块链领域的“三做”、“三不做”军规。 具体来说,要做的包括 :第一,是对社会有价值的事情;第二,专注于区块链的技术特别是在应用当中的技术障碍需要消除;第三,建立区块链生态,希望和生态伙伴一起做区块链。 不做的包括:第一,不做空气币;第二,不做违法技术应用;第三,不做对于用户隐私和数据安全方面的行为。 他表示,“蚂蚁金服自己也会做一些IP的管理,比如说我们对于版权,音乐版权,影视版权,这是以后很大的发展方向。我们前段时间利用区块链,在香港发布了区块链技术的跨国对话网络。我们认为跨境的支付网络还...
- 下一篇
高并发下怎么优化能避免服务器压力过大?
用户多,不代表你服务器访问量大,访问量大不一定你服务器压力大!我们换成专业点的问题,高并发下怎么优化能避免服务器压力过大? 1,整个架构:可采用分布式架构,利用微服务架构拆分服务部署在不同的服务节点,避免单节点宕机引起的服务不可用! 2,数据库:采用主从复制,读写分离,甚至是分库分表,表数据根据查询方式的不同采用不同的索引比如b tree,hash,关键字段加索引,sql避免复合函数,避免组合排序等,避免使用非索引字段作为条件分组,排序等!减少交互次数,一定不要用select *! 3,加缓存:使用诸如memcache,redis,ehcache等缓存数据库定义表,结果表等等,数据库的中间数据放缓存,避免多次访问修改表数据!登录信息session等放缓存实现共享!诸如商品分类,省市区,年龄分类等不常改变的数据,放缓存,不要放数据库! 同时要避免缓存雪崩和穿透等问题的出现导致缓存崩溃! 4,增量统计:不要实时统计大量的数据,应该采用晚间定时任务统计,增量统计等方式提前进行统计,避免实时统计的内存,CPU压力! 5,加图片服务器:图片等大文件,一定要单独经过文件服务器,避免IO速度对动态数...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS6,CentOS7官方镜像安装Oracle11G
- Windows10,CentOS7,CentOS8安装Nodejs环境