python基礎之import模組匯入和包的呼叫

2022-08-20 11:24:11 字數 2086 閱讀 6926

模組概念

在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__獲取執行檔案相對路徑,整行為取上一級的上一級目錄

4 import hello

5 hello.hello1()

模組呼叫測試

1 if __name__=='__main__':  #__name__方法判斷

2 print('ok')

在乙個py模組直接執行print(__name__)會輸出__main__,表示當前這個檔案屬於執行檔案,如果從其他的py模組中匯入乙個py模組,執行被匯入的py模組中的print(__name__)會輸出被匯入的模組的模組名稱,那麼if判斷就不會成功,所以匯入的時候不會執行判斷內的**。

主要用在除錯功能,即乙個模組被呼叫的時候不執行內容,而自己除錯模組的時候可以順利的執行模組內容。

A09 Python基礎之import 模組

在 python 用 import 或者 from import 來匯入相應的模組。接下來以 time 模組為例 1 將整個模組匯入,例如 import time,在引用時格式為 time.sleep 1 2 將整個模組中全部函式匯入,例如 from time import 在引用時格式為 slee...

Python 基礎 匯入import

import語句主要有兩種 1 import package.module1,package.module2,2 from package import item 注意當使用 from package import item 這種形式的時候,對應的 item 既可以是包裡面的子模組 子包 或者包裡面...

python基礎 import 模組 包

import mod1.py初始內容如下,其餘模組初始內容只是函式字尾的數字修改為與模組對應的格式,其餘不變 1 deffun 1 2print this is import mod1 3 fun 1 模組實際上就是實現乙個完整功能的.py結尾的python檔案,其內部可能有多個變數 函式 類等 幾...