gpt4 book ai didi

函数级 VS 的 Python 导入。模块级

转载 作者:太空狗 更新时间:2023-10-29 22:23:31 25 4
gpt4 key购买 nike

如有疑问,我通常将导入语句放在模块的顶部。通常,这会减少重复,这很好。但是,在只有一个函数(或类)需要导入的情况下,是否存在性能下降?

以下是否仅在调用函数时导入?

     def func():
from task import test

如果是这样,我想这可能是一种轻微的效率。我还假设您可以获得一些附加点以加快垃圾收集和变量范围界定,因为导入的对象不会添加到全局字典中。正如另一位海报所说:

This is mostly due to variable look-up. Looking up a variable in the global scope requires a dictionary look-up. In contrast, the compiler determines local names statically and references them by index, so no dictionary look up is required.

那些合理的假设是我完全偏离事实吗?

谢谢

最佳答案

函数中的导入仅在函数运行时导入。请记住,在 Python 中,所有语句都会在遇到时执行,导入是与其他任何语句一样的语句。导入模块时会导入顶级导入,因为它们是模块中的顶级语句。

您对名称查找的担忧是错误的:差异可以忽略不计,只有在分析显示有问题时才应考虑。

我只将模块导入函数范围有两个原因:1) 修复循环导入问题,顺便说一句,这可能可以通过重构以其他方式解决,或者 2) 如果模块是可选的,并且没有使用该函数我的许多用户。对于2),模块可以完全丢失,除非有人调用该函数,否则不会有问题。

关于函数级 VS 的 Python 导入。模块级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9037733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com