Python 在用户定义函数中使用模块

Python 在用户定义函数中使用模块,python,numpy,Python,Numpy,当我需要在我定义的python函数中使用numpy时,哪种方法是正确的/更好的/首选的/更具python风格的 方法1 def do_something(arg): import numpy as np y = np.array(arg) return y 或 方法2 import numpy as np def do_something(arg): y = np.array(arg) return y 我的期望是方法2是正确的,因为它不会在每次调

当我需要在我定义的python函数中使用numpy时,哪种方法是正确的/更好的/首选的/更具python风格的

方法1

def do_something(arg):
    import numpy as np
    y = np.array(arg)

    return y

方法2

import numpy as np
def do_something(arg):
    y = np.array(arg)

    return y

我的期望是方法2是正确的,因为它不会在每次调用函数时执行import语句。另外,我希望在函数中导入只会使numpy在该函数的范围内可用,这看起来也很糟糕

是,方法2和您的解释一样正确。Python中的导入是#在C/C++中包含头文件,把进口放在首位。方法1使
import
语句在任何情况下只执行一次,这也是不正确的。同一包装的任何进一步
导入
s将无效。惯例是将所有导入的包放在文件的开头。在某些特殊情况下,在函数中导入可能是有意义的,例如定义一些使用某些可选依赖项的功能,或者通过根据需要延迟加载依赖项来减少脚本加载时间。例如,我在一些脚本中使用了它来快速验证输入,并且仅在输入有效时加载大量依赖项。