python中的__name__是个啥?

__name__是Python中的一个特殊变量,表示模块或脚本的名称。当脚本作为主程序运行时,__name__为main,用于区分直接运行的代码和导入时的行为。这有助于实现模块化和代码复用,避免不必要的操作在导入时执行。
摘要由CSDN通过智能技术生成

pycharm中随便打开一个文件,在special variables中能看到一个__name__的变量
在很多python脚本中,也经常能看到if name == "main"这样一行
所以_name_到底是个啥?
首先,我们可以确定这是一个str字符变量
在这里插入图片描述
“在 Python 中,name 是一个特殊的内置变量,它用于表示一个模块的名称。具体来说,它表示当前模块的名称或正在执行的脚本的名称。”
上面这句话是个官方解释,有可能有点云里雾里,看懂了又好像不懂。那是因为我们对模块和脚本这些概念不是十分清晰。
先来解释一下脚本(script):脚本通常指一段可以直接执行的代码,以 .py 扩展名结尾。也就是平常自己写的py文件就是一个脚本。
模块(module):模块也是py文件,只不过这个py文件有概念上的规范和限制,不是所有py文件都可以叫模块,必须是用来封装代码、使代码可以被重复使用、可以在不同的脚本中被导入和调用的py文件才称得上是module
所以可以简单的理解:脚本就是广义的py文件(py文件也就是Python文件),模块是狭义的py文件,它们都是py文件。

ok,讲完了脚本和模块,说回正题。

当一个 Python 脚本被直接运行时,它的 name 会被设置为 “main”,表示该脚本正在作为主程序执行。而当一个模块被导入到其他脚本中时,它的 name 会被设置为模块的名称。这样一来,当你希望某个模块在被直接运行时执行一些特定的操作,但在被其他模块导入时不执行这些操作。通过将这些可执行的代码放在 if name == “main”: 条件判断内部,这些代码只有在模块作为主程序运行时才会被执行。这样,当你直接运行模块时,这些代码会被执行,但如果你将模块导入到其他地方,这些代码就不会执行。通过这种机制,你可以将模块中的功能区分为两种类型的代码,使代码更具模块化和可重用性。这也能确保在导入模块时不会执行无关的操作,只有在需要的时候才会执行。
举个例子就能很好明白了:

# 模块示例

def some_function():
    print("This function can be reused in other modules.")

if __name__ == "__main__":
    # 这里的代码只有在该脚本直接运行时才会执行
    print("This script is run directly.")
    # 可以在这里放置一些在直接运行时需要执行的操作
    some_function()

当这个py文件作为主程序运行时,两个print都会输出,因为这时候的__name__是等于main的。如果这个py文件被做为module,导入道其他py文件去,在其他py文件中运行时,这个modele的__name__会被设置为他的模块名,这时候第二个print就不会执行了,也不会有任何输出。

现在,你明白了吗

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值