如何定义导入模块的函数

时间:2019-04-16 09:08:27

标签: python function

我正在尝试定义一个函数,该函数导入模块并将该函数放置在我自己的模块中,这样当我在处理某种类型的项目时,我需要输入的就是:

    import from user *
    setup()
    #setup is the function which imports the modules

但是,每当我尝试此操作时,它都根本不起作用。在我运行该函数后尝试调用安装程序中定义的模块,只会导致错误,表明未安装这些模块。

这是我模块中的代码:

    def setup():
        import keyboard, win32api, win32con

让我知道是否可以提供更多信息,谢谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我认为您遇到了范围问题,如果在其他模块中定义了设置,则导入将仅在该模块中有效(或者可能仅在需要测试的功能中有效)。

一般而言,“导入一切可能需要的”政策是我认为错误的。您的代码仅应导入其真正需要的内容。更好地将依赖性降低到最低限度和明确性。

答案 1 :(得分:1)

将名称显式地导入模块中通常是个好主意,这样您就可以知道它们的来源。 Explicit is better than implicit。但是对于交互式会话,有时一次导入负载很有用,所以...

您的问题是您的setup方法将这些模块导入其自己的名称空间,该名称空间在函数外部不可用。但是您可以做一些简单的事情。如果您的user模块刚刚包含:

import keyboard, win32api, win32con

然后在您的交互式会话中,您可以执行以下操作:

>>> from user import *

这些模块随后应在您会话的名称空间中可用。