Python必学:为什么你的程序需要一个__main__函数?

大家好,大家主意没,在 Python 中,并没有像 Java 或 C++ 中那样的强制使用 main 函数。

Python 的执行是从脚本的第一行开始,按顺序执行。然而,在编写具有多个函数和可能被其他脚本引用的模块时,定义一个主执行函数变得非常有用。这就是 if __name__ == '__main__': 发挥作用的地方。

图片

__name__ 是什么?

在 Python 脚本中,__name__ 是一个内置变量。当文件被直接运行时,__name__ 的值会被设为 '__main__'。如果文件是被导入到其他文件中的,__name__ 的值会被设置为文件的名字。利用这一特性,我们可以控制哪些代码块在被导入时执行,哪些代码块在文件作为主程序运行时执行。

使用场景

使用 if __name__ == '__main__': 的好处包括:

  • • 模块化和重用代码:通过这种方式,您可以在其他程序中重用模块,而不必担心代码会自动执行。

  • • 测试:这允许你在同一个文件中写测试代码,测试代码只会在该文件作为主程序运行时执行。

假设我们有一个简单的模块,math_operations.py,它包含几个基本的数学操作函数。此外,我们将在该文件中添加一些测试代码,以验证这些函数是否正确工作。

创建模块 math_operations.py
 

# math_operations.py


def add(x, y):

    return x + y


def multiply(x, y):

    return x * y


def main():

    # 这是主函数,用于运行程序

    print("Addition of 5 and 3 is:", add(5, 3))

    print("Multiplication of 5 and 3 is:", multiply(5, 3))


# 测试代码

if __name__ == '__main__':

    # 测试 add 函数

    assert add(2, 3) == 5, "Add function test failed"

    # 测试 multiply 函数

    assert multiply(2, 3) == 6, "Multiply function test failed"

    # 如果测试成功,输出以下语句

    print("All tests passed!")


    # 运行主函数

    main()
创建模块 use_math_operations.py

# use_math_operations.py


from math_operations import add, multiply


def main():

    # 使用导入的函数

    result_add = add(10, 5)

    result_multiply = multiply(10, 5)

    

    print("Result of add(10, 5):", result_add)

    print("Result of multiply(10, 5):", result_multiply)


if __name__ == '__main__':

    main()
运行结果
当直接运行 math_operations.py
  • • 输出所有测试通过的确认。

  • • 执行 main 函数,输出两个数学操作的结果。

    图片

当从另一个 Python 脚本use_math_operations.py导入 math_operations.py

在 use_math_operations.py 文件中,我们通过 from math_operations import add, multiply 导入了 math_operations.py 中定义的函数。这个导入操作不会触发 math_operations.py 中的 if __name__ == '__main__': 块,因此该模块中定义的测试和 main() 函数不会执行。

然后我们在 use_math_operations.py 的 main() 函数中使用了 add 和 multiply 函数,并输出了结果,这将验证这些函数能够正常工作,而原模块的测试代码和主函数没有被执行。

通过这种方式,我们不仅保证了代码的可重用性和模块化,同时也确保了能在不干扰其他脚本的情况下测试模块功能。

掌握 Python 中的 main 方法的使用不仅可以帮助你更好地组织代码,还能使其更加模块化和可重用。掌握__main__的使用,可以使你的Python代码更加结构化和模块化。无论是在进行个人项目还是协作开发中,这种模式都非常有用。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末自行领取】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值