反射相关与模块导入
1通过反射导入模块:
#!/usr/bin/env python # encoding: utf-8 def run(): inp = input("请输入您想访问页面的url: ").strip() modules, func = inp.split("=")#分割模块与方法 print( modules, func) #当主调和被调文件不在同一个目录时,需要挎包调用 obj = __import__('dalan_test.' + modules,fromlist=True) #判断对象中是否有func if hasattr(obj, func): func = getattr(obj, func) func()#调用函数 else: print("404") if __name__ == '__main__': run()
2.在一个包中普通模块调用__init__.py下的类或者函数
#在Python工程里,当python检测到一个目录下存在__init__.py文件时,python就会把它当成一个模块(module)
#Python中的package定义很简单,其层次结构与.py所在目录的层次结构相同,比较关键的一点是package中必须包含一个__init__.py的文件(可以为空 也可以不为空)
备注:需要在__init__.py中加上: __all__ = ["模块名"] ,否则引用不到
普通模块导入并应用__init__.py的内容
相关连接:
https://www.liujiangblog.com/course/python/48 .............................................反射机制
https://www.cnblogs.com/zhangtao-0001/p/14860579.html...........................python包中的 init.py 函数的含义和作用