了解 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