Python – __name__==’__main__’是干啥的,以及python -m与python的区别

Python – __name__==’__main__’是干啥的,以及python -m与python的区别转自牛人: https://www.cnblogs.com/ddzj01/p/10919210.html1.__name__=='__main__'是干啥的先看例子,准

大家好,又见面了,我是你们的朋友全栈君。

转自牛人: https://www.cnblogs.com/ddzj01/p/10919210.html

1. __name__==’__main__’是干啥的

先看例子,准备a.py和b.py放在同一个文件夹中
vi a.py

01
02
03
04
05
# coding: utf-8
print(
"i am just print"
)
      
if 
__name__ ==
'__main__'
:
    
print(
"i am a.py main"
)

    
vi b.py   

01
02
03
04
05
06
# coding: utf-8
print(
"----------------"
)
import 
a
print(
"----------------"
)
if 
__name__ ==
'__main__'
:
    
print(
"i am b.py main"
)

 

python a.py  #执行a.py文件

01
02
i am just print
i am a.py main

 

python b.py  #执行b.py文件

01
02
03
04
----------------
i am just print
----------------
i am b.py main

 

首先说明下的是import a其实就是把a.py文件执行一次,区别就是当a.py作为导入的文件时,则a.py文件里的这个判断就是假的“__name__ == ‘__main__’”。

 

2.再来说说python -m和python的区别

看看官方怎么说
python –help
-m mod : run library module as a script (terminates option list)
先不解释这是啥意思,看例子,还是用之前的a.py文件

python a.py   #执行a.py文件

01
02
i am just print
i am a.py main

 

python -m a   #以模块的方式执行a.py文件

01
02
i am just print
i am a.py main

没啥区别,唯一区别是python -m后面的a.py要把后缀名.py去掉

继续来看
python

01
02
03
04
>>>
import 
sys
>>> print(sys.path)
[
''
,
'/usr/lib64/python26.zip'
,
'/usr/lib64/python2.6'
,
'/usr/lib64/python2.6/plat-linux2'
,
'/usr/lib64/python2.6/lib-tk'
,
'/usr/lib64/python2.6/lib-old'
,
'/usr/lib64/python2.6/lib-dynload'
,
'/usr/lib64/python2.6/site-packages'
,
'/usr/lib64/python2.6/site-packages/gtk-2.0'
,
'/usr/lib/python2.6/site-packages'
,
'/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info'
]
>>>
exit
()

上面列举出了python找模块的路径

我将a.py文件从当前目录移到任何一个sys.path的列表中,打个比方,我就放在/usr/lib64/python2.6这下面
mv a.py /usr/lib64/python2.6

然后执行python —m a

01
02
i am just print
i am a.py main

 

执行python /usr/lib64/python2.6/a.py

01
02
i am just print
i am a.py main

这两个又一样了,呵呵

结论:
当我们知道一个模块的名字,但不知道它的路径时,使用python -m module_name
如果我们知道模块的完整路径(此处假设为”/path/to/module.py”),使用python /path/to/module.py
这两者等价
,现在知道-m的作用了吧。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156005.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用libpng读写PNG图片

    使用libpng读写PNG图片libpng是一款C语言编写的比较底层的读写PNG文件的跨平台的库。借助它,你可以轻松读写PNG文件的每一行像素。因为PNG文件是经过压缩而且格式复杂的图形文件(有的PNG文件甚至像GIF文件一样带动画效果)而且PNG可以是带透明通道的真彩色图像、不带透明通道的真彩色图像、索引颜色、灰度颜色等各种格式,如果大家都自己写程序分析PNG文件就会显得很麻烦、很累。因此,通过使用libpng你就能直接…

    2022年10月22日
    0
  • Flask 的 jsonify解析

    Flask 的 jsonify解析首先运行如下代码:fromflaskimportFlask,jsonifyapp=Flask(__name__)tasks=[{‘id’:1,’title’:u’订阅python_mastery专栏’,’description’:u’专栏Link:https://xiaozhuanlan.com/python_mastery’},{‘id’:2,’t

    2022年5月24日
    34
  • nms非极大值抑制原理_什么是行为抑制

    nms非极大值抑制原理_什么是行为抑制参考博客物体检测中常用的几个概念迁移学习、IOU、NMS理解目标定位和检测系列(3):交并比(IOU)和非极大值抑制(NMS)的python实现一、NMS(非极大抑制)概念NMS即nonmaximumsuppression即非极大抑制,顾名思义就是抑制不是极大值的元素,搜索局部的极大值。在最近几年常见的物体检测算法(包括rcnn、sppnet、fast-rcnn、fast…

    2022年10月13日
    0
  • Linux系统打不开gedit文本编辑器

    Linux系统打不开gedit文本编辑器写实验发现打不开gedit,报错如下:Unabletoinitserver:无法连接:拒绝连接(gedit:1289):Gtk-WARNIING**:20:46:00.562:cannotopendisplay于是收录各种gedit不能用原因如下(错误提示不一定和上面一样):原因1:vnc连接被禁用了。这种情况下一般虚拟机也没连上网(打开浏览器显示没网),打开虚拟机设置>选项>vnc连接,启用。具体参数设置可看链接(Vmware官网,将虚拟机配置为V..

    2022年7月26日
    55
  • SPPNet算法解析

    SPPNet算法解析前言沿着RCNN的思路,我们继续探索目标检测的痛点,其中RCNN使用CNN作为特征提取器,首次使得目标检测跨入深度学习的阶段。但是RCNN对于每一个区域候选都需要首先将图片放缩到固定的尺寸(224*224),然后为每个区域候选提取CNN特征。容易看出这里面存在的一些性能瓶颈:速度瓶颈:重复为每个regionproposal提取特征是极其费时的,SelectiveSearch对于每幅图…

    2022年5月13日
    31
  • Java面试题超详细讲解系列之八【SQL优化篇】[通俗易懂]

    Java面试题超详细讲解系列之八【SQL优化篇】[通俗易懂]52条SQL优化合集,专栏持续更新中

    2022年8月29日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号