日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 默认站点!

默认站点

當(dāng)前位置: 首頁 >

模块简介/模块的导入/模块的查找顺序/绝对导入和相对导入/软件开发目录规范...

發(fā)布時(shí)間:2023/12/2 40 豆豆
默认站点 收集整理的這篇文章主要介紹了 模块简介/模块的导入/模块的查找顺序/绝对导入和相对导入/软件开发目录规范... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一.模塊的簡介

  什么是模塊:

    模塊就是一系列功能的結(jié)合體

  模塊的三種來源:

    1.內(nèi)置的

    2.第三方的 

    3.自定義的

  模塊的四種表現(xiàn)形式:

    1.使用python編寫的py文件(也就意味著py文件也可以稱之為模塊:一個(gè)py文件也可以稱之為一個(gè)模塊)(***)
    2.已被編譯為共享庫或DLL的C或C++擴(kuò)展(了解)
    3.把一系列模塊組織到一起的文件夾(文件夾下有一個(gè)__init__.py文件,該文件夾稱之為包)(***)
    ? ?包:一系列py文件的結(jié)合體
    4.使用C編寫并連接到python解釋器的內(nèi)置模塊

  為什么要使用模塊:

    1.用別人的模塊可以加快開發(fā)效率(內(nèi)置/第三方)

    2.使用自定義模塊,在一個(gè)項(xiàng)目中可能會(huì)多次使用,這樣可以將其放在項(xiàng)目文件夾lib中,將其放在common.py文件中,當(dāng)別的地方需要時(shí)可直接調(diào)用

ps:在調(diào)用文件的過程中一定要區(qū)分哪個(gè)是執(zhí)行文件,哪個(gè)是被導(dǎo)入文件

  雙下name方法:在執(zhí)行文件中__name__=__main__,多用在執(zhí)行文件中,對(duì)執(zhí)行文件進(jìn)行測試如:

if __name__ == '__main__': # 快捷寫法,在pycharm中輸入main然后tab鍵index1()index2()

?

  如果文件是被當(dāng)作模塊導(dǎo)入的__name__輸出為模塊名(不加后綴)

?

二.模塊導(dǎo)入的兩種方式

2.1.導(dǎo)入兩種方式:

1.import+模塊名

    右鍵運(yùn)行執(zhí)行文件發(fā)生的事(run.py):

      1.首先會(huì)創(chuàng)建一個(gè)run.py的名稱空間

      2.首次導(dǎo)入模塊(mk.py)

      3.運(yùn)行mk.py模塊

      4.將mk.py在運(yùn)行中產(chǎn)生的名字和值存放在mk.py的名稱空間中

      5.在執(zhí)行文件run.py中拿到一個(gè)指向mk.py名稱空間的名字

?

    ps:1.首次導(dǎo)入模塊會(huì)創(chuàng)建名稱空間,但是之后再次導(dǎo)入該模塊,該模塊的名稱空間已存在,不會(huì)創(chuàng)建新的名稱空間了,會(huì)沿用第一次導(dǎo)入的結(jié)果

    ? ? ?2.當(dāng)幾個(gè)模塊有相同的部分或者屬于同一個(gè)模塊時(shí)可以使用以下句式(不推薦)

mport+模塊名1,模塊名2,模塊名3....

      當(dāng)幾個(gè)模塊沒有聯(lián)系的情況下應(yīng)該分多次導(dǎo)入     

import+模塊名1 import+模塊名2 ...

?

      3.當(dāng)模塊的名字很長時(shí),可以給模塊取一個(gè)別名,如下:這樣在在訪問模塊名稱空間下的名字就可以寫成kx.名字

import wohaokuaixina as kx

    使用import打入模塊,訪問模塊下名稱空間的名字同意句式:模塊名.名字

      特點(diǎn):1.指名道姓的訪問模塊中的名字,永遠(yuǎn)不會(huì)與執(zhí)行文件中的名字沖突

         2.訪問模塊中的名字必須嚴(yán)格按照句式模塊名.名字

2.from...import....

  右鍵運(yùn)行執(zhí)行文件發(fā)生的事(run.py):

      1.首先會(huì)創(chuàng)建一個(gè)run.py的名稱空間

      2.首次導(dǎo)入模塊(mk.py)

      3.運(yùn)行mk.py模塊

      4.將mk.py在運(yùn)行中產(chǎn)生的名字和值存放在mk.py的名稱空間中

      5.在執(zhí)行文件run.py中拿到一個(gè)指向mk.py名稱空間中某個(gè)值的名字

