繁体   English   中英

如何定义导入模块的函数

[英]How to define a function which imports modules

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

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

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

这是我模块中的代码:

    def setup():
        import keyboard, win32api, win32con

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

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

一般来说,“导入一切可能需要的东西”策略是我认为错误的。 您的代码仅应导入其真正需要的内容。 更好地将依赖关系减少到最低限度并明确了。

将名称显式导入模块中通常是个好主意,这样您就可以查看名称的来源。 显式胜于隐式 但是对于交互式会话,有时一次导入负载很有用,所以...

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

import keyboard, win32api, win32con

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

>>> from user import *

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM