if __name__ == "__main__"是什么意思?

[复制链接]
查看11 | 回复7 | 2021-8-26 17:26:12 | 显示全部楼层 |阅读模式
python之if__name__==“__main__”的意思是:判断是否执行正确。具体如下:1、每个python模块都包含内置的变量__name__。(__name__是python的一个内置类属性,它天生就存在于一个python程序中,代表对应程序名称)2、当运行模块被执行的时候,__name__等于当前执行文件的名称【模块名】(包含了后缀.py);而“__main__”等于当前执行文件的名称【模块名】(包含了后缀.py)。进而当模块被直接执行时,__name__ == 'main'结果为真。3、如果import到其他模块中,则__name__等于模块名称(不包含后缀.py)。

Python基本语法特点Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和意外。以上资料参考百度百科—Python
回复

使用道具 举报

千问 | 2021-8-26 17:26:12 | 显示全部楼层
python中,当打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介绍一下它的作用,模块是对象,并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是也可以像一个标准的程序那样直接运行模块,在这 种情况下, __name__ 的值将是一个特别缺省"__main__"。在cmd 中直接运行.py文件,则__name__的值是'__main__';而在import 一个.py文件后,__name__的值就不是'__main__'了;从而用if __name__ == '__main__'来判断是否是在直接运行该.py文件。
回复

使用道具 举报

千问 | 2021-8-26 17:26:12 | 显示全部楼层
if __name__ == "__main__": #如果是主执行脚本执行下面的代码,就是在命令行直接调用,不是被其他脚本导入调用
import sys #导入sys模块
fib(int(sys.argv[1])) #我在你的另一个问题里回答过了:sys.argv里面存放的是命令行参数,argv[0]是脚本名(fibo.py),argv[1]里是第一个参数(1),因为获取的是字符串,所以int转为整形如果解决了您的问题请采纳!如果未解决请继续追问
回复

使用道具 举报

千问 | 2021-8-26 17:26:12 | 显示全部楼层
没错。这个地方的定义,是这样的:一个.py文件,如果是自身在运行,那么他的__name__值就是"__main__";如果它是被别的程序导入的(作为一个模块),比如:import re那么,他的__name__就不是"__main__"了。所以,在.py文件中使用这个条件语句,可以使这个条件语句块中的命令只在它独立运行时才执行通俗的理解_name_ == '_main_':假如你叫小明.py,在朋友眼中,你是小明(_name_ == '小明');在你自己眼中,你是你自己(_name_ == '_main_')。if _name_ == '_main_'之下的代码块可以理解为小明的隐私,在自己程序里隐私可以被看到,在被他人引用时则看不到。
回复

使用道具 举报

千问 | 2021-8-26 17:26:12 | 显示全部楼层
同一个目录下写建俩py

a.py

a.py的输出结果

b.py

b.py输出结果动手试试
回复

使用道具 举报

千问 | 2021-8-26 17:26:12 | 显示全部楼层
python中文教程网
回复

使用道具 举报

千问 | 2021-8-26 17:26:12 | 显示全部楼层
条件语句.当变量 __name__ = __main__ 变量成立
回复

使用道具 举报

千问 | 2021-8-26 17:26:12 | 显示全部楼层
通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明');在你自己眼中,你是你自己(__name__ == '__main__')。if __name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ =='__main__'之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行