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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

posted on 2018-05-15 18:41  JuGooLar  阅读(219)  评论(0)    收藏  举报

导航