标签:
一、反射
定义:利用字符串形式去对象(模块)中操作(寻找/检查/删除/设置)成员
#getattr:获取模块中属性
#hasattr:检查模块中是否存在某个成员(函数)
#delattr:删除模块中成员
#setattr:设置某块中
一般常用反射模式:
import fanshe_commons #导入访问函数的模块【fanshe_commons模块中设置有login,logout,home等函数】
def run():
inp = input("请输入访问URL:")
if inp == ‘login‘: #
fanshe_commons.login() #调用fanshe_commons模块中login函数,当输入输入URL为login时,执行login函数,此时比忘记执行函数要带login()
elif inp == ‘logout‘:
fanshe_commons.logout()
elif inp == ‘home‘:
fanshe_commons.home()
else:
print("404")
if __name__ == ‘__main__‘: #if __name__ == ‘__main__‘表示只在当前模块执行主函数
run()
反射阶级02:
hasattr:检查模块中是否存在某个成员(函数)
#getattr:获取模块中属性
import fanshe_commons ##导入访问函数的模块 fanshe_commons某块中含有login,logout,home函数
def run():
inp =input("请输入要访问的URL:")#inp属于一个字符串,那么fanshe_commons.inp() != fanshe_commons.login()
if hasattr(fanshe_commons,inp): # #hasattr:检查模块中是否存在某个成员(函数)
func = getattr(fanshe_commons,inp) #getattr:获取模块中属性
func()
else:
print("404")
if __name__ == ‘__main__‘:
run()
反射阶级03:
应用“_import_”方法:可以对多个模块中的方法进行调用,不需挨个挨个通过import导入某块
格式:#模块/方法
import fanshe_commons ##导入访问函数的模块 fanshe_commons某块中含有login,logout,home函数
def run():
#commons/login 注意:在输出方式也需要按照“某块/方法”进行
inp =input("请输入要访问的URL:")#inp属于一个字符串,那么fanshe_commons.inp() != fanshe_commons.login()
m,f = inp.split(‘/‘) #将mn比作为一个模块,f为这个模块下的函数或者成员
obj = __import__(m) #将模赋值给一个值
if hasattr(obj,f): # #hasattr:检查模块中是否存在某个成员(函数)
func = getattr(obj,f) #getattr:获取模块中属性
func()
else:
print("404")
if __name__ == ‘__main__‘:
run()

阶级04:在不同的文件夹中导入函数
# obj = __import__("lib."+m,fromlist=True) #导入两个不同的文件夹中的函数
import fanshe_commons ##导入访问函数的模块 fanshe_commons某块中含有login,logout,home函数
def run():
#commons/login 注意:在输出方式也需要按照“某块/方法”进行
inp =input("请输入要访问的URL:")#inp属于一个字符串,那么fanshe_commons.inp() != fanshe_commons.login()
m,f = inp.split(‘/‘) #将mn比作为一个模块,f为这个模块下的函数或者成员
# obj = __import__(m) #将模赋值给一个值
obj = __import__("lib."+m,fromlist=True) #导入两个不同的文件夹中的函数
if hasattr(obj,f): # #hasattr:检查模块中是否存在某个成员(函数)
func = getattr(obj,f) #getattr:获取模块中属性
func()
else:
print("404")
if __name__ == ‘__main__‘:
run()
扩展
几种常见的导入模块方式有:
A:import XXX模块
B: from xxx文件夹 import +方法
C:obj = _import_("模块")
D:obj = _import_("文件夹.oo.xx",fromlist=True)
二、正则表达式
三、
标签:
原文地址:http://www.cnblogs.com/lcj0703/p/5576094.html