?

    ps:1.在使用from...import...句式訪問模塊中的名字不需要加模塊名前綴,但是在訪問模塊中名字可能會(huì)產(chǎn)生沖突

     ? 2.可以使用from 模塊名 import *的句式將模塊中的名字一次性全加載出來(不推薦)

?      在這種方式里存在一個(gè)方法為__all__,在__all__=[],在列表中可以添加我們需要的名字,這樣通過from 模塊名 import *讀到的名字就是咧白哦種的名字,這樣可以限制導(dǎo)入者拿到的名字個(gè)數(shù)

三.解決文件循環(huán)導(dǎo)入的方法

3.1循環(huán)導(dǎo)入案例:  

  運(yùn)行文件run.py

import mi m1.f1()

  模塊m1.py

print('正在導(dǎo)入m1') from m2 import y # 首次導(dǎo)入m2 x = 'm1'

  模塊m2.py

print('正在導(dǎo)入m2') from m1 import x # 第二次導(dǎo)m1 y = 'm2'

  當(dāng)運(yùn)行run.py文件時(shí),名稱空間內(nèi)入下圖所示

3.2解決循環(huán)導(dǎo)入的方法一:將循環(huán)導(dǎo)入的語句寫在最下方

#m1.py模塊print('正在導(dǎo)入m1') x = 'm1' from m2 import y #m2.py模塊print('正在導(dǎo)入m2') y = 'm2' from m1 import x

  

3.3解決循環(huán)導(dǎo)入的方法二:函數(shù)內(nèi)導(dǎo)入模塊

#m1.py模塊print('正在導(dǎo)入m1') def f1():from m2 import y,f2print('m1.f1>>>y:',y)f2() x = 'm1'#m2.py模塊print('正在導(dǎo)入m2') def f2():from m1 import xprint('m2.f2>>>x:',x) y = 'm2'

ps:如果在程序中出現(xiàn)循環(huán)導(dǎo)入問題,應(yīng)該想辦法取消循環(huán),這應(yīng)該在程序設(shè)計(jì)階段就要避免,實(shí)在不行再用此種方式取解決

四.模塊的查找順序

4.1查找順序:

  1.內(nèi)存

  2.內(nèi)置

  3.sys.path(相當(dāng)于環(huán)境變量)

ps:sys.path就相當(dāng)于一個(gè)大列表列表中放了一大推文件路徑,第一個(gè)文件路徑就是執(zhí)行文件所在的文件夾

五.模塊的絕對(duì)導(dǎo)入,相對(duì)導(dǎo)入

  絕對(duì)導(dǎo)入:絕對(duì)導(dǎo)入必須根據(jù)執(zhí)行文件所在的文件夾路徑為準(zhǔn),絕對(duì)導(dǎo)入無論在執(zhí)行文件還是被導(dǎo)入文件都可以使用

  相對(duì)導(dǎo)入:在相對(duì)導(dǎo)入中'.'代表當(dāng)前路徑,'..'代表上一級(jí)路徑,'...'代表上上級(jí)路徑.相對(duì)導(dǎo)入只能在被導(dǎo)入模塊中使用,在使用相對(duì)導(dǎo)入時(shí)不需要考慮執(zhí)行文件是誰,只需要考慮模塊間的路徑關(guān)系

六.軟件目錄目錄規(guī)范

  項(xiàng)目根目錄:

    1.啟動(dòng)文件夾(bin)--------------start.py文件

ps:啟動(dòng)文件也可以直接放在項(xiàng)目根目錄下

    2.配置文件夾(conf)[不經(jīng)常改變的變量,IP,PORT,DATABASE]--------------setting.py文件

    3.公共功能文件(lib)[其他文件可能要用到的功能]--------------common.py文件

?    4.核心邏輯文件夾(core)--------------src.py文件

?    5.日志文件夾(log)--------------log.log日志文件

    6.數(shù)據(jù)庫文件夾(db)

    7.readme文本文件(對(duì)軟件的介紹)

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/z929chongzi/p/11197347.html

總結(jié)

以上是默认站点為你收集整理的模块简介/模块的导入/模块的查找顺序/绝对导入和相对导入/软件开发目录规范...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得默认站点網(wǎng)站內(nèi)容還不錯(cuò),歡迎將默认站点推薦給好友。