方法内/方法外的导入是否有区别?

2024-09-28 21:03:34 发布

您现在位置:Python中文网/ 问答频道 /正文

这两种进口货有什么区别吗?除了进口范围之外。你知道吗

内部或外部导入
当然,如果外部导入已经存在,那么内部导入将是无用的

import os

class foo(object):
    def bar(self):
        import os
        path = os.path.join('foo', 'bar')

Tags: pathimportselfobjectfooosdefbar
2条回答

他们在不同的时间被处决。函数中的函数只有在方法执行时才会执行,并且每次调用方法时都会执行。这通常不是问题(通常情况下,模块只加载一次,您只会得到对同一对象的另一个引用),但有些人可能会发现它在哲学上是令人反感的,如果其他代码使用sys.modules或导入钩子做蠢事,它可能会有不同的行为。你知道吗

除了模块级之外,任何地方都有例外:from ... import *这在python3中是非常不受欢迎的,甚至是非法的。你知道吗

id明智地说,对象是相同的,这意味着它们都引用相同的模块对象。你知道吗

在方法中导入它似乎没有意义。由于os已经在模块的global范围内,因此无论导入os还是不导入bar都不会有什么区别。是的,如果您这样做并且bar是多次调用的函数,那么import os将对性能产生轻微影响。你知道吗

相关问题 更多 >