python为什么要使用if __name__ == “__main__”:

python为什么要使用if __name__ == “__main__”:

本文为wangluoshenghuo.com原创,转载请注明出处。

要说明这个问题,首先要了解__name__和“__main_”_这两个符号是什么意思。

__name__是一个变量,是当前包的名称。

而“__main__”是字符串,是你运行的包的__name__在运行时的值。

为什么要在写python程序时,常常使用if name__ == “__main“:来进行判断?

原因是:在没有被其他程序import的情况下,运行判断语句。如果这个python文件被调用,__name__是调用程序的值,与字符__main__不等,就不能运行下面的语句。这样做的好处是方便在本模块下测试自己的代码。而在调用的时候,对于调用者来说,不能满足条件,而忽略自己的调试代码。

还是有点晕,举例说明:

假设我们写一段程序命名为test.py,如下:

  1 def Test():          #定义一个Test函数,用于这次测试          
  2     print(__name__)            #打印变量__name__的值
  3     print('********************')     #用于分隔,便于观察print输出的值的变化                                                                      
  4     print("__main__")    #打印字符串__main__   
  5     print('------------------') #用于分隔
  6                                
  7 if __name__ == "__main__":     #判断,如果__name__的值等于字符串__main__,执行下面的语句。
  8     Test()                     
  9     print('test by if') 

test.py运行结果:

[eyeglasses@s97912 ~]$ python test.py          
__main__
********************
__main__
------------------
test by if
说明:
#第一次执行test.py没有import输入,直接执行。
[eyeglasses@s97912 ~]$ python test.py 
#首先执行判断if __name__ == "__main__":是否为真。
__main__ #我们可以看到__name__的值是__main__,而不是test.py.
********************
__main__ #对应print("__main__")语句。
------------------ 
#打印了print('test by if')语句
test by if

为了对比,再写两段代码,非常简单,用于调用test.py,名称为test1.py。

from test import Test #调用test.py里的Test函数
Test()#执行这个函数。

test1.py运行结果:

[eyeglasses@s97912 ~]$ python test1.py
test
********************
__main__
------------------

说明:test.py里的Test()被调用,print(__name__)打印出来是test,明显不满足条件if name__ == “__main“:,test.py里面if下面的语句是不会被执行的。而我们在执行test.py是可以执行if下面的语句。

这样我们就可以test.py里面测试自己的程序,而不会受到外面的干扰或其他程序错误调用你自己的测试程序。这就是(if name__ == “__main“:)的作用。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`if __name__ == "__main__":` 是 Python 中常用的一个条件语句,它通常用于判断当前模块是否是运行在主程序中,或者是被其他模块 import 而导入运行的。 具体来说,当一个 Python 文件直接被执行时,`__name__` 变量的值会被自动设置为 `"__main__"`,如果被导入时,`__name__` 的值就是模块名(即文件名)。 因此,使用 `if __name__ == "__main__":` 可以方便地将一些只在作为主程序运行时才执行的代码放在这个条件语句中,而避免在模块被导入时执行这些代码。 下面是一个简单的示例,假设我们有一个名为 `example.py` 的 Python 模块,里面包含一些函数和变量: ``` # example.py def add(x, y): return x + y def sub(x, y): return x - y pi = 3.1415926 ``` 如果我们在命令行中直接执行 `example.py`,那么 `__name__` 的值就是 `"__main__"`,我们可以在条件语句中添加一些测试代码: ``` # example.py def add(x, y): return x + y def sub(x, y): return x - y pi = 3.1415926 if __name__ == "__main__": print("This is the main program.") print("The result of 1 + 2 is", add(1, 2)) print("The value of pi is", pi) ``` 如果我们将 `example.py` 导入到另一个模块中,那么 `__name__` 的值就是模块名(即文件名),条件语句中的代码就不会被执行: ``` # test.py import example print("This is a test program.") print("The result of 3 - 4 is", example.sub(3, 4)) ``` 这样,当我们执行 `test.py` 时,`example.py` 中的测试代码就不会被执行,只有 `test.py` 的代码会被执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值