python3 -m 原理分析和实现

python module

  • module是包含python定义和语句的文件. 其文件名是模块名加后缀 .py.
  • 在module内部,通过全局变量 __name__ 可以获取模块名。
  • module可以包含可执行语句和函数定义。这些语句可用于初始化模块,且仅在import第一次遇到module name 时执行。另外,文件作为脚本运行时,也会执行这些语句。
  • 当以python module_name.py <arguments> 执行模块时,解释器会把__name__ 赋值为__main__,所以可以把下面的语句添加到模块的末尾,这样就可以把这个文件即可以当作脚本,也可以当作模块
if __name__ == '__main__':
    ...

module的搜索路径

  • 当一个名为spam模块被导入时,解释器首先搜索具有该名称的内置模块。这些模块的名字被列在sys.builtin_module_names中。如果没有找到,他就在变量sys.path给出的目录列表中搜索一个名为spam.py的文件。
  • sys.path 从以下位置初始化:
    • 输入脚本的目录
    • PYTHONPATH
    • 依赖于安装的默认值(包括site-packages目录)

dir()

  • 内置函数dir()用于查找模块定义的名称,返回结果是经过排序的字符串列表。

package

  • 包是一种用 点式模块名 构造python模块命名空间的方法。例如,模块名A.B 表示包A中名为B的子模块。
  • Python只把含有__init__.py文件的目录当成包。可以在__init__.py文件中做包的初始化代码。

__main__.py 文件是什么?

在terminal中运行一个python文件,经常是如下的:

python my_program.py

也可以先创建一个包含完整代码的目录(package)或者zip文件,在其中创建一个__main__.py文件。然后就可以通过在终端中执行 package name(目录名称),就会自动调用__main__.py文件。

python my_program_dir
python my_program.zip
python -m my_program

python -m

# python3 --help
...
-m mod : run library module as a script (terminates option list)
...

python -m module name: 把模块当作脚本来运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值