zoukankan      html  css  js  c++  java
  • Python

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


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

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

       
    vi b.py   

    # coding: utf-8
    print("----------------")
    import a
    print("----------------")
    if __name__ == '__main__':
        print("i am b.py main")


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

    i am just print
    i am a.py main


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

    ----------------
    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文件

    i am just print
    i am a.py main


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

    i am just print
    i am a.py main


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

    继续来看
    python

    >>> 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

    i am just print
    i am a.py main


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

    i am just print
    i am a.py main


    这两个又一样了,呵呵

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

  • 相关阅读:
    ES6入门 阮一峰
    NPM
    移动端BUG
    配置每次git push 不需要输入账号密码
    移动端rem布局,用户调整手机字体大小或浏览器字体大小后导致页面布局出错问题
    课程表
    岛屿数量
    二叉树的右视图
    c++设计模式——工厂模式
    克隆图
  • 原文地址:https://www.cnblogs.com/ddzj01/p/10919210.html
Copyright © 2011-2022 走看看