python-模块入门二(模块循环导入,区分python文件的两种用途,模块搜索路径,软件开发的目录规范)...
一、模塊的循環導入問題
run.py
# import m1 # 第一次導入m1.py
# 錯誤示范 ''' print('正在導入m1') from m2 import y #第一次導入m2x='m1' '''
m2.py
# 錯誤示范 ''' print('正在導入m2') from m1 import xy='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 #第一次導入m2print('m1.f1---->y: ',y)f2() x='m1' # m2.pydef f2():from m1 import xprint('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://www.cnblogs.com/mangM/p/9442792.html
總結
以上是生活随笔為你收集整理的python-模块入门二(模块循环导入,区分python文件的两种用途,模块搜索路径,软件开发的目录规范)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOSUI视图面试及原理总结
- 下一篇: 奥运纪念币可以流通吗