这两种进口产品有什么区别吗?除了进口范围。
内部或外部导入
当然,如果外部已存在
import os
class foo(object):
def bar(self):
import os
path = os.path.join('foo', 'bar')
答案 0 :(得分:3)
他们在不同的时间被执行。函数内部仅在执行方法时执行,并且每次调用方法时都会执行。这通常不是一个问题(通常,模块只加载一次,你只是得到另一个对同一个对象的引用),但有些人可能会发现它在哲学上是令人反感的,并且如果其他代码可以有不同的行为用sys.modules
或导入钩子做蠢事。
例外情况是from ... import *
除了模块级别之外:在Python 3中它非常气馁甚至是非法的。
答案 1 :(得分:0)
那么id
明智的对象是相同的,这意味着它们都指的是同一个模块对象。
在方法中导入它似乎没有意义。由于os
已经在模块的global
范围内,因此无论您是否在os
内导入bar
,都不会产生任何影响。是的,如果你这样做而且bar
是多次调用的函数,那么import os
会对性能产生轻微影响。