Sam*_*erg 6 python module packages
我有一个包结构如下:
mypackage
__init__.py
mymodule.py
Run Code Online (Sandbox Code Playgroud)
我把一些"常量"声明放在__init__.py例如:
DELIMITER='\x01'
Run Code Online (Sandbox Code Playgroud)
但是,mymodule.py中的代码无法访问DELIMITER,除非我添加:
from __init__ import *
Run Code Online (Sandbox Code Playgroud)
到mymodule.py文件的顶部.我想我在这里错过了一个概念.是什么声明的内容在__init__.py通过import语句访问之前不会被读入内存?另外,这是放入__init__.py文件的典型类型吗?
Python 在导入包时会运行代码__init__.py,这允许进行一些初始化.但是,仅仅因为它运行并不意味着您可以从其他模块中访问其中的变量.
例如:
testpackage
__init__.py
testmod.py
Run Code Online (Sandbox Code Playgroud)
让我们说__init__.py有代码print "Initializing __init__",并且testmod.py有print "Initializing testmod".在这种情况下,导入testpackage或testmod将导致初始化代码运行:
dynamic-oit-vapornet-c-499:test dgrtwo$ python -c "import testpackage"
Initializing __init__
dynamic-oit-vapornet-c-499:test dgrtwo$ python -c "from testpackage import testmod"
Initializing __init__
Initializing testmod
Run Code Online (Sandbox Code Playgroud)
但是,它不允许testmod.py访问变量__init__.py.这必须明确地完成.
| 归档时间: |
|
| 查看次数: |
1927 次 |
| 最近记录: |