python中 if __name__ == "__main__": 解析
2016-12-14 19:55
567 查看
个人总结:
__name__ 双下划线表示name为系统变量,是模块名字。
此句话保证了,当前python代码,既可以被执行,也可以被调用。import
若执行该文件。name == main 执行main下面的代码
若该文件被其他模块调用。import 。 则 name = 该文件的名字。 不执行 main下面的代码。
可以保证调试方便。分块调试。互不影响。
转:
其中if __name__ == '__main__':这句估计很多和我一样的初学者都是不求甚解。
这里作一下解释:
1:__name__是一个变量。前后加了爽下划线是因为是因为这是系统定义的名字。普通变量不要使用此方式命名变量。
2:Python有很多模块,而这些模块是可以独立运行的!这点不像C++和C的头文件。
3:import的时候是要执行所import的模块的。
4:__name__就是标识模块的名字的一个系统变量。这里分两种情况:假如当前模块是主模块(也就是调用其他模块的模块),那么此模块名字就是__main__,通过if判断这样就可以执行“__mian__:”后面的主函数内容;假如此模块是被import的,则此模块名字为文件名字(不加后面的.py),通过if判断这样就会跳过“__mian__:”后面的内容。
通过上面方式,python就可以分清楚哪些是主函数,进入主函数执行;并且可以调用其他模块的各个函数等等
转:
“Make a script both importable and executable”
意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行。
这句话,可能一开始听的还不是很懂。下面举例说明:
先写一个模块:
?
这个函数定义了一个main函数,我们执行一下该py文件发现结果是打印出”we are in __main__“,说明我们的if语句中的内容被执行了,调用了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__'“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!
__name__ 双下划线表示name为系统变量,是模块名字。
此句话保证了,当前python代码,既可以被执行,也可以被调用。import
若执行该文件。name == main 执行main下面的代码
若该文件被其他模块调用。import 。 则 name = 该文件的名字。 不执行 main下面的代码。
可以保证调试方便。分块调试。互不影响。
转:
其中if __name__ == '__main__':这句估计很多和我一样的初学者都是不求甚解。
这里作一下解释:
1:__name__是一个变量。前后加了爽下划线是因为是因为这是系统定义的名字。普通变量不要使用此方式命名变量。
2:Python有很多模块,而这些模块是可以独立运行的!这点不像C++和C的头文件。
3:import的时候是要执行所import的模块的。
4:__name__就是标识模块的名字的一个系统变量。这里分两种情况:假如当前模块是主模块(也就是调用其他模块的模块),那么此模块名字就是__main__,通过if判断这样就可以执行“__mian__:”后面的主函数内容;假如此模块是被import的,则此模块名字为文件名字(不加后面的.py),通过if判断这样就会跳过“__mian__:”后面的内容。
通过上面方式,python就可以分清楚哪些是主函数,进入主函数执行;并且可以调用其他模块的各个函数等等
转:
“Make a script both importable and executable”
意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行。
这句话,可能一开始听的还不是很懂。下面举例说明:
先写一个模块:
?
但是如果我们从另我一个模块导入该模块,并调用一次main()函数会是怎样的结果呢?
?
但是没有显示”we are in __main__“,也就是说模块__name__ = '__main__' 下面的函数没有执行。
这样既可以让“模块”文件运行,也可以被其他模块引入,而且不会执行函数2次。这才是关键。
总结一下:
如果我们是直接执行某个.py文件的时候,该文件中那么”__name__ == '__main__'“是True,但是我们如果从另外一个.py文件通过import导入该文件的时候,这时__name__的值就是我们这个py文件的名字而不是__main__。
这个功能还有一个用处:调试代码的时候,在”if __name__ == '__main__'“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!
相关文章推荐
- Python中if __name__ == "__main__":用法解析
- python中if __name__ == "__main__":用法解析
- python中if __name__ == "__main__":用法解析
- python中if __name__ == "__main__":用法解析
- python中if __name__ == "__main__":用法解析
- python中if __name__ == "__main__":用法解析
- python中if __name__ == "__main__":用法解析
- python中if __name__ == "__main__":用法解析
- Python: if __name__ == "__main__"
- python中if __name__ == '__main__': 的解析
- python中if __name__ == '__main__': 的解析
- python中if __name__ == "__main__"的解释
- python中if __name__ == '__main__': 的解析
- python中if __name__ == '__main__': 的解析
- python中if __name__ == '__main__': 的解析
- python中if __name__ == '__main__': 的解析
- python中if __name__ == '__main__': 的解析
- zz: python中if __name__ == '__main__': 的解析
- Python中if __name__ == "__main__"详解
- python中if __name__ == '__main__': 的解析