Python動(dòng)態(tài)導(dǎo)入模塊的方法實(shí)例分析
本文實(shí)例講述了Python動(dòng)態(tài)導(dǎo)入模塊的方法。分享給大家供大家參考,具體如下:
一、正常導(dǎo)入模塊
正常模塊導(dǎo)入方式: import module(模塊路徑)
同時(shí)導(dǎo)入多個(gè)模塊:
import os,sys,socket
二、動(dòng)態(tài)導(dǎo)入模塊
動(dòng)態(tài)導(dǎo)入模塊允許我們通過字符串形式來導(dǎo)入模塊
2.1 __import__函數(shù),接受一個(gè)字符串參數(shù)
import os, sys my_sys = __import__('sys') my_os = __import__('os') print(sys.version) print(my_sys.version) print('-------------') print(os.getcwd()) print(my_os.getcwd())
輸出:
3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)]
3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)]
-------------
G:\python\untitled\study8
G:\python\untitled\study8
我們將sys, os 模塊名當(dāng)中參數(shù)傳入__import__
函數(shù)中,可以看出my_sys 和my_os 其實(shí)就是相當(dāng)于 os , sys 模塊了。
2.2 __import__函數(shù)導(dǎo)入自己的模塊
我們?cè)趌ib包中有一個(gè)test.py模塊,我們?nèi)绾瓮ㄟ^__import__
函數(shù)來導(dǎo)入該模塊呢?
# test.py內(nèi)容 class Person(object): def __init__(self): self.name = 'bigberg' # 導(dǎo)入模塊 mod = __import__('lib.test') # 相當(dāng)于獲取了 lib 的路徑 print(mod) obj = mod.test.Person() print(obj.name)
輸出:
<module 'lib' from 'G:\\python\\untitled\\study8\\lib\\__init__.py'>
bigberg
2.3 動(dòng)態(tài)導(dǎo)入模塊列表
moduleNames = ['sys', 'os', 'socket'] print(type(map)) # 在python3 map函數(shù)不在是內(nèi)置函數(shù),而是class,返回的結(jié)果是 可迭代對(duì)象 print(isinstance(map(__import__, moduleNames), Iterator)) modules = list(map(__import__, moduleNames)) print(modules[0].version)
輸出:
<class 'type'>
True
3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)]
現(xiàn)在的modules[0] 就相當(dāng)于 sys 模塊了。
2.4 importlib 模塊
動(dòng)態(tài)導(dǎo)入模塊時(shí),python官方建議使用importlib
模塊,我們同樣導(dǎo)入lib/test.py
import importlib mod = importlib.import_module('lib.test') # mod相當(dāng)于 test.py本身了,于上例不同 print(mod) obj = mod.Person() print(obj.name)
輸出:
<module 'lib.test' from 'G:\\python\\untitled\\study8\\lib\\test.py'>
bigberg
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python函數(shù)使用技巧總結(jié)》、《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- python?動(dòng)態(tài)導(dǎo)入模塊實(shí)現(xiàn)模塊熱更新的方法
- Python importlib動(dòng)態(tài)導(dǎo)入模塊實(shí)現(xiàn)代碼
- Python動(dòng)態(tài)導(dǎo)入模塊:__import__、importlib、動(dòng)態(tài)導(dǎo)入的使用場景實(shí)例分析
- Python動(dòng)態(tài)導(dǎo)入模塊和反射機(jī)制詳解
- Python 動(dòng)態(tài)導(dǎo)入對(duì)象,importlib.import_module()的使用方法
- Python 靜態(tài)導(dǎo)入與動(dòng)態(tài)導(dǎo)入的實(shí)現(xiàn)示例
相關(guān)文章
用于統(tǒng)計(jì)項(xiàng)目中代碼總行數(shù)的Python腳本分享
這篇文章主要介紹了用于統(tǒng)計(jì)項(xiàng)目中代碼總行數(shù)的Python腳本分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04python壓縮文件夾內(nèi)所有文件為zip文件的方法
這篇文章主要介紹了python壓縮文件夾內(nèi)所有文件為zip文件的方法,可實(shí)現(xiàn)簡單的zip文件壓縮功能,需要的朋友可以參考下2015-06-06python如何基于redis實(shí)現(xiàn)ip代理池
這篇文章主要介紹了python如何基于redis實(shí)現(xiàn)ip代理池,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01使用Django簡單編寫一個(gè)XSS平臺(tái)的方法步驟
這篇文章主要介紹了使用Django簡單編寫一個(gè)XSS平臺(tái)的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03詳解基于Facecognition+Opencv快速搭建人臉識(shí)別及跟蹤應(yīng)用
這篇文章主要介紹了詳解基于Facecognition+Opencv快速搭建人臉識(shí)別及跟蹤應(yīng)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01