[Python]编码规范性(二)——排版(导入)
导入:
(必须遵守)(规则):
10、加载模块必须分开,每个模块占一行;
一行只能加载一个模块,但,同一个模块内,多个符号,可以在同一行加载;
import 语句有一个变体,可以直接把模块里的名称导入到另一个模块的符号表:
>>> from fibo import fib, fib2
>>> fib(500)
这段代码不会把模块名导入到局部符号表里(因此,本例没有定义 fibo)
还有一种变体可以导入模块内定义的所有名称:
>>> from fibo import *
>>> fib(500)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
这种方式会导入所有不以下划线(_)开头的名称;
大多数情况下,不要用这个功能,这种方式向解释器导入了一批未知的名称,可能会覆盖已经定义的名称;
注意,一般情况下,不建议从模块或包内导入 *, 因为,这项操作经常让代码变得难以理解;
不过,为了在交互式编译器中少打几个字,这么用也没问题;
11、导入部分(imports)置于模块注释和文档字符串之后,模块全局变量和常量声明之前;
说明:在导入库时,按照:标准库,第三方关联库、本地特定的库/程序顺序导入,并在几组导入语句之间增加一个空行;
import os
import sys
from oslo_config import cfg
from cinder import context
from cinder import db
(必须考虑)(建议):
12、避免使用from xxx import * 的方式导入某模块的所有成员;
说明:from xxx import *
会将其他模块中的所有成员挨个赋值给当前范围的同名变量,如果当前范围已经有同名变量,则会静默将其覆盖;
这种方式容易导致名字冲突,且冲突后不容易定位,应当尽量避免使用;
13、类UNIX操作系统上直接执行的Python文件头部,建议使用#!/usr/bin/env python指定解释器;
类Unix操作系统上使用Hashbang “#!/usr/bin/env python”声明的时候,会取系统的 PATH 变量中指定的第一个 Python来执行你的脚本,有助于正确指定执行Python文件的解释器。
Hashbang的位置需要放在文件编码声明之前;
Windows操作系统可忽略此建议。
在计算领域中,Shebang(也称为Hashbang)是一个由“#”和“!”构成的字符序列#!
其出现在文本文件的第一行的前两个字符
在文件中存在Shebang的情况下,类UNIX操作系统的程序载入器会分析Shebang后的内容,将这些内容作为解释器指令,并调用该指令,并将载有Shebang的文件路径作为该解释器的参数