python命令和python -m命令

545 阅读2分钟

python作为一门强大的语言,目前十分流行,且高端。所以python已经是各位猿们的必备技能了,今天记录一个python中十分基础但是设计十分良好的特性,就是通过 python命令去运行python程序和python -m运行python程序有何不同。

常规的与运行python程序

所谓python程序,其实就是后缀为py的文件。要运行也非常简单,语法为 python 文件路径。比如在todo目录下有一个index.py文件如下:

todo
    index.py

如果我们此时工作目录就在todo目录下,那么我们执行 python ./index.py即可。 注意,工作目录决定了我们查找python文件的相对路径,当然也可以写绝对路径(如果不嫌麻烦的话)

以模块的方式运行python程序

python中的模块和包的概念非常棒,利于扩展程序。python也提供了以模块的方式运行python程序,因为每一个python文件都可以看成是一个模块(模块的具体规则,大家可以自行了解)。因此我们可以使用python -m 模块名的方式运行python程序。python的模块机制可以直接定位文件的位置,因此不需要关注工作目录和相对路径。也就是说这种方式,让我们在任意的工作目录中调用python程序成为了可能。当然模块必须处于python的可搜索路径中。 还是上述的目录结构,可以使用python -m index 或者 python -m todo.index的方式去运行python文件。当然一定要符合模块的规则才可以

模块名和相对路径并不相同,要了解python中的模块名如何书写,应该深入的去阅读并理解python的模块机制

python文件中的__name__

每一个python文件执行的时候,都为其提供了一个变量 __name__,该变量的作用使用于表示当前模块使以什么方式执行的?主要有两种 (1.作为入口文件执行 2.作为模块被引用了)

如果作为入口文件执行,那么 __name__的值为字符串 __main__

如果作为模块被导入(比如使用import导入) 那么__name的值就是当前的模块名