GVKun编程网logo

浅析python 中__name__ == ''__main__'' 的作用(python __name__=='__main__'作用详解)

19

本文将带您了解关于浅析python中__name__==''__main__''的作用的新内容,同时我们还将为您解释python__name__=='__main__'作用详解的相关知识,另外,我们还

本文将带您了解关于浅析python 中__name__ == ''__main__'' 的作用的新内容,同时我们还将为您解释python __name__=='__main__'作用详解的相关知识,另外,我们还将为您提供关于if __name__ =&#__main__&# 在 Python 中做什么?、if __name__ == "__main__" 的作用、if __name__ == ''__main__'': 的作用、if __name__ == ''__main__'':的作用的实用信息。

本文目录一览:

浅析python 中__name__ == ''__main__'' 的作用(python __name__=='__main__'作用详解)

浅析python 中__name__ == ''__main__'' 的作用(python __name__=='__main__'作用详解)

很多新手刚开始学习python的时候经常会看到python 中__name__ = \''__main__\'' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__name__ = ''__main__'' 的作用,到底干嘛的?

有句话经典的概括了这段代码的意义:

“Make a script both importable and executable”

意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行

这句话,可能一开始听的还不是很懂。下面举例说明:

先写一个模块:

?

1

2

3

4

5

#module.py

def main():

  print "we are in %s"%__name__

if __name__ == ''__main__'':

  main()

这个函数定义了一个main函数,我们执行一下该py文件发现结果是打印出”we are in __main__“,说明我们的if语句中的内容被执行了,调用了main():

但是如果我们从另我一个模块导入该模块,并调用一次main()函数会是怎样的结果呢?

?

1

2

3

#anothermodle.py

from module import main

main()

其执行的结果是:we are in module

但是没有显示”we are in __main__“,也就是说模块__name__ = ''__main__'' 下面的函数没有执行。

这样既可以让“模块”文件运行,也可以被其他模块引入,而且不会执行函数2次。这才是关键。

总结一下:

如果我们是直接执行某个.py文件的时候,该文件中那么”__name__ == ''__main__''“是True,但是我们如果从另外一个.py文件通过import导入该文件的时候,这时__name__的值就是我们这个py文件的名字而不是__main__。

这个功能还有一个用处:调试代码的时候,在”if __name__ == ''__main__''“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!

if __name__ =&#__main__&# 在 Python 中做什么?

if __name__ =&#__main__&# 在 Python 中做什么?

if __name__ =

你可能在 python 脚本中经常看到这行代码 if __name__=="__main__": ,但不知道它的实际用途是什么。别担心,因为在这个简短的博客中我们将讨论这个

当您直接运行程序或脚本时,python 会自动将“main”分配给特殊的name变量。这样做基本上是为了表明该文件是此处的“主”脚本,并且正在直接运行而不是导入到另一个脚本中。

要理解这一点,请创建一个新的 python 脚本,假设将其命名为“example.py”并写入:

print("name of script: ", __name__)
登录后复制

运行此命令,您将看到输出的脚本名称:__main__。这只是因为文件是直接运行的。

现在,创建另一个python脚本文件并将example.py导入到这个文件中。运行它,您将看到不同的结果,显示“脚本名称:示例”。这只是因为现在我们不是直接运行它,而是导入脚本并间接运行它。因此,python 现在显示文件的实际名称。

立即学习“Python免费学习笔记(深入)”;

让我们对示例文件进行一些更改,以便我们更好地理解它。

def s_name():
    print("name of script: ", __name__)

s_name()

def greet():
    print("hello! how are you doing?")

if __name__=="__main__":
    greet()

登录后复制

现在,如果您直接运行此命令,一切都会完美执行,但如果您运行导入 example.py 脚本的其他文件,您会注意到greet 函数调用未执行。这是为什么?

这是因为 if 条件。条件的作用是检查文件是否正在直接运行。如果直接运行,main将被分配给特殊变量name,这将使这个条件成立,并且条件内的所有内容都将照常运行。

但另一方面,如果您将其导入另一个文件并从那里间接运行它,那么条件语句将不为真,并且放置在条件中的任何内容都不会被执行。

这就是这个条件语句的意义。 当我们将脚本作为模块导入时,它可以防止python解释器自动运行不必要的代码行。

但是,即使我们将脚本作为模块导入,我们也可以调用这些函数。例如:

