如果__name__ =='__main__'python

Jas*_*Zap 0 python

我已经看了很多关于这个的文章

if __name__ == '__main__'
Run Code Online (Sandbox Code Playgroud)

但没有得到..我将与您分享代码,请您简要介绍一下。

我创建了一个文件“ ab.py”

def a():
    print('A function in ab file');

a()
Run Code Online (Sandbox Code Playgroud)

第二个文件是“ xy.py”

import ab

def b():
    print('b function')

def x(): print ('s');

x()

if __name__ == "__main__" :b()
Run Code Online (Sandbox Code Playgroud)

当我执行此代码时,此输出即将到来

A function in ab file
s
b function
Run Code Online (Sandbox Code Playgroud)

现在,我想知道这是什么意思,实际上是在做什么代码,我们为什么要实现它?没有它,我们的代码也可以工作

if __name__ == "__main__" :b()
Run Code Online (Sandbox Code Playgroud)

Ada*_*hes 9

您应该养成几乎总是使用它的习惯。

if __name__ == '__main__':当您显式运行文件时,所有后续操作都将运行。

python myfile.py
Run Code Online (Sandbox Code Playgroud)

但是,如果您myfile.py在其他地方导入:

import myfile
Run Code Online (Sandbox Code Playgroud)

什么if __name__ == '__main__':都不会被调用。


mak*_*kis 5

下面是一个理解该语句的非常简单的示例:

假设我们有以下名为 using_name.py的python脚本


# Filename: using_name.py

if __name__ == '__main__':
    print 'This program is being run by itself'
else:
    print 'I am being imported from another module'
Run Code Online (Sandbox Code Playgroud)

现在,尝试做以下两件事,看看会发生什么:


1)直接运行脚本

$ python using_name.py
Run Code Online (Sandbox Code Playgroud)

结果

This program is being run by itself
Run Code Online (Sandbox Code Playgroud)

2)导入脚本

$ python
import using_name
Run Code Online (Sandbox Code Playgroud)

结果

I am being imported from another module
Run Code Online (Sandbox Code Playgroud)