• 114.模块中的__all__


    模块中的__all__

    例如模块制作中自定义的hm_itcast.py
    # 定义一个全局变量
    name = "自定义模块"
    
    # 定义一个函数求和
    def add2num(a, b):
        return a + b
    
    # 自定义一个人类
    class Person(object):
        pass
    
    # 定义一个函数, 用于测试
    def test():
        # 测试全局变量
        print(name)
        # 测试函数
        ret = add2num(10, 20)
        print(ret)
        # 测试类
        p = Person()
        print(p)
    
    # 解决方案
    if __name__ == '__main__':
        # 调用函数
        test()

    没有__all__

    如果hm_itcast.py中没有__all__,如果其他模块在导入hm_itcast.py时候,使用的from hm_itcast import *。

    # 导入模块
    from hm_itcast import *
    
    # 全局变量
    print(name)
    # 函数
    ret = add2num(10, 20)
    print(ret)
    #
    p = Person()
    print(p)

    有__all__

    如果hm_itcast.py中有__all__,如果其他模块在导入hm_itcast.py时候,使用的from hm_itcast import *。

    # __all__变量保存全局变量,函数,类的字符串名字
    __all__ = ["name", "add2num"]
    
    # 定义一个全局变量
    name = "自定义模块"
    
    # 定义一个函数求和
    def add2num(a, b):
        return a + b
    
    # 自定义一个人类
    class Person(object):
        pass
    
    # 定义一个函数, 用于测试
    def test():
        # 测试全局变量
        print(name)
        # 测试函数
        ret = add2num(10, 20)
        print(ret)
        # 测试类
        p = Person()
        print(p)
    
    # 解决方案
    if __name__ == '__main__':
        # 调用函数
        test()

    如果一个模块中有__all__变量,那么也就意味着这个变量中的元素,不会被from 模块名 import *时导入。

    例子:

    # 模块中的__all__ 配合模块导入 from 模块名 import *使用的
    
    from hm_itcast import *
    
    print(name)
    print(add2num(10, 10))
    # print(Person())
    
    import hm_itcast
    print(hm_itcast.Person())

    模块代码:

    # 主要对模块使用者 使用from 模块名 import *进行约束
    __all__ = ["name", "add2num"]
    
    # 定义一个全局变量
    name = "自定义模块"
    
    # 函数
    def add2num(a, b):
        return a + b
    
    # 自定义人类
    class Person(object):
        pass
    
    # 程序员需要对自己定义的模块需要进行自测
    def tt():
        print(name)
        print(add2num(10, 20))
        print(Person())
    
    
    # 执行tt() 是程序员在自测需要执行的代码
    # 如果被其他模块导入 那么不应该执行tt()
    
    # __name__的数值变化
    # 如果直接运行此模块
    # __name__ = __main__
    # 如果被导入使用的时候
    # __name__ = hm_itcast
    # 判断程序的入口
    if __name__ == '__main__':
        tt()
  • 相关阅读:
    jQuery中ajax的4种常用请求方式
    前端常见浏览器兼容性问题解决方案
    平衡二叉树---将有序数组转换为二叉搜索树
    equals
    Java中的System.out.println
    System.arraycopy --全面解释(就是那么有爱心)
    计算机网络实验-ACL-OSPF-RIP
    pip install lxml
    Spark-shell --常用命令 (command)
    《Thinking in Java》---Summary of Chapter 2
  • 原文地址:https://www.cnblogs.com/kangwenju/p/12883056.html
Copyright © 2020-2023  润新知