标签:
一、反射
定义:利用字符串形式去对象(模块)中操作(寻找/检查/删除/设置)成员
#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