了解 python
包结构的一些记录
_... 通常用作“内部”名称,以 _
开头的模块(包、 .py
文件)不应该被(用户、外部使用者而非内部开发人员)直接导入(
import )使用
python 的 .py
文件、模块、包和库之间的关系,注意使用 __init__.py
文件声明一个 python 包
不推荐使用 from ... import *
语句,这样容易引起同名函数的混乱
__name__ 是 python
内置的系统变量,用于标识当前所在模块的模块名,其值为
__main__ ,但若引入了其它模块,则
其它模块名.__name__ 的值是该模块的名称,当
import 其它模块 时,其它模块中的
if __name__ == "__main__"
中的内容不会被执行,具体内容链接:http://c.biancheng.net/view/4643.html
引入含有空格或以数字开头(最好以字母和下划线开头)的模块名,应该使用
__import__("模块名") :
1 | __import__("含有空格或以数字开头的模块名") |
当向文件导入某个模块时,导入的是该模块中那些名称不以下划线(单下划线
“_” 或者双下划线 "__"
)开头的变量、函数和类。因此,如果不想模块文件中的某个成员被引入到其它文件中使用,可以在其名称前添加下划线
除此之外,还可以借助模块提供的 __all__
变量,该变量的值是一个列表,存储的是当前模块中的一些成员(变量、函数和类)的名称。通过在模块文件中设置
__all__ 变量,当其它文件以
from 模块命 import * 的形式导入该模块时,该文件中只能使用
__all__ 列表中指定的成员,具体内容链接:http://c.biancheng.net/view/2401.html
python 中下划线的 5 种含义:https://zhuanlan.zhihu.com/p/36173202
cython (文件后缀 .pyx )是结合了
python 和 c
的语法的一种语言,被编译后其源代码将转译成 c 或
c++ 语法,并自动包装上函数调用界面生成 .pyd
(或 .so ,因操作系统而异)后缀的二进制文档,即可当成普通的
python 库来调用,此内容在 wikipedia
上有详细介绍:https://zh.wikipedia.org/wiki/Cython