python反射

反射牽扯到了import跟__import__這兩個導入模塊的用法;


日常導入普通模塊的命令:

import modlename

簡單反射使用__import__:

    比如同一級包下有兩個.py的文件分別是:modle1.py和modle2.py

        modle1.py的內容:

            

        #!/usr/bin/env python
        #encoding:utf-8
        def index():
           print '歡迎登陸後臺管理頁面'

    如果在modle2.py裏使用反射的方式導入modle1.py,則用__import__的方式爲:

        str = 'modle1'
        mod = __import__(str)
        func = getattr(mod,index)
        #調用index函數直接執行func()
        func()

下面是稍微複雜點的反射例子:

同級目錄下的py文件分別是account.py、admin.py、test.py

account.py的內容如下:

#encoding:utf-8
#!/usr/bin/env python
def login():
    print '歡迎登陸!'
def logout():
    print '歡迎退出'

admin.py的內容如下:

#encoding:utf-8
#!/usr/bin/env python
def index():
    print '歡迎登陸後臺管理頁面'
def setindex():
    print '歡迎登陸後臺設置頁面'

主程序test.py代碼如下

#!/usr/bin/env python
#encoding:utf-8
import re

str = raw_input('請輸入 你的url:')
if re.match('\w+\/\w+',str) :
    arr = str.split('/')
    mod = __import__(arr[0])
    func = getattr(mod,arr[1])
    func()
else:
    print '格式不對'


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章