当前位置: 首页 > 面试题库 >

如何使用Python的__import__函数等效于“从模块导入*”?

籍弘伟
2023-03-14
问题内容

给定一个带有模块名称的字符串,如何将模块中的所有内容导入,就像调用过的一样:

from module import *

即给定的字符串S =“ module”,如何获得以下等效:

__import__(S, fromlist="*")

这似乎没有达到预期的效果(因为它没有导入任何东西)。


问题答案:

请重新考虑。唯一比 魔术 更糟糕的import *是。 __import *

如果您确实要:

m = __import__ (S)
try:
    attrlist = m.__all__
except AttributeError:
    attrlist = dir (m)
for attr in attrlist:
    globals()[attr] = getattr (m, attr)


 类似资料:
  • 问题内容: 我正在尝试使用该函数进行复制,但似乎遇到了麻烦。 一个简单的例子很简单: 我遇到的问题是我正在从子包中导入名称(即): 所以我想要的是 但这只是导入了顶级包,而不是子包: 问题答案: 该函数将返回包的顶级模块,除非您传递了非空参数: 请参阅该函数的Python文档。

  • 问题内容: 我想了解如何从导入的模块执行功能。 这是我到目前为止的位置。 app / mocking.py: app / my_module / init.py: 测试/模拟测试.py: 这不 符合 我的预期。“已修补”模块仅返回的未模拟值。如何模拟要导入到被测名称空间中的其他包中的方法? 问题答案: 当您从包中使用装饰器时,您 未在 修补名称空间(从本例中导入模块),而是在被测试的名称空间中对其

  • 问题内容: 我已尝试找到有关最佳使用还是全面的指南。我刚开始使用Python,并且正在尝试着眼于最佳实践。 基本上,我希望有人能分享他们的经验,其他开发人员有什么喜好,以及避免遇到麻烦的最佳方法是什么? 问题答案: 和之间的区别主要是主观的。选择最喜欢的一个,并在使用中保持一致。这里有一些要点可以帮助你做出决定。 优点: - 减少维护你的import报表。无需添加任何其他导入即可开始使用模块中的另

  • 问题内容: 一个快速的JSTL问题。我通常在jsp页面中使用scriptlet,但是由于页面中的某些其他原因而发生冲突。我了解您可以使用JSTL做类似的事情,尽管我并不熟悉。这是我将为此使用Java进行编码的内容: 那么可以将其转换和翻译以与JSTL一起使用吗? 在此先感谢您,如果您有任何疑问,请告诉我。 问题答案: 您可以为此使用。该可以通过lowercasing的做到两边对称。 或者,当您使用

  • 问题内容: 在Java中,可以使用 构建器模式 来提供一种更具可读性的方法来实例化具有许多参数的类。在构建器模式中,一个人使用一种方法来构造配置对象以设置命名属性,然后使用它来构造另一个对象。 Python中的等效项是什么?模仿相同实现的最佳方法是吗? 问题答案: 设计模式通常可以用内置语言功能代替。 您的用例 您说:“我想有一个更具可读性的“方法”来实例化具有许多参数的类。” 在Java的情况下

  • 问题内容: 我只是意识到 比做的快三倍 其中x是一个复数的numpy数组。为了提高代码的可读性,我可以定义一个类似 仍然比abs(x)** 2快得多,但这是以函数调用为代价的。是否可以像在C中使用宏或使用inline关键字那样内联这样的函数? 问题答案: 是否可以像在C中使用宏或使用inline关键字那样内联这样的函数? 不会。在到达此特定说明之前,Python解释器甚至不知道是否存在这样的函数,