反射:
- 以字符串的形式导入模块
- 以字符串的形式执行模块。
使用背景:在切换数据库的时候使用比较好,能够降低程序的耦合。
mysqserver.py
#!/usr/bin/python
#_*_ coding:UTF-8 _*_
def count():
return 1
sqlserver.py
#!/usr/bin/python
#_*_ coding:UTF-8 _*_
def count():
return 2
test.py
以字符串形式导入模块:
#!/usr/bin/python
#_*_ coding:UTF-8 _*_
sql = "mysqserver"
tmp = __import__(sql)
s = tmp.count()
print(s)
以字符串形式执行模块:
#!/usr/bin/python
#_*_ coding:UTF-8 _*_
'''
sql = "mysqserver"
tmp = __import__(sql)
s = tmp.count()
print(s)
'''
sql = "mysqserver"
func = "count"
tmp = __import__(sql)
function = getattr(tmp,func)
print(function())