最近在写python程序的时候遇到了一个循环引用的问题. 通过看错误提示, 得知是重复引用造成的问题. 先来复现一下:
main.py1
2
3
| from aaaaa.aaaaa import AAAAA
print AAAAA()
|
aaaaa/aaaaa.py1
2
3
4
| from bbbbb.bbbbb import BBBBB
def AAAAA():
return 'AAAAA'
|
bbbbb/bbbbb.py1
2
3
4
| from aaaaa.aaaaa import AAAAA
def BBBBB():
return 'BBBBB'
|
执行出来差不多是这样的问题
bbbbb/bbbbb.py1
2
3
4
5
6
7
8
9
10
| python main.py
Traceback (most recent call last):
File "main.py", line 1, in <module>
from aaaaa.aaaaa import AAAAA
File "test/aaaaa/aaaaa.py", line 1, in <module>
from bbbbb.bbbbb import BBBBB
File "test/bbbbb/bbbbb.py", line 1, in <module>
from aaaaa.aaaaa import AAAAA
ImportError: cannot import name AAAAA
|
相关的问题在这里有讨论. 一个解决办法是把对应依赖的东西放到模块C里面
In Perl
其实这个问题一开始我是没有定位出来的, 也一直没有头绪, 可能还是跟应用输出和自己的思维有关. 既然python有这个问题, 那perl会有吗? 来个同样的示例程序:
main.pl1
2
3
4
| use strict;
use aaaaa::aaaaa;
print aaaaa::AAAAA()
|
aaaaa/aaaaa.pm1
2
3
4
5
6
7
8
9
10
| package aaaaa;
use bbbbb::bbbbb;
sub AAAAA
{
'AAAAA'
}
1
|
bbbbb/bbbbb.pm1
2
3
4
5
6
7
8
9
10
| package bbbbb;
use aaaaa::aaaaa;
sub BBBBB
{
'BBBBB'
}
1
|
尝试运行下是没问题的.
话说好像还是python的语法比较简洁?