是否可以隐式地使所有模块导入模块?

时间:2016-08-19 10:35:55

标签: python python-3.x

我喜欢Python 3的类型暗示,但我真的厌倦了在我写的所有模块中编写from typing import *

是否可以将我的应用程序包装在模块或其他任何内容中,并隐式导入我的所有应用程序模块中的模块?

1 个答案:

答案 0 :(得分:1)

您可以劫持builtins模块并在那里放置您需要的内容。这将使代码更难维护,因为更难以确定这些全局变量的来源,或者它们是否被意外破坏。要清楚,这是可能的,但我建议这样做。

主模块需要在顶部执行类似的操作。如果它不是程序中发生的第一件事,那么其他模块将无法正常工作。导入顺序不应该有所作为,所以如果有人混淆了这个并且它打破了程序那么就很难找出原因。

import typing # I assume you meant typing, not types
import builtins
vars(builtins).update({k: getattr(typing, k) for k in typing.__all__})

# Any module could do this without having to import anything
def f(x: T) -> T:
    return x