matplotlib Python import在同一脚本中导入库

tjjdgumg  于 2023-08-06  发布在  Python
关注(0)|答案(1)|浏览(94)

假设我有一个绘图函数库,所有这些函数都需要在其他一些库中导入matplotlib。这样做会很麻烦:

def plot1(a,b,c,d):
    import matplotlib
    import matplotlib.pyplot as plt
    ...
    ...

def plot2(a,b,c,d):
    import matplotlib
    import matplotlib.pyplot as plt
    ...
    ...

字符串
有没有一种方法可以将import matplotlib(和其他)定义为一个函数,并简单地导入 that?举例来说:

script1.py

def load_matplotlib_funcs():
    import matplotlib
    import matplotlib.pyplot as plt
    ...
    ...


def plot1(a,b,c,d):
    import load_matplotlib_funcs
    ...


这样做似乎不会产生使用matplotlib作为的预期结果。

nr7wwzry

nr7wwzry1#

通常,你只需要把import放在文件的顶部,所有函数都可以访问它们:

import matplotlib
import matplotlib.pyplot as plt

def plot1(a,b,c,d):
    ...

def plot2(a,v,c,d):
    ...

字符串
我能想到的只有两个原因,你会想在流上导入模块:

  • 循环导入(如果全局使用)
  • 按需导入,以防它们加载缓慢(例如,tensorflow),并且不是每次运行程序都需要。

您当然可以编写一个额外的文件来为您处理这些导入

# optional.py with on-demand imports
# matplotlib imports are fast, no need to outsource them!
import matplotlib
import matplotlib.pyplot as plt

# slow imports which are not needed for every program run could be outsourced
import torch
import sklearn
import tensorflow
# ...
# your normal file

def myfunc():
   from optional import * 
   t = torch.Tensor()

# ... rest of the code that does not need the torch module

的数据

一般情况下,没有理由进行按需导入。您可以保存一些导入时间,但您的代码将变得更容易出错(例如很久以后才检测到丢失的包)

使用stared import * 也会使IDE更难检查代码的正确性(以及您自己)。
或者,为了接近你最初的想法,你当然可以这样做,但是由于模块的变量是局部绑定的,你需要把它们带过来。对于多个功能,它将很快开始变得混乱:

def my_imports():
   import matplotlib.pyplot as plt
   import numpy as np
   return np, plt

def plot():
   np, plt = my_imports()

相关问题