if __name__ == 'main': 的作用和原理
if __name__ == 'main':
功能
一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。
if __name__ == 'main': 的作用:
就是控制这两种情况执行代码的过程,在“if __name__ == 'main': ”下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是不会被执行的。
原理
每个python模块(python文件,也就是*.py)都包含内置的变量__name__。
1. 当运行模块(A.py)作为脚本自己去运行的话,对应的模块名始终叫做__main__,即模块A.py文件本身,而__name__等于模块名称,也就等于__main__;
2. 如果模块(A.py)import到其他模块(B.py)中,对应的模块名叫做A,则__name__等于模块名称A。
所以,当模块被直接执行时,__name__ == '__main__'结果为真;当模块被import到其他的python脚本中被调用执行,不满足__name__=="__main__"的条件,因此,无法执行其后的代码。
test.py
print("I'm the first.")
print(__name__)
if __name__=="__main__":
print("I'm the second.")
python test.py的结果:
I'm the first.
__main__
I'm the second.
import_test.py
import test
python import_test.py的结果:
I'm the first.
test
此时,test.py中的__name__变量值为test,不满足__name__=="__main__"的条件,因此,无法执行其后的代码。
__name__
如果是放在Modules模块中,就表示是模块的名字;
如果是放在Classs类中,就表示类的名字
__main__
模块第一次被导出(import)后,系统会自动为其创建一个域名空间(namespace);(模块,都是有自己的名字的)此处的脚本的主模块的名字,始终都叫做__main__。
【参考文档】
python编程中的if __name__ == 'main': 的作用和原理:http://www.dengfeilong.com/post/60.html
Python中的__name__和__main__含义详解:https://blog.csdn.net/jjwen/article/details/53084882
Python中的__name__和__main__含义详解: https://www.crifan.com/python_detailed_explain_about___name___and___main__/comment-page-1/
if __name__ == 'main': 的作用和原理的更多相关文章
- python编程中的if __name__ == 'main': 的作用和原理
在大多数编排得好一点的脚本或者程序里面都有这段if __name__ == 'main': ,虽然一直知道他的作用,但是一直比较模糊,收集资料详细理解之后与打架分享. 1.这段代码的功能 一个pyth ...
- python if __name__ == 'main' 的作用和原理()
相信初学者在学习Python的过程中,不可避免的总会遇到 if __name__ == 'main'语句,虽然一直知道它的作用,但是可能一直比较模糊,今天菜鸟分析就与大家一起举例说说我的理解. 举个例 ...
- Python中if __name__ == 'main' 的作用和原理
参考网址:http://mp.weixin.qq.com/s/kxxhOQ7KB_VMwWeUENX7OQ t1.py: print('Loving Python') def main(): prin ...
- Python 中if __name__ == '__main__': 的作用和原理
转自https://blog.csdn.net/weixin_42660771/article/details/84035153 1.代码的功能 一个python的文件有两种使用的方法,第一是直接作为 ...
- 如何理解python中的if __name__=='main'的作用
一. 一个浅显易懂的比喻 我们在学习python编程时,不可避免的会遇到if __name__=='main'这样的语句,它到底有什么作用呢? <如何简单地理解Python中的if __name ...
- if __name__ == '__main__'的作用和原理
最简单的理解就是这样: __name__ 是当前模块名,当模块被直接运行时,模块名为 __main__. 所以 if __name__ == '__main__' 这句话的意思就是当前模块被直接运行时 ...
- Python中if __name__ == '__main__':的作用和原理
if __name__ == '__main__':的作用 一个python文件通常有两种使用方法,第一是作为脚本直接执行,第二是 import 到其他的 python 脚本中被调用(模块重用)执行. ...
- python编程中的if __name__ == 'main与windows中使用多进程
if __name__ == 'main 一个python的文件有两种使用的方法,第一是直接作为程序执行,第二是import到其他的python程序中被调用(模块重用)执行. 因此if __name_ ...
- python中的if __name__ == 'main'
当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用: 对于编程语言来说,程序都必须要有一个入口,比如java和c#必须要 ...
随机推荐
- java基础-arrayList
ArrayList: 结构之钱了解了,ArrayList()会构造出一个初始容量=10的空的列表: ArrayList()的增加和删除都是拷贝数组到新的数组(如果当前数组容量不足的话),把数组内的 ...
- PythonStudy——PyCharm使用技巧 Column Selection Mode(列选择模式)
PyCharm的Column Selection Mode提供了列选择功能. 使用: 在当前文件右键->Column Selection Mode->用鼠标垂直选择文本 快捷键:Alt + ...
- tar.gz和tar.bz2
Linux下常见压缩格式为tar.gz和tar.bz2,解压命令如下: .tar.gz tar -zxvf 文件名 .tar.bz2 tar -jxvf 文件名
- mi家前端面经
已经好久没想写面经了……菜鸟面到生无可恋. 1.用CSS实现下面圆形 答案: <!DOCTYPE html> <html> <head> <style typ ...
- VSFTP的使用
一.基本安装 1.安装服务 yum -y install vsftpd //centos Redhat apt-get install vsftpd //debian ubuntu 2.开启服务 se ...
- 猜测的rpc负载均衡原理,基于dubbo的架构
集群层(Cluster):封装多个提供者的路由及负载均衡,并桥接注册中心,以Invoker为中心,扩展接口为Cluster.Directory.Router和LoadBalance.将多个服务提供方组 ...
- kettle无法更新数据库字段解决办法
刚开始使用kettle,遇到一个问题, 在编写一个转换流程时,如果所操作的表字段名发生了变化(例如表student中id变更问userid),但是在kettle中使用时仍然显示是id,如下图, 此时清 ...
- 从创业者角度看《印度合伙人 Padman》后的一点感受
最近对印度电影颇有兴趣,周末在家看了<印度合伙人 Padman>.本文试着从一名创业者视角,谈谈个人的一点看法. 0.故事简介 引用自 https://movie.douban.com/s ...
- Linux期中架构
1 在构建完模板后 开启虚拟机后 需要再重启一次 以解决网卡不能看见的问题 ########################################add begin 2018-05 ...
- laravel-admin挖坑之旅
1.git-bash下使用命令php artisan admin:make UserController --model=App\User会报错Model does not exists 要加多一个“ ...