最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python importlib 用法小結

 更新時間:2026年02月08日 10:35:35   作者:YunfengWang  
在使用Python的時候,大部分時候引入包,都是通過import語句,通過這個庫,可以根據(jù)程序中的變量動態(tài)地導入模塊,而不是像傳統(tǒng)導入方式那樣使用固定的字符串,這使得代碼更加靈活,感興趣的可以了解一下

在使用Python的時候,大部分時候引入包,都是通過import 語句,比如

import numpy as np

有時候為了更復雜的需求,我們需要用程序化的方式來引入包 (Programmatic Importing), 比如根據(jù)輸入不同,選擇執(zhí)行兩個不同包里面的同名函數(shù),這時候就需要用到importlib這個庫了。這里先從一個簡單例子開始,逐漸深入地講一下這個庫的用法。

import_module用法

importlib 是Python3.1增加的系統(tǒng)庫,其中最常用的函數(shù)是其中的import_module ,功能是用程序語句的方式替代import 語句,用法如下:

import importlib

# 與 import time 效果一樣
time = importlib.import_module('time')
print(time.time())

# 與 import os.path as path 效果一樣
path = importlib.import_module('os.path')
path.join('a', 'b')  # results: 'a/b'

# 相對引入, 一級目錄,與 import os.path as path 效果一樣
path = importlib.import_module('.path', package='os')
path.join('a', 'b')  # results: 'a/b'

# 相對引入,二級目錄,與 import os.path as path 效果一樣
path = importlib.import_module('..path', package='os.time')
path.join('a', 'b')  # results: 'a/b'

注意最后的例子中,相對引入時需要在前面增加.

或者.. 來表示相對目錄,如果直接使用importlib.import_module('path', package='os') 會報錯。

如果光看這幾個例子的話,貌似跟import 沒什么區(qū)別,而且語句變得更復雜了,有點多此一舉的感覺。

其實不是的,個人認為,importlib 的強大之處是將import 語句中寫死的字面值改成了import_module 函數(shù)中的參數(shù),因此可以通過修改參數(shù)在外部用變量來控制實際import的包或者模塊,大大地增加了靈活性。 下面會舉一個稍微實用一些的例子。

一個實際例子

假設我們在設計一個深度學習工具庫,里面包含了N個網(wǎng)絡模型(ResNet50, HRNet, MobileNet等等),每個模型的實現(xiàn)都有一個load_model 的函數(shù)。由于計算設備的性能不同,需要調(diào)用的網(wǎng)絡結構也會變化,我們需要根據(jù)外部傳入的參數(shù)來判斷實際load哪一個模型。

雖然采用import 語句+if-else 判斷也能完成這個需求,舉例實現(xiàn)如下:

def run(model_name, input):
    if model_name == 'resnet_50':
        from resnet_50.model import load_model
    elif model_name == 'hrnet':
        from hrnet.model import load_model
    elif model_name == 'moblienet':
        from mobilenet.model import load_model

    model = load_model()
    output = model(input)
    return output

這種寫法存在下面的兩個問題:

  1. 寫法很冗余, N個模型的話需要添加2N條語句
  2. 新增模型時需要修改調(diào)用處的代碼,添加對應的import語句,不符合模塊化的要求。

這時候采用importlib 就能比較簡潔地解決這個問題:

import importlib


def run(model_name, input):
    load_model = importlib.import_module('load_model', package='{}.model'.format(model_name))

    model = load_model()
    output = model(input)
    return output

可以看到在這種場景下importlib 確實能大大簡化代碼。

了解這些內(nèi)容,日常使用這個庫就沒什么問題了(好像importlib 針對普通用戶場景的函數(shù)貌似就只有import_module 這一個),別的一些進階的概念由于不太懂,暫時不展開了。

參考

  1. https://docs.python.org/3/library/importlib.html

 到此這篇關于python importlib 用法小結的文章就介紹到這了,更多相關python importlib 用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python如何把Spark數(shù)據(jù)寫入ElasticSearch

    Python如何把Spark數(shù)據(jù)寫入ElasticSearch

    這篇文章主要介紹了Python如何把Spark數(shù)據(jù)寫入ElasticSearch,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • 如何實現(xiàn)更換Jupyter Notebook內(nèi)核Python版本

    如何實現(xiàn)更換Jupyter Notebook內(nèi)核Python版本

    這篇文章主要介紹了如何實現(xiàn)更換Jupyter Notebook內(nèi)核Python版本,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Python錯誤和異常總結詳細

    Python錯誤和異常總結詳細

    本文詳細且清晰地講解了Python中錯誤和異常的概念及其處理方式,通過具體案例展示try...except、try...finally、with...等句式的具體用法,期望能幫助到對此感到迷惑的初學者
    2021-10-10
  • opencv3/Python 稠密光流calcOpticalFlowFarneback詳解

    opencv3/Python 稠密光流calcOpticalFlowFarneback詳解

    今天小編就為大家分享一篇opencv3/Python 稠密光流calcOpticalFlowFarneback詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python解釋器pycharm安裝及環(huán)境變量配置教程圖文詳解

    python解釋器pycharm安裝及環(huán)境變量配置教程圖文詳解

    這篇文章主要介紹了python解釋器pycharm安裝及環(huán)境變量配置教程圖文詳解,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • 關于Python中Math庫的使用

    關于Python中Math庫的使用

    這篇文章主要介紹了關于Python中Math庫的使用,math?庫是?Python?提供的內(nèi)置數(shù)學類函數(shù)庫,因為復數(shù)類型常用于科學計算,需要的朋友可以參考下
    2023-04-04
  • Python動態(tài)加載模塊的3種方法

    Python動態(tài)加載模塊的3種方法

    這篇文章主要介紹了Python 動態(tài)加載模塊的3種方法,本文分別使用使用系統(tǒng)函數(shù)__import_()、使用imp 模塊、使用exec三種方法實現(xiàn),需要的朋友可以參考下
    2014-11-11
  • Python 讀取千萬級數(shù)據(jù)自動寫入 MySQL 數(shù)據(jù)庫

    Python 讀取千萬級數(shù)據(jù)自動寫入 MySQL 數(shù)據(jù)庫

    這篇文章主要介紹了Python 讀取千萬級數(shù)據(jù)自動寫入 MySQL 數(shù)據(jù)庫,本篇文章會給大家系統(tǒng)的分享千萬級數(shù)據(jù)如何寫入到 mysql,分為兩個場景,兩種方式
    2022-06-06
  • Python使用for生成列表實現(xiàn)過程解析

    Python使用for生成列表實現(xiàn)過程解析

    這篇文章主要介紹了Python使用for生成列表實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • python jieba分詞并統(tǒng)計詞頻后輸出結果到Excel和txt文檔方法

    python jieba分詞并統(tǒng)計詞頻后輸出結果到Excel和txt文檔方法

    本篇文章主要介紹了python jieba分詞并統(tǒng)計詞頻后輸出結果到Excel和txt文檔方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02

最新評論

区。| 正宁县| 巴林右旗| 蒲江县| 万山特区| 噶尔县| 安泽县| 余干县| 阳山县| 平凉市| 建宁县| 罗田县| 疏勒县| 三原县| 蒲江县| 宝清县| 朝阳县| 湘西| 昭通市| 始兴县| 枣强县| 陵水| 常宁市| 文水县| 于都县| 融水| 甘南县| 洛浦县| 上蔡县| 南充市| 东丽区| 侯马市| 尚志市| 建瓯市| 楚雄市| 微博| 洪雅县| 永寿县| 蒲江县| 嘉黎县| 苏州市|