Python_61反射模块的介绍
一、反射
通过字符串的形式,导入模块
通过字符串的形式,去模块中寻找指定函数,并执行
import commons as CC
DD=_import_('commons')
CC和DD是一样的 都是指 commons 模块
commons.py
def f1():
return 'F1'
def f2():
return 'F2'
def f3():
return 'F3'
index.py
import commons as cc
ff=cc.f1()
print (ff)
inp=input('请输入')
dff=cc.inp() #这个时候 就会进入 cc中找inp方法这个属性去
print (dff)
输出——————————————————————————————————————————————————————————————————————————
F1
请输入f2
Traceback (most recent call last):
File "D:/Users/Administrator/PycharmProjects/untitled/venv/reqestut_mokuai/index.py", line 6, in <module>
dff=cc.inp()
AttributeError: module 'commons' has no attribute 'inp'
************************************************************************************************************************************************************************************************************************
index.py
import commons as cc
ff=cc.f1()
print (ff)
inp=input('请输入')
#dff=cc.inp()
dff=getattr(cc,inp)#寻找模块中的 属性 方法 ; hasattr(cc,inp)判断模块中是否有这个属性方法,有则返回True ;setattr(cc,"qjbl",15)设置模块中的属性或方法 向cc代表的模块中设置全局变量 gjbl为15;delattr()删除模块中的某个属性
print (dff())
输出——————————————————————————————————————————————————————————————————————————
F1
请输入f2
F2
************************************************************************************************************************************************************************************************************************
嵌套模块导入,两种方式
import lib.test.com
from lib.test import com
*******************commssd************************
def login():
return 'login'
def logout():
return 'logout'
*******************************************
from yingshe import commssd as cmm
urls=input("请输入网址")
if urls.endswith('login'):
r=cmm.login()
print (r)
elif urls.endswith('logout'):
r=cmm.logout()
print (r)
else:
print ('404')
输入:www.login
输出——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
请输入网址wwww.login
login
**********************************************************************************************************************************************************************************************************************
from yingshe import commssd as cmm
urls=input("请输入网址")
inp=urls.split('/')[-1] #以‘#’为分割 -1表示取最后一个 字段
if hasattr(cmm,inp):
print ('you')
else:
print ('mou')
输出————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
请输入网址www.bduf/login
you
请输入网址wwww.wwwdd/fff
mou
************************************************************************8888888888888888888888888888888888888888888
浙公网安备 33010602011771号