最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

Python 中的 if __name__ == ‘__main__’ 该如何理解

XAMPP案例 admin 780浏览 0评论
Python学习笔记

 if __name__ == ‘__main__’

PYTHON0100
初学Python不久,Python 的确是简单的,优雅的,但也有很多问题是不太容易理解的。在学习列表过程中,一个实例。

def reverseWords(input):
# 通过空格将字符串分隔符,把各个单词分隔为列表
inputWords = input.split(” “)
# 翻转字符串
# 假设列表 list = [1,2,3,4],
# list[0]=1, list[1]=2 ,而 -1 表示最后一个元素 list[-1]=4 ( 与 list[3]=4 一样)
# inputWords[-1::-1] 有三个参数
# 第一个参数 -1 表示最后一个元素
# 第二个参数为空,表示移动到列表末尾
# 第三个参数为步长,-1 表示逆向
inputWords=inputWords[-1::-1]
# 重新组合字符串
output = ‘ ‘.join(inputWords)
return outputif __name__ == “__main__”:    input = ‘I like runoob’
rw = reverseWords(input)
print(rw)
if __name__ == “__main__”很难理解。

这个应该是作为Python初学者的共同的问题,对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Java,C# 等。如果你接触过这些语言,对于程序入口这个概念应该很好理解,C 和 C++ 都需要有一个 main 函数来作为程序的入口,也就是程序的运行会从 main 函数开始。同样,Java 和 C# 必须要有一个包含 Main 方法的主类来作为程序入口。

而 Python 则有不同,它属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,而是动态的逐行解释运行。也就是从脚本第一行开始运行,没有统一的入口。

一个 Python 源码文件除了可以被直接运行外,还可以作为模块(也就是库)被导入。不管是导入还是直接运行,最顶层的代码都会被运行(Python 用缩进来区分代码层次)。而实际上在导入的时候,有一部分代码我们是不希望被运行的。

说了这么多返回上面的例子还是不太懂!

我们看下面的例子:

有个文件rzl.py,内容如下:

PI=3.14def main():

print(“PI:”,PI)

 

main()

这个文件里我们定义了一个变量,然后还有个main函数来输出定义的变量,文件执行输出:PI:3.14

再来一个文件,rmj.py用于计算圆的面积,这个文件里面需要用到rzl.py中的PI变量,那么我们从rzl.py中把PI变量导入到rmj.py中:

from rzl import PIdef rmj(banjing):

return PI*(banjing**2)

 

def main():

print(“圆面积:”,rmj(2))

 

main()

运行rmj.py输出结果为:

PI:3.14

圆面积:12.56

从这里看到rzl.py中的main也被运行了,但是实际上我们不需要它被运行,提供main也只是为了用里面的PI,这时候,if __name__ == “__main__”:就派上用处了,我们把rzl.py修改如下:
PI=3.14def main():

print(“PI:”,PI)

if __name__ == “__main__”:

 

main()

然后再运行rmj.py输出结果为:

圆面积:12.56

然后再运行rzl.py输出结果为:

PI:3.14

这才我们需要的结果。

 

if __name__ == '__main__' 就相当于是 Python 模拟的程序入口。Python 本身并没有规定这么写,这只是一种编码习惯。由于模块之间相互引用,不同模块可能都有这样的定义,而入口程序只能有一个。到底哪个入口程序被选中,这取决于 __name__ 的值。__name__ 是内置变量,用于表示当前模块的名字。
所以,if __name__ == '__main__' 我们简单的理解就是: 如果模块是被直接运行的,则代码块被运行,如果模块是被导入的,则代码块不被运行。
Python 并没有在太多的地方规定要如何如何,很多的用法只是惯用法。这些用法或是为了让代码看起来更优雅,或是前人的经验。使用 Python 是有无限可能的,你可以写出很多简洁优雅的代码。

转载请注明:XAMPP中文组官网 » Python 中的 if __name__ == ‘__main__’ 该如何理解

您必须 登录 才能发表评论!