反射:根據字串的形式去物件中操作其成員。
1,通過字串的形式,匯入模組
commons.py
deff1
():print
'f1'
deff2
():print
'f2'
deff3
():print
'f3'
index.py
#根據使用者輸入的內容匯入模組``
inp=raw_input('請輸入模組:')
print(inp,type(inp))
com=__import__(inp)
com.f1()
#輸入:commons
#結果:('commons', )
# f1
這段**的功能就是通過字串的形式匯入模組,其中最重要的就是內建import方法,我們傳入的』commons『賦值給inp,通過import方法,此時com可以視為import commons,此時執行f1就可以得到結果。
另外:import可以匯入巢狀的模組,比如乙個檔案lib中含有test,test中含有comnons模組。這裡我們可以通:`
impor lib.test.commons
from lib.test import commons
#用__import__方式,有多級目錄時fromlist=true:
r=__import__('lib.test.commons', fromlist=true)
2,通過字串的形式,呼叫模組中指定的函式
index.py
inp=input('請輸入模組:')
com=__import__(inp)
inp_func=raw_input('請輸入要執行的函式:')
target_func=getattr(com,inp_func)`
result=target_func()
#輸入:commons
#輸入:f1
#輸出:f1
通過getattr,可以進入com模組中尋找inp_func函式,當然不僅限於函式,模組中的物件都可以,例如commons中的全域性變數。
hasattr,根據字串的形式去模組中判斷物件是否存在。
index.py
inp=input('請輸入模組:')
com=__import__(inp)
inp_func=raw_input('請輸入要執行的函式:')
target_func=hasattr(com,inp_func)`
print target_func
#輸入:commons
#輸入:s
#輸出:false
setattr,可以通過字串的形式進行設定。
r=hasattr(commons,'age')
print r
setattr(commons,'age',18)
r=hasattr(commons,'age')
print r
#false
#true
delattr可以刪除模組中的物件。
總結:import 用字串的形式匯入模組;getattr以字串的形式去某個模組中尋找函式,加上()表示執行函式;hasattr可以判斷某個物件中是否有某個成員;serattr可以設定某個物件中的成員;delattr可以刪除某個物件中的成員。
Python自學手冊筆記(一)
廖雪松的學習 在這裡我找到了大學時期沒有時間搞懂的python。這幾天一直在看,他講得很有條理,簡單易行。其他教程,諸如w3cschool或者其他書本教程,都沒有廖雪松的教程貼近實踐。2 ctrl c 強制退出死迴圈。3 缺少了pass,執行就會有語法錯誤 4 自定義的函式沒有自動檢查引數型別是否正...
python自學筆記
一 字串 單引號定義 s spam len s 求長度 第一位索引從0開始 s 0 s 最後一位也可以從 1開始索引 s 1 m s 2 a 幾個常用到的索引計算方法 s 1 pam 從第乙個一直到最後乙個 s 0 3 spa 從m開始到n 1 不包括n 本例為從0到2 s 3 pam 從第乙個開始...
Python自學筆記 集合
集合 不同元素 無序 不可變型別 s set hello s s set alex alex sb s 集合的內建方法 1,add s.add 新增元素 2,clear s.clear 清空集合 3,copy s.copy 賦值集合 4,pop s.pop 隨即刪除 5,remove s.remov...