Python中的if 您所在的位置:网站首页 python中的if什么意思 Python中的if

Python中的if

#Python中的if | 来源: 网络整理| 查看: 265

Python中的if name “main” 是什么意思?

本文解释了Python代码表达式 if __name__ == '__main__' 的含义。

Python程序使用条件if __name__ == '__main__'仅在Python解释器直接运行程序时运行if语句中的代码。当文件的代码作为模块导入时,if语句中的代码不会被执行。

更多Python相关文章,请阅读:Python 教程

main是什么?

在Python中,__name__表示唯一的变量。

Python有许多以双下划线开头和结尾的特殊变量。它们被称为dunder以简化书写(即Double Underscores)。在这种情况下,__name__发音为“dunder name”。

让我们使用Python shell确定__main__的值 –

>>> __name__ '__main__'

因此,__name__的值是__main__。

让我们尝试导入Python模块,以查看分配给模块的__name__变量的值 –

>>> import random >>> random.__name__ 'random'

因此,在导入random模块后,我们可以看到__name__的值是“random”,这基本上是它的名称。

Python name变量值

创建以下代码并将其放入文件__name__ main.py中 –

print(" __name__ value is {}".format(__name__))

一个单独的打印命令,使用字符串格式化方法输出__name__的值。

当我们通过引用Python文件直接运行代码时,__name__的值为__main__ –

$ python __name__main.py The value of __name__ is __main__

相反,如果我们通过Python shell导入模块,__name__的值就是__name__ main –

>>> import _name_main __name__ value is __name__main

因此,name的值取决于我们的Python代码如何执行。

__name__的示例

要在Python中使用条件if __name__==“__main__”,可以创建如下所示的Python程序,通过它调用三个不同的函数 –

def step1(): print("执行第一步...") def step2(): print("执行第二步...") def step3(): print("执行第三步...") step1() step2() step3() 输出结果

以下是以上代码的输出结果 –

执行第一步... 执行第二步... 执行第三步...

现在假设另一个Python应用程序需要使用step1函数()。我们需要导入文件作为模块来实现。

当我们这样做时会发生以下情况 –

>>> import _name_main 执行第一步... 执行第二步... 执行第三步... >>> _name_main.step1() 执行第一步...

在导入模块之后,可以调用step1()函数。问题在于,导入模块时会自动执行以下三行代码 −

step1() step2() step3()

那么问题是,如何防止这种情况的发生?

当模块被导入时检查__name__是否等于__main__

我们可以验证__name__的值是否等于__main__来避免前一节中所看到的行为。

这样,仅在直接调用该Python文件时才运行if条件中的代码,而不是在导入为模块时运行。

示例

现在,程序如下 −

def step1(): print("执行第一步...") def step2(): print("执行第二步...") def step3(): print("执行第三步...") if __name__ == "__main__": step1() step2() step3() 输出

让我们检查直接调用Python程序是否仍会调用三个函数

执行第一步... 执行第二步... 执行第三步...

此外,当我们将其导入为模块时,不会执行这三个函数 7minus;

>>> import _name_main >>> _name_main.step1() 执行第一步...

这次要好得多!

考虑到_name_main模块具有数百个函数,而并非您要导入的所有函数。

如何简单地导入step1()函数?

应使用以下语法 −

>>> from _name_main import step1 >>> step1() 执行step1... >>> step2() Traceback (most recent call last): File "", line 1, in NameError: name 'step2' is not defined

如您所见,在此示例中,我们只导入了函数step1的成功版本。

尝试运行step2()时将出现NameError: name’step2′ is not defined。

Python中的主要方法

在Java或C等语言中,主要方法的概念非常普遍,并指定程序执行的起始点。

main() 函数在if语句内执行并验证__name__变量的值。

为了获得特定结果,会在 main() 函数中调用多个函数。在我们的情况下,main函数会调用三个子函数 − 示例

现在,程序如下 −

def step1(): print("执行第一步...") def step2(): print("执行第二步...") def step3(): print("执行第三步...") def main(): step1() step2() step3() if __name__ == "__main__": main() 输出

我们现在调用该程序 −

执行第一步... 执行第二步... 执行第三步...

在上述代码中,main()函数是程序的主要逻辑,并且在if语句中被执行。在该例中,我们仍然具有与上面例子中相同的模块名,但我们通过添加main()函数来实现分离”真正”代码和模块导入时执行的代码。

def step1(): print("执行第一步...") def step2(): print("执行第二步...") def step3(): print("执行第三步...") def main(): step1() step2() step3() if __name__ == "__main__": main() 输出 执行第一步... 执行第二步... 执行第三步...

由于main的概念也被其他开发人员广泛知晓,将函数命名为main()只是一种标准命名约定,以提高程序的可读性。

实际上,我们可以把main函数改名为其他名字。

在继续本文之前,请验证我们修改后的代码在以下两种情况下都能正常工作:

代码的直接执行 模块的导入 Python中的 name、main和参数

我们可以在判定变量__name__是否等于 __main__的if条件语句中直接处理传递给Python程序的任何参数。

我们可以使用 sys模块 来处理传递给程序的参数。

导入sys模块。

创建一个名为main()的函数,该函数只接受一个参数。这个参数由一个包含程序运行时提供的参数的字符串列表组成。

在if语句中将sys.argv提供给main()函数。

例子 import sys def main(args): print(args) if __name__ == "__main__": main(sys.argv) 输出

以上执行程序的输出如下:

['main.py']

如你所见,Python程序的第一个参数是.py文件的名称本身。

让我们修改main方法,使其打印args变量的类型。

def main(args): print(type(args)) print(args)

这证明args是一个列表 –

$ python arguments.py arg1 arg2 ['arguments.py', 'arg1', 'arg2']

除了提供参数,我们还可以解包我们的程序需要的参数,将程序名称排除在外 –

导入 sys 定义 main(c, d): 返回 int(c) * int(d) 如果 __name__ == "__main__": arg1, arg2 = sys.argv[1:3] print(main(arg1, arg2))

这是执行程序和接收到的结果的步骤−

$ python product.py 4 5 20

命令行中给出的两个数字由此代码使用切片运算符获取。 然后,仍然以字符串格式将这两个数字提供给main()方法。

将两个数字转换为整数的结果由main函数返回。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有