Python 在模块内使用_uinit__uuuu.py中定义的方法

Python 在模块内使用_uinit__uuuu.py中定义的方法,python,Python,假设我有以下目录结构: lib\ --__init__.py --foo.py --bar.py 在foo和bar内部,有两种不同的方法,它们都需要相同的方法。例如: 傅: 酒吧: 有没有办法在模块各自子文件的init.py中使用win和lose方法,或者我必须在文件夹中创建另一个文件并进行foo和bar导入,以便使用相对导入: from . import win, lose 是的,只需导入\uuuuu init\uuuuuu.py模块(通过绝对或相对导入,这并不重要) 我从来不喜欢相对导入

假设我有以下目录结构:

lib\
--__init__.py
--foo.py
--bar.py
在foo和bar内部,有两种不同的方法,它们都需要相同的方法。例如:

傅:

酒吧:

有没有办法在模块各自子文件的init.py中使用win和lose方法,或者我必须在文件夹中创建另一个文件并进行foo和bar导入,以便使用相对导入:

from . import win, lose

是的,只需导入
\uuuuu init\uuuuuu.py
模块(通过绝对或相对导入,这并不重要)


我从来不喜欢相对导入,所以我会使用
mypackage.foo
中的
import mypackage
,它像相对导入一样导入
\uuu init\uuuuuuuuy.py
,然后在那里使用它。我也不喜欢把任何东西放在<代码>中,朱利安。/>代码。虽然一般,所以也许你应该考虑共享的公共文件。无论如何,< /P>相对导入不是真正的要点,关键是你需要导入代码>代码>从。导入win,lose从导入“win”和“lose”.”,这是当前的包=
\uuuu init\uuuuuuuuuupy
@Bakuriu当然可以,我只是说这不是重点,重点只是导入包含函数的模块——如何导入取决于您:)。啊,好的。我误解了你的评论。下次我会读两遍再回答:顺便说一句,我喜欢相对进口。。。de gustibus non est disputandum:)使用相对导入有明确的原因,可维护性是主要原因。看见(我同意让
\uuuu init\uuuu.py
尽可能空的建议。)我知道其中的原因,我只是不认为它们是好的(或者超过绝对进口的原因):)。
def method2(number):
    if number < 0:
        lose()
    else:
        win()
def win():
    print "You Win!"

def lose():
    print "You Lose...."
from . import win, lose