導入模塊 和 包


一 模塊

模塊一共三種:

    python標准庫
    第三方模塊
    應用程序自定義模塊
  在cmd命令終端,查看命令os 來自第三方

   time模塊來自第三方

 

 



模塊兩種執行方式:

1 用於啟動執行

2 用於被調用執行

 



key:import module:

將執行文件(module)的目錄路徑插入到sys.path的第一個位置

import的兩個過程:

 





修改調用模塊的名字:import logging as log

from 模塊 import 變量名
from modname import name1[, name2[, ... nameN]]


二 包(package)

模塊非常多,不好找,組織模塊的方式:包

在python中,包可以理解成一個文件夾,但是沒一個文件夾里必須要有
一個__init__文件

2.1 from  包  import   模塊    #格式

但一個py文件和另一個要被引用的文件不在同級目錄里,就用    from  包  import   模塊 

 

#logger.py文件,,被引用的文件

import logging  #logging是第三方模塊,
#from log import func

def get_logger():
logger=logging.getLogger()
fh=logging.FileHandler('log.txt')
logger.addHandler(fh)

return logger

print('ok')
get_logger()

 



附上目錄里面包和.py 文件的樹狀結構

 



#bin是啟動文件,要引用logger文件 ,不再同級別,就用from import 模塊
#improt logger   #直接調用,不在同級目錄下,就無法引用
#from import 模塊 #引入模塊
from log import logger #要用from 這種格式引用logger模塊


logger_obj=logger.get_logger()
logger_obj.error('error')
 再調用sc_cal 模塊的方法 ,模塊名+方法(函數) sc_cal.add()

 

在哪個文件里運行,哪個文件就是啟動文件,就會先從這個文件開始啟動


如果bin的文件位置發生變動,就要再添加路徑

 



2.2 同級目錄下的被調用模塊之間的相互調用

2.3 if __name__=='__main__':

這個表示執行的是此代碼所在的文件。 如果這個文件是作為模塊被其他文件調用,不會執行這里面的代碼。 只有執行這個文件時, if 里面的語句才會被執行。 這個功能經常可以用於進行測試

1.python文件的后綴為.py;

2..py文件既可以用來直接執行,就像一個小程序一樣,也可以用來作為模塊被導入(比如360安全衛士,就是依靠一個個功能模塊來實現的,好比360安全衛士本身框架是一個桌面,而上面的圖標就是快捷方式,這些快捷方式所指向的就是這一個個功能模塊)

3.在python中導入模塊一般使用的是import

好了,在確定知道以上幾點之后,就可以開始解釋if __name__ == "__main__":這個語句了。

首先解釋一下if,顧名思義,if就是如果的意思,在句子開始處加上if,就說明,這個句子是一個條件語句。學習if語句的使用是很簡單的,當然想要真正靈活運用還需大量的實踐。

接着是 __name__,__name__作為模塊的內置屬性,簡單點說呢,就是.py文件的調用方式。

最后是__main__,剛才我也提過,.py文件有兩種使用方式:作為模塊被調用和直接使用。如果它等於"__main__"就表示是直接執行。

總結:在if __name__ == "__main__":之后的語句作為模塊被調用的時候,語句之后的代碼不執行;直接使用的時候,語句之后的代碼執行。通常,此語句用於模塊測試中使用。

 

 


2.4 from 包.包 import 模塊
    from 包.包.模塊 import 變量名字
    
2.5 __init__文件的作用

__init__.py 文件的作用是將文件夾變為一個Python模塊,Python 中的每個模塊的包中,都有__init__.py 文件。

通常__init__.py 文件為空,但是我們還可以為它增加其他的功能。我們在導入一個包時,實際上是導入了它的__init__.py文件。這樣我們可以在__init__.py文件中批量導入我們所需要的模塊,而不再需要一個一個的導入。





 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM