zoukankan      html  css  js  c++  java
  • 113.模块原则

    模块原则

    一个独立的Python文件就是一模块,在导入模块时,模块中所有没有任何缩进的代码 都会被执行一遍。

    开发需求:
    在实际开发中,每一个模块都是独立开发的,大多都有专人负责,开发人员通常会在各自负责的模块中增加一些测试代码,仅在模块内测试使用,而被导入到其他模块中不需要执行.

    解决方案:
    __name__ 属性可以做到,测试模块的代码只在测试情况下被运行,而在被导入时不会被执行。
    __name__ 是Python的一个内置属性,记录着一个字符串,如果是被其他模块导入的,__name__ 属性值就是模块名,如果是当前执行的程序 __name__ 属性值是 __main__。

    所以对于模块制作中的代码,我们应该进行优化。

    # 定义一个全局变量
    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()

    可以根据__name__变量的结果能够判断出,是直接执行的python脚本还是被引入执行的,从而能够有选择性的执行测试代码。

    例子:

    # import hm_itcast
    from hm_itcast import name

    模块代码:

    # 定义一个全局变量
    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()
  • 相关阅读:
    链表操作
    建立简单的链表
    scanf()函数用法小结
    快速求某年某月是第几天(未整理)
    合并两个有序数组(未整理)
    如何配置JAVA的环境变量、Tomcat环境变量
    【动态规划】流水作业调度问题与Johnson法则
    分治法(二)
    分治法(一)
    HTML5入门十一---Canvas画布实现画图(二)
  • 原文地址:https://www.cnblogs.com/kangwenju/p/12882978.html
Copyright © 2011-2022 走看看