• 【Python基础】if __name__ == ‘__main__‘:和assert函数


    📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
    📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852
    📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
    📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处


    if name == ‘main’:

    简介

    if __name__ == '__main__':
    
    • 1

    在Python中,if __name__ == '__main__' 是一个常见的代码结构和惯用法。它用于确定当前模块是作为主程序执行,还是被导入为一个模块文件。

    当一个Python脚本被执行时,解释器会将特殊变量__name__设置为'__main__'。因此,通过使用if __name__ == '__main__' 来判断当前模块是否在主程序中执行。

    主要的用途包括:

    1. 模块的测试:通过将测试代码放在if __name__ == '__main__' 的条件下,可以确保只有在直接运行模块时才会执行测试代码,而在被导入为模块时不会被执行。

    2. 执行模块的初始化操作:如果某些代码需要在模块被作为主程序执行时运行,可以将这些代码放在if __name__ == '__main__' 的条件下。

    简而言之,if __name__ == '__main__' 的使用可以让模块既可以作为独立的脚本运行,又可以作为其他模块的导入文件使用,提供了更灵活和可复用的代码组织方式。

    代码案例

    假设我们有两个文件:module1.py和module2.py。
    首先,我们来看一下module1.py的内容:

    # module1.py
    def multiply(a, b):
        return a * b
    if __name__ == '__main__':
        result = multiply(2, 3)
        print(f"The result is: {result}")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    module1.py中定义了一个名为multiply的函数,用于计算两个数的乘积。在if name == ‘main’:这个条件下,我们调用了multiply函数,并输出结果。

    接下来,我们来看一下module2.py的内容:

    # module2.py
    from module1 import multiply
    result = multiply(4, 5)
    print(f"The result is: {result}")
    
    • 1
    • 2
    • 3
    • 4

    module2.py中导入了module1模块,并调用了multiply函数计算两个数的乘积,并将结果输出。
    现在分别执行这两个模块看看结果:
    当我们执行module1.py时,if name == ‘main’:条件成立,因为__name__的值为’main’。所以,multiply(2, 3)被调用,结果为6,并输出结果:“The result is: 6”。
    当我们执行module2.py时,if __name__ == '__main__':条件不成立,因为__name__的值是"module1",而不是'__main__'。所以,multiply(4, 5)不会被调用。

    总结一下:

    • 当模块被直接执行时(作为主程序入口),__name__的值为’main’,执行if name == ‘main’:块中的代码。
    • 当模块被导入时,__name__的值为模块的名字,不等于'__main__',不执行if __name__ == '__main__':块中的代码。
      通过使用if name == ‘main’:条件,我们可以在一个模块中编写测试代码或示例代码,保证只有当该模块作为主程序入口执行时,这些代码才会被执行。这样可以方便进行模块的测试和示例运行,而不影响模块作为其他模块的导入使用。

    参考:https://blog.csdn.net/heqiang525/article/details/89879056

    assert函数

    简介

    python assert的作用:assert函数用于程序调试

    基本语法

    1、The simple form:
    assert expression

    该形式用来测试断言的expression语句,如果expression是True,那么什么反应都没有。但是如果expression是False,那么会报错AssertionError,

    2、assert断言语句可以添加异常参数,也就是在断言表达式后添加字符串信息,用来解释断言并更好的知道是哪里出了问题。格式如下:

    assert expression [, arguments]
    assert 表达式 [, 参数]
    
    • 1
    • 2

    代码案例

    当然!下面是一个简单的代码案例,展示了如何使用 assert 关键字:

    def divide(x, y):
        assert y != 0, "除数不能为零"
        return x / y
    # 测试除法函数
    print(divide(10, 2))  # 输出: 5.0
    print(divide(10, 0))  # 触发 AssertionError 异常
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在上述代码中,我们定义了一个名为 divide 的函数,用于执行两个数字的除法运算。使用 assert 来确保除数 y 不为零,如果为零则触发断言异常,并且提示错误信息。
    在打印 divide(10, 2) 的结果时,由于除数不为零,条件为真,所以程序继续执行,输出结果为 5.0。而当我们调用 divide(10, 0) 时,由于除数为零,条件为假,触发 AssertionError 异常,并输出错误信息 “除数不能为零”。
    这个简单的例子展示了如何使用 assert 来确保代码执行时的条件满足预期,帮助开发者在调试和测试过程中快速捕捉潜在的问题。

    如下案例是为了说明assert关键字后面跟着函数的话,也会被执行的,会有输出结果!做的判断是return返回值与-1,而不是print打印出来的值。

    def divide(x, y):
        assert y != 0, "除数不能为零"
        print(x/y)
        return x / y
    
    assert divide(-1, 1) == -1 #正常运行,并输出-1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    参考:https://blog.csdn.net/TeFuirnever/article/details/88883859

    在这里插入图片描述

  • 相关阅读:
    oracle数据库如何提高查询效率
    Specializing Smaller Language Models towards Multi-Step Reasoning论文精读
    vue3.0 + qiankun遇到的问题
    艾美捷ProSci丨ProSci ST2 抗体说明书
    营商环境评估流程解析——基于世行营商环境评估体系
    HTB-GoodGame
    Spring Boot要如何学习?【云驻共创】
    Java学习----线程整理
    职场能力--向上管理
    JDBC中execute、executeQuery和executeUpdate的区别
  • 原文地址:https://blog.csdn.net/weixin_51244852/article/details/133364695