python语言规范学习

导入

规则

仅对包和模块使用导入,而不单独导入函数或者类。’typing’模块例外。

导入时不要使用相对名称. 即使模块在同一个包中, 也要使用完整包名.

这能帮助你避免无意间导入一个包两次.

优点

命名空间管理约定十分简单. 每个标识符的源都用一种一致的方式指示.

x.Obj表示Obj对象定义在模块x中.

缺点

模块名仍可能冲突. 有些模块名太长, 不太方便.

实现方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1.使用 import x 来导入包和模块.
# python自带的包一般使用这种方式
import math

# 2.使用 from x import y
# 其中x是包前缀, y是不带前缀的模块名.
from mpl_toolkits.basemap import Basemap

# 3.使用 from x import y as z
# 如果两个要导入的模块都叫做y或者y太长了.
from matplotlib import pyplot as plt
# 其实plt用第二种方式导入更多

# 4.仅当缩写 z 是通用缩写时才可使用 import y as z.
import numpy as np

规则

使用模块的全路径名来导入每个模块

所有的新代码都应该用完整包名来导入每个模块.

优点

避免模块名冲突或是因非预期的模块搜索路径导致导入错误. 查找包更容易.

缺点

部署代码变难, 因为你必须复制包层次.

实现样例

正确样例1:

1
2
3
4
5
# 在代码中引用完整名称 absl.flags (详细情况).
import absl.flags
from doctor.who import jodie

FLAGS = absl.flags.FLAGS

正确样例2:

1
2
3
4
5
# 在代码中仅引用模块名 flags (常见情况).
from absl import flags
from doctor.who import jodie

FLAGS = flags.FLAGS

错误样例:

1
2
3
# 没能清晰指示出作者想要导入的模块和最终被导入的模块.
# 实际导入的模块将取决于 sys.path.
import jodie

不应假定主入口脚本所在的目录就在 sys.path 中,虽然这种情况是存在的。

当主入口脚本所在目录不在 sys.path 中时,代码将假设 import jodie 是

导入的一个第三方库或者是一个名为 jodie 的顶层包,而不是本地的 jodie.py

异常

规则

异常是一种跳出代码块的正常控制流来处理错误或者其它异常条件的方式.

允许使用异常, 但必须小心

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2022-2024 CPY
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信