Python中的__name__

1. 运行环境

  • Python3.9.6

2. __name__

__name__属于Python中的内置类属性,代表对应程序名称。如果当前运行的程序是主程序,此时__name__的值就是__main__,反之,则是对应的模块名。以一个例子来说明:

创建first_module.py文件,文件内容及运行first_module.py文件的结果如下所示:

print("first_module's __name__:", __name__)

# 运行结果
# first_module's __name__: __main__

接着,创建second_module.py文件,在该文件中导入first_module.py文件,文件内容及运行second_module.py文件的结果如下所示:

import first_module

# 运行结果
# first_module's __name__: first_module

如上所示:

  1. 当运行first_module.py文件时,此时__name__的值为__main__,即代表主程序。而当运行second_module.py是,此时打印出的__name__为first_module,即对应module的name。

3. 使用场景

多用于模块自身的调试。比如,修改first_module.py文件,增加函数first_module_func,然后运行first_module.py文件,此时的运行结果如下,可以看到此时由于__name__的取值为__main__,所以会运行if语句中调用的函数的内容。

print("first_module's __name__:", __name__)

def first_module_func(a, b):
    print("a+b=", a+b)

if __name__ == '__main__':
    first_module_func(1, 2)

# 运行结果
# first_module's __name__: __main__
# a+b= 3

接着,运行second_module.py文件,文件内容和运行结果如下,即由于此时的first_module.py文件中__name__不等于__main__,所以不会执行first_module_func函数。

import first_module

# 运行结果
# first_module's __name__: first_module

因此,当我们在调试first_module.py文件中的一些函数时,可以通过这种方式来运行需要调试的函数,比如上面定义的first_module_func函数。此时调试通过之后也不需要删除调试的代码,其他模块引用时不会执行调试代码,从而输出一些无用信息。

你可能感兴趣的:(Python,python,开发语言)