pythonmain是什么意思_Python - __name__=='__main__'是干啥的,以及python -m与python的区别...

转自牛人: 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的作用了吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值