您现在的位置是:首页 > 文章详情

python-模块入门二(模块循环导入,区分python文件的两种用途,模块搜索路径,软件开发的目录规范)

日期:2018-08-07点击:364

一、模块的循环导入问题

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 #说明文档

 

目录后继会继续补充!

 

焚膏油以继晷,恒兀兀以穷年。
原文链接:https://yq.aliyun.com/articles/642666
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章