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)入的使用場(chǎng)景實(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)文章
python使用tomorrow實(shí)現(xiàn)多線程的例子
今天小編就為大家分享一篇python使用tomorrow實(shí)現(xiàn)多線程的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07
用于統(tǒng)計(jì)項(xiàng)目中代碼總行數(shù)的Python腳本分享
這篇文章主要介紹了用于統(tǒng)計(jì)項(xiàng)目中代碼總行數(shù)的Python腳本分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04
Python利用matplotlib實(shí)現(xiàn)餅圖繪制
Pyplot作為Matplotlib的子庫,提供了和MATLAB差不多的繪圖API。因此Pyplot作為常用的繪圖模塊,能很方便讓用戶繪制2D圖表。本文將為大家介紹如何利用Matplotlib繪制餅圖,感興趣的小伙伴可以了解一下2021-12-12
pandas.DataFrame的for循環(huán)迭代的實(shí)現(xiàn)
本文主要介紹了pandas.DataFrame的for循環(huán)迭代的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
一個(gè)基于flask的web應(yīng)用誕生 用戶注冊(cè)功能開發(fā)(5)
一個(gè)基于flask的web應(yīng)用誕生第五篇,這篇文章主要介紹了用戶注冊(cè)功能開發(fā),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
Python3爬蟲教程之利用Python實(shí)現(xiàn)發(fā)送天氣預(yù)報(bào)郵件
這篇文章主要給大家介紹了關(guān)于Python3爬蟲教程之利用Python實(shí)現(xiàn)發(fā)送天氣預(yù)報(bào)郵件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧2018-12-12

