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的值就是当前的模块名