# !/usr/bin/env python # -*- coding:utf8 -*- # from lib import account # url = input("请模拟输入 url 页面: ") # # if url.endswith("login"): # r = account.login() # print(r) # # elif url.endswith("logout"): # r = account.logout() # print(r) # # elif url.endswith("nb"): # r = account.nb() # print(r) # # else: # print("404") # 当account中含有很多的函数体时,当前的主程序 index.py ,就要写很多的elif 条件来判断。 # 而通过“反射”, 根据用户的输入是什么,再去account中调用相应的函数才比较合适 # from lib import account # # input_info = input("请模拟输入相应的url: ") # # url = input_info.split("/")[-1] # if hasattr(account, url): # target_func = getattr(account, url) # r = target_func() # print(r) # # else: # print("404") """ 上述一个不好的地方是,所有的函数需要都写到单一的模块account中, 但是通常情况下,每个函数是有分类的。 不同种类的模块,包含不同的函数 """ ''' 对上述主程序继续优化 要求用户输入: 模块名/函数名(account/login) ''' modul_url = input("请输入url:(模块名/函数名)") target_module, target_func = modul_url.split("/") # 获取导入的模块 module = __import__("lib." + target_module, fromlist=True) if hasattr(module, target_func): result = getattr(module, target_func) ret = result() print(ret) else: print("404")