python语言 if __name__ == ‘__main__‘:说明

在 Python 中,if __name__ == '__main__': 是一个常见的条件判断语句,用于确保某些代码块只在当前脚本作为程序入口点(即直接执行)时执行,而不是在被其他脚本导入作为模块时执行。理解这个语句的关键在于理解 __name__ 变量的含义。

__name__ 变量

  • 当一个 Python 脚本被直接运行(如在命令行中使用 python script.py)时,其内部的 __name__ 变量会被自动设置为字符串 '__main__'

  • 当一个脚本被其他脚本通过 import 语句导入时,其内部的 __name__ 变量会被设置为该脚本的文件名(不含扩展名)。例如,如果您有一个名为 my_module.py 的脚本,并在另一个脚本中使用 import my_module 导入它,那么在 my_module.py 中,__name__ 的值将是 'my_module'

if __name__ == '__main__': 的作用

将需要在直接运行脚本时执行的代码块放在 if __name__ == '__main__': 下面,可以确保这些代码只有在直接运行该脚本时才会被执行。当脚本被其他脚本导入时,这些代码不会被执行。

示例

 

python

def greet(name):
    print(f"Hello, {name}!")

if __name__ == '__main__':
    greet("World")
    print("This message is only shown when the script is run directly.")

在这个例子中:

  • greet 函数是模块的公共接口,无论脚本如何被使用,该函数总是可以被导入和调用。

  • if __name__ == '__main__': 语句下的两行代码只有在直接运行该脚本时才会执行:

    • greet("World") 会打印 "Hello, World!"。
    • print("This message is only shown when the script is run directly.") 会打印一条提示消息。

如果另一个脚本 import 了这个模块:

 

python

import my_script

my_script.greet("User")

此时,my_script 中的 greet("World") 和 "This message is only shown when the script is run directly." 两行代码不会被执行,因为它们位于 if __name__ == '__main__': 条件语句内,而此时 my_script.__name__ 不等于 '__main__'

用途

常见的用途包括:

  • 运行脚本的主程序逻辑:将程序的主要执行流程、命令行参数解析、入口点功能等放在 if __name__ == '__main__': 下面,确保只有在直接运行脚本时才会执行。

  • 测试和示例代码:在模块内部编写测试或示例代码,利用 if __name__ == '__main__': 保护这些代码,使其在模块被导入时不会被执行。

  • 防止重复执行:某些初始化、资源分配、日志设置等操作应当只在脚本直接运行时执行一次。将其置于 if __name__ == '__main__': 下,可以避免在模块被多次导入时重复执行。

总的来说,if __name__ == '__main__': 是一种有效的代码组织方式,有助于区分模块的公共接口(可供其他脚本导入使用)和特定于脚本本身的执行逻辑,确保代码的正确性和模块的可重用性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三希

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值