名称为 __main__.py 的 Python 模块在导入时不会运行

问题描述 投票:0回答:2

有人问了我一个问题,老实说我以前没有尝试过,所以很有趣的是知道当我们命名一个模块时到底会发生什么

__main__.py
。所以我将一个模块命名为
__main__.py
,并将其导入到另一个名为
test.py
的文件中。令人惊讶的是,当我尝试运行
test.py
时,它没有打印任何内容,并且
__main__.py
的任何功能在
test.py
中均不可用。以下是这些文件的内容:

以下是

__main__.py
的内容:

def add(a,b):
    result = a+b
    return result

print(__name__)

if __name__=='__main__':
    print(add(1,2))

以下是

test.py
的内容:

import __main__

当我将

__main__.py
重命名为其他名称(例如
func.py
)时,程序可以正确运行并打印模块名称。

python python-module
2个回答
1
投票

当您运行

python test.py
时,
test.py
模块本身已经存在于
sys.modules
中,并且带有密钥
"__main__"
import __main__
将仅返回此现有缓存命中,因此
__main__.py
上是否存在
sys.path
文件是无关紧要的。


1
投票

因此,当您执行

import __main__
时,它首先搜索已导入的模块,并在 test.py 中找到
入口点
(即
sys.modules['__main__']
),因此它只是返回该结果。

© www.soinside.com 2019 - 2024. All rights reserved.