跳到主要内容

Python

Python 的解释器

启动解释器的方式是 python -c command [arg] ...,这将执行 command 中的语句,相当于 shell 的 -c 选项。 由于 Python 语句经常包含空格或其他会被 shell 特殊对待的字符,通常建议用引号将整个 command 括起来。

Python 模块也可以当作脚本使用。输入:python -m module [arg] ...,会执行 module 的源文件,这跟在命令行把路径写全了一样。

Python 模块

每个 .py 结尾的文件就是一个模块,模块名就是文件名。模块包含可执行语句及函数定义。

import fibo

fibo.fib(10)

print(fibo.__name__)

# Output:
# 0 1 1 2 3 5 8
# fibo

from fibo import fib, fib2 将来自某个模块的名称直接导入到命名空间中。

from fibo import * 这种方式会导入所有不以下划线(_)开头的名称。

import fibo as fib 模块名后使用 as 时,直接把 as 后的名称与导入模块绑定。

from fibo import fib as fibonacci from 中也可以使用这种方式。

from . import echo, from .. import formats, from ..filters import equalizer 使用前导点号来表示相对导入所涉及的当前包和上级包。如果计划将一个模块用作 Python 应用程序的主模块,那么该模块内的导入语句必须始终使用绝对导入。

用脚本方式运行模块时, 会把 __name__ 赋值为 "__main__"

python fibo.py <arguments>

当导入一个模块时,解释器首先在内置模块 sys.builtin_module_names 中搜索。 如果未找到,它将在变量 sys.path 所给出的目录列表中搜索。sys.path 是从这些位置初始化的:

  • 被命令行直接运行的脚本所在的目录(或未指定文件时的当前目录)。
  • PYTHONPATH (目录列表,与 shell 变量 PATH 的语法一样)。
  • 依赖于安装的默认值(按照惯例包括一个 site-packages 目录,由 site 模块处理)。

初始化后,Python 程序可以更改 sys.path。脚本所在的目录先于标准库所在的路径被搜索。

为了快速加载模块,Python 把模块的编译版本缓存在 __pycache__ 目录中,文件名为 module.version.pyc,version 对编译文件格式进行编码,一般是 Python 的版本号。Python 对比编译版与源码的修改日期,查看编译版是否已过期,是否要重新编译。此进程完全是自动的。

  • 从 .pyc 文件读取的程序不比从 .py 读取的执行速度快,.pyc 文件只是加载速度更快。
  • compileall 模块可以为一个目录下的所有模块创建 .pyc 文件。

是通过使用“带点号模块名”来构造 Python 模块命名空间的一种方式。 例如,模块名 A.B 表示名为 A 的包中名为 B 的子模块。需要有 __init__.py 文件才能让 Python 将包含该文件的目录当作包来处理。 在最简单的情况下,__init__.py 可以只是一个空文件,但它也可以执行包的初始化代码或设置 __all__ 变量。这意味着 from sound.effects import * 将导入 sound.effects 包的三个命名子模块。

__all__ = ["echo", "surround", "reverse"]

使用 pip 管理包

通过指定包的名称来安装最新版本的包:

python -m pip install novas

通过提供包名称后跟 == 和版本号来安装特定版本的包:

python -m pip install requests==2.6.0

可以运行 python -m pip install --upgrade 以将软件包升级到最新版本:

python -m pip install --upgrade requests

删除一个或多个包:

python -m pip uninstall requests novas

显示有关某个特定包的信息:

python -m pip show requests

显示所有在虚拟环境中安装的包:

python -m pip list

产生一个类似的已安装包列表,将此列表放在 requirements.txt 文件中:

python -m pip freeze > requirements.txt

可以使用 install -r 安装所有必需的包:

python -m pip install -r requirements.txt