import example

example.greet()
登录后复制

这样,即使条件不满足,我们也可以完美地调用导入模块中的任何函数。

以上就是if __name__ =&#__main__&# 在 Python 中做什么?的详细内容,更多请关注php中文网其它相关文章!

if __name__ ==

if __name__ == "__main__" 的作用

作用:当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行。

例子:

# file one.py
def func():
    print("func() in one.py")

print("top-level in one.py")

if __name__ == "__main__":
    print("one.py is being run directly")
else:
    print("one.py is being imported into another module")

# file two.py
import one

print("top-level in two.py")
one.func()

if __name__ == "__main__":
    print("two.py is being run directly")
else:
    print("two.py is being imported into another module")

如果你执行one.py文件,

python one.py
会输出:

top-level in one.py
one.py is being run directly
如果你执行two.py文件,

python two.py
会输出:

top-level in one.py
one.py is being imported into another module
top-level in two.py
func() in one.py
two.py is being run directly

 总结:当模块导入时 if __name__ == "__main__" 代码块不被执行,写 if __name__ == "__main__" 是为了防止模块导入,导致又重新运行了一遍导入的模块的代码。

if __name__ == ''__main__'': 的作用

if __name__ == ''__main__'': 的作用

python 文件执行方式:

  1. 作为脚本直接执行。

  2.import 到其他的 python 脚本中被调用执行。

因此,if __name__ == ''__main__'':作用就是控制这两种情况执行代码的过程。

1)如果作为脚本直接运行,那么 if __name__ == ''__main__'':语句之前和之后的代码都会被执行;

2)如何作为模块被调用,那么只会执行 if __name__ == ''__main__'':语句之前的代码;

运行原理:

  每个 python 文件都会包含内置的变量__name__,当该模块当做脚本直接执行时,__name__等于‘__main__’,如果该模块 import 到其他模块或者文件中时,则该模块的__name__等于模块名称 (不包含后缀.py)。

"__main__" 始终指当前执行模块的名称 (包含后缀.py)。

def qqxing():
    print(''qqxing'')
year = 2018
import sys
print(sys.modules[''__main__''].qqxing())

print(''__name__:'',__name__)

if __name__ == ''__main__'':
    print(''123'')

 

if __name__ == ''__main__'':的作用

if __name__ == ''__main__'':的作用

if __name__ == ''__main__'':的作用

一个python文件通常有两种使用方法,第一是作为脚本直接执行,第二是 import 到其他的 python 脚本中被调用(模块重用)执行。因此 if __name__ == ''main'': 的作用就是控制这两种情况执行代码的过程,在 if __name__ == ''main'': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而 import 到其他脚本中是不会被执行的。举例说明如下:

  • 直接执行

直接执行 test.py,结果如下图,可以成功 print 两行字符串。即,if __name__=="__main__": 语句之前和之后的代码都被执行。

  • import 执行

然后在同一文件夹新建名称为 import_test.py 的脚本,输入如下代码:

执行 import_test.py 脚本,输出结果如下:

只输出了第一行字符串。即,if __name__=="__main__": 之前的语句被执行,之后的没有被执行。

if __name__ == ''__main__'':的运行原理

每个python模块(python文件,也就是此处的 test.py 和 import_test.py)都包含内置的变量 __name__,当该模块被直接执行的时候,__name__ 等于文件名(包含后缀 .py );如果该模块 import 到其他模块中,则该模块的 __name__ 等于模块名称(不包含后缀.py)。

“__main__” 始终指当前执行模块的名称(包含后缀.py)。进而当模块被直接执行,__name__ == ''main'' 结果为真。

为了进一步说明,我们在 test.py 脚本的 if __name__=="__main__": 之前加入 print(__name__),即将 __name__ 打印出来。文件内容和结果如下:

可以看出,此时变量__name__的值为"__main__"。

再执行 import_test.py,执行结果如下:

此时,test.py中的__name__变量值为 test,不满足 __name__=="__main__" 的条件,因此,无法执行其后的代码。

关于浅析python 中__name__ == ''__main__'' 的作用python __name__=='__main__'作用详解的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于if __name__ =&#__main__&# 在 Python 中做什么?、if __name__ == "__main__" 的作用、if __name__ == ''__main__'': 的作用、if __name__ == ''__main__'':的作用等相关知识的信息别忘了在本站进行查找喔。

本文标签: