python的学习之路day6

Posted smelond

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的学习之路day6相关的知识,希望对你有一定的参考价值。

反射

利用字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)成员(函数),反射

用了一个仿网页的get方法实现

commons.py文件

commons.py
def login():
    print("登录页面")


def logout():
    print("退出页面")


def home():
    print("主页面")

 index.py文件

import commons  # 调用commons模块

def run():
    url = input("请输入要访问的url:")
    """
    url==字符串类型,如果url==“login”
    commons.url()   显然,这样是不对的,因为这样执行commons会去他里面找他是否有url这个函数,如果没有,直接报错
    利用字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)成员(函数),反射
    """
    # setattr()
    # delattr()
    if hasattr(commons, url):  # url==字符串,而现在,url相当于等于一个函数,我们输入的函数,用hasattr去判断是否存在,返回值True或False
        func = getattr(commons, url)  # 用getattr拿取这个函数,比如url==login,那么也就是说现在(func==commons.login)
        func()  # 然后我们再来执行以下func,就表示执行commons里面的函数
    else:
        print("404")  # 如果hasattr没有检查到,就执行这句404


if __name__ == ‘__main__‘:  # __name__ 是当前模块名,当模块被直接运行时模块名为 __main__ 。这句话的意思就是,当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行。
    run()

输出:
请输入要访问的url:login
登录页面

 从上面可以看出来,我们只能访问一个模块,如果增加一个模块,我们需要去import里面继续添加,当然,python也想过这个问题,所以import也可以传递字符串

一个小小的测试:

#文件:commons.py
def login():
    print("登录页面")


def logout():
    print("退出页面")


def home():
    print("主页面")


#文件:import_test.py
obj = __import__("commons")
obj.login()
obj.logout()
obj.home()

输出:
登录页面
退出页面
主页面

 

以上是关于python的学习之路day6的主要内容,如果未能解决你的问题,请参考以下文章

python的学习之路day6

Python学习之路-python基础课 (day6)

python学习之路-day6-面向对象

Python-模块使用-Day6

Python之路Day6

Python之路_Day6