如果我們的**中需要通過判斷乙個字串來呼叫乙個函式的時候,可以用if ,else來進行操作,如果有100個函式呢,如果有1000個函式呢。
此時用反射的話就好說了。簡單的說就是利用字串的形式去物件(模組)中操作(尋找)成員
def login():print('炫酷的登入頁面')
def logout():
print('炫酷的退出頁面')
def home():
print('炫酷的主頁面')
def run():
inp = input('請輸入要訪問的url')
if hasattr(note,inp): #判斷note這個模組中有沒有以inp變數內容為名字的函式,如果你輸入login,就是判斷是否有login這個函式
func = getattr(note,inp) #獲取這函式
func()
else:
print('404')
if __name__ == '__main__':
run()
通過字串的形式匯入模組:
obj = __import__("commons") #通過字串的形式匯入模組,並重命名為obj這樣有個缺點,如果commons改成 commons.login的話,他預設只匯入commons
此時需要新增乙個引數:
fromlist=true, 整個匯入模組就變成了:
obj = __import__("commons",fromlist=true)
python之路(9)反射 包裝類 動態模組匯入
目錄 python提供自省的四個方法 hasattr object,name 判斷object中有沒有有個name字串對應對應的方法和屬性 class demo name chen age 22 def test func self print 存在 hasattr demo,test func t...
Python之模組詳細梳理 五
python包是一種特殊的資料夾,用來存放多個相互關聯的模組檔案和資源檔案,該資料夾下必須有 init py檔案。python首次匯入包時會自動執行 init py檔案。若沒有這個檔案會被視為資料夾,有這個檔案才會被視為包。資料夾jihe下有3個檔案,內容如下 init py檔案 from jihe...
Python常用模組之五 subprocess
python引入subprocess模組來管理子程序,以取代一些舊模組的方法 如 os.system os.spawn os.popen popen2.commands.不但可以呼叫外部的命令作為子程序,而且可以連線到子程序的input output error管道,獲取相關的返回資訊。subpro...