1
binux 2012-02-17 17:43:02 +08:00
a.t.aa() ?
|
4
janusle OP |
5
janusle OP @binux 有点看懂了 我其实还是不理解 为什么 a能import到b的内容 我理解的是 python搜索应该是 向下搜索啊 这个时候 a的__init__.py在a下面 怎么能够找到上层目录(a)的同级目录b里面的内容呢?
|
6
binux 2012-02-17 19:19:21 +08:00
@janusle 不是,当你在abc这一级执行的时候,搜索目录是包含./的,在这一层当然是能找到b的
你可以这么测试,在a的目录中执行python __init__.py,这时候就找不到b了 然后 你在a/__init__.py中加上 print sys.path 执行abc.py的时候,就知道查找路径了 |
7
janusle OP @binux 有点明白了 再问一个问题 如果在./a/__init__.py 里面的放入t.aa() 我在abc这一级执行的时候 python再前面加了包名 则变成a.t.aa() 是这样么?
|
8
binux 2012-02-17 19:42:58 +08:00
@janusle 不是这个原因
from b import t 这一句话已经将t导入当前的命名空间里了,那就可以直接t.aa()了 如果你在abc.py中这么写 from a import t 也是一样可以t.aa()的 import a 只是将module a导入到当前命名空间中,而不是a里面的东西。 |
10
clowwindy 2012-02-17 21:40:15 +08:00
推荐在所有文件里import都写绝对模块名,不要用相对的模块名,增加可读性。
http://www.python.org/dev/peps/pep-0008/ |