Python中 __name__ 这个变量的含义和用法如何理解?

 __name__ 变量的概念和作用

概念:

  • __name__ 是一个内置变量,用于表示 Python 模块的名字。
  • 当一个 Python 文件被直接运行时,__name__ 的值是 "__main__"
  • 当一个 Python 文件被作为模块导入时,__name__ 的值是模块的名称。

作用:

  • 通过检查 __name__ 的值,可以控制某些代码块仅在文件被直接运行时执行,而不在模块导入时执行。
  • 常用于编写可复用的模块,同时又能在模块本身测试代码。

通俗解释

想象你写了一本书,你在封面上写上了书的名字(相当于模块的名字)。如果你是作者,你知道自己正在写这本书(相当于直接运行脚本),但如果有人拿着这本书读,他们会看到书名,而不是知道书是自己写的(相当于被导入为模块)。

举例说明

以下是一个示例,展示了如何使用 __name__ 变量:

示例文件:mymodule.py

def hello():
    print("Hello from mymodule!")


if __name__ == "__main__":
    # 只有在直接运行 mymodule.py 时,这部分代码才会执行
    print("mymodule is being run directly")
    hello()
else:
    # 在 mymodule 被导入时,这部分代码不会执行
    print("mymodule has been imported")
    print('__name__ :', __name__)

 

直接运行 mymodule.py 时的输出:

mymodule has been imported
__name__ : mymodule
Hello from mymodule!

 

 

从另一个文件导入 mymodule:

示例文件:test_import.py

import mymodule

mymodule.hello()

运行 test_import.py 时的输出:

mymodule has been imported
Hello from mymodule!

解释:

  1. 直接运行 mymodule.py:

    • __name__ 的值是 "__main__", 所以 if __name__ == "__main__": 下面的代码块会被执行。
    • 输出显示 mymodule is being run directlyHello from mymodule!
  2. 导入 mymoduletest_import.py:

    • __name__ 的值是 "mymodule",所以 if __name__ == "__main__": 下面的代码块不会被执行。
    • 输出显示 mymodule has been imported,然后 mymodule.hello() 被调用,输出 Hello from mymodule!

通过这种方式,可以在模块被直接运行时执行特定的代码,而在模块被导入时保持这些代码不被执行,从而实现更好的代码复用和模块化

 

 

 

 

 

 

posted @ 2024-07-02 22:29  AlphaGeek  阅读(254)  评论(0)    收藏  举报