您好,登錄后才能下訂單哦!
本文實(shí)例講述了Python動(dòng)態(tài)導(dǎo)入模塊的方法。分享給大家供大家參考,具體如下:
正常模塊導(dǎo)入方式: import module(模塊路徑)
同時(shí)導(dǎo)入多個(gè)模塊:
import os,sys,socket
動(dòng)態(tài)導(dǎo)入模塊允許我們通過(guò)字符串形式來(lái)導(dǎo)入模塊
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 模塊了。
我們?cè)趌ib包中有一個(gè)test.py模塊,我們?nèi)绾瓮ㄟ^(guò)__import__
函數(shù)來(lái)導(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
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 模塊了。
動(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)容感興趣的讀者可查看本站專(zhuān)題:《Python函數(shù)使用技巧總結(jié)》、《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。