python基礎之import模塊導入和包的調用


模塊概念

在Python中,一個.py文件就稱之為一個模塊(Module)。使用模塊組織代碼,最大的好處是大大提高了代碼的可維護性

模塊一共三種:python標准庫、第三方模塊、應用程序自定義模塊。

相同名字的函數和變量完全可以分別存在不同的模塊中,因此,我們自己在編寫模塊時,不必考慮名字會與其他模塊沖突。但是也要注意,盡量不要與內置函數名字沖突。

模塊導入

import語句

1 import module1[, module2[,... moduleN]

使用import語句時候,Python解釋器通過sys.path的路徑搜索。

每次import的時候,都會相應的開辟內存空間存放被import的內容,但是與調用import的文件開辟的內存空間相互獨立。例如import foo.py在新建的名稱空間里執行源文件(foo.py)代碼時,所有對全局名稱空間的引用或修改,都是以foo.py為准。

注意:

一個模塊可以在當前位置import多次,但是只有第一次導入會執行內容,其他的都為引用內存

更改調用名稱:

1 import logging as log
2 log.critical("www")

from...import語句

1 from modname import name1[, name2[, ... nameN]]

這個聲明不會把整個modulename模塊導入到當前的命名空間中,只會將它里面的name1或name2單個引入到執行這個聲明的模塊的全局符號表。

包的調用

為了避免模塊名沖突,Python又引入了按目錄來組織模塊的方法,稱為包(Package)。

每一個包目錄下面都會有一個__init__.py的文件,這個文件是必須存在的,否則,Python就把這個目錄當成普通目錄(文件夾),而不是一個包。__init__.py可以是空文件,也可以有Python代碼,因為__init__.py本身就是一個模塊,而它的模塊名就是對應包的名字。調用包就是執行包下的__init__.py文件。

跨包調用(當前目錄下有modulepack1包):

1 from modulepack1[.modulepack2] import module

如果當前目錄下能夠找到要調用的包,可以直接from包import模塊,如果當前目錄找不到要調用的包,需要向sys.path添加包的所在絕對路徑。

import一個包名,就等於執行了這個包下的__init__文件。

示例:

在nod1里import  hello是找不到的,需要手動添加包路徑,如果找到那是因為pycharm給加了不必要的路徑,以命令行執行為准。

1 import sys,os
2 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))  #__file__獲取執行文件相對路徑,整行為取上一級的上一級目錄
3 sys.path.append(BASE_DIR)  #添加路徑
4 import hello
5 hello.hello1()

模塊調用測試

1 if __name__=='__main__':  #__name__方法判斷
2     print('ok')

在一個py模塊直接執行print(__name__)會輸出__main__,表示當前這個文件屬於執行文件,如果從其他的py模塊中導入一個py模塊,執行被導入的py模塊中的print(__name__)會輸出被導入的模塊的模塊名稱,那么if判斷就不會成功,所以導入的時候不會執行判斷內的代碼。

主要用在調試功能,即一個模塊被調用的時候不執行內容,而自己調試模塊的時候可以順利的執行模塊內容。


免責聲明!

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



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