python中__name__=”__main__”

python中 if __name__=”__main__”

最近看很多代码,都发现了if __name__=”__main__”这个语句,突然有点不理解,所以搜一波理解一下。
通俗一点理解:假如我是Gsuhy.py,在别人眼中我是(__name__ == 'Gsuhy'),而在我自己眼中,我是(__name__ == '__main__')
if __name__=”__main__”的意思就是,当py文件运行时,if __name__=”__main__”之下的代码会被运行,当py文件以模块形式被导入时,if __name__=”__main__”之下的代码就不会被运行

也就是说if __name__=”__main__”实际上就是一个程序入口。由于模块间相互引用,不同模块可能会有一样的定义,但是入口程序只有一个,选中哪个入口程序取决于__name__的值。
看个例子:
one.py

PI = 3.14

def train():
    print("PI:", PI)

train()

two.py

from one import PI
def calc_round_area(radius):
    return PI * (radius ** 2)


def calculate():
    print("round area: ", calc_round_area(2))

calculate()

then
运行two.py的时候

output:
PI: 3.14
round area:  12.56

那么现在把one.py改一下
加一个if __name__ == "__name__"

PI = 3.14

def train():
    print("PI:", PI)

if __name__ == "__main__":
    train()

现在就不会输出PI=3.14
那么我理解的就是一个py文件导入另外一个模块,所导入的那个模块含有if __name__ == "__main__",那么这个py文件就是从if __name__ == "__main__"开始,而不是从模块的开头开始。


   转载规则


《python中__name__=”__main__”》 Gsuhy 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录