使用python程序以f.writelines的方式生成一个新的.py文件,能够成功f.readlines但是无法调用其中的函数

最近想设计一个普适性高的函数绘图,可以用户手动输入函数方程,但是输入的方程为字符串形式,所以我就考虑用f.writelines的方式实时更新一个.py文件,并在生成后调用其中的方法来生成图像,具体如下:

import os
import func1

new_lines = "import numpy as np\n" \
            "import matplotlib as plt\n\n\n" \
            "def draw_line():\n" \
            "  x = np.linspace(0, 100, 100)\n" \
            "  y = x\n" \
            "  plt.plot(x, y)\n" \
            "  plt.show()\n"
with open(os.path.join(os.getcwd(), "func1.py"), "w+") as f:
     f.writelines(new_lines)
try:
     func1.draw_line()
except Exception:
     print("something is wrong here.....")

事实上,可以成功生成func1.py文件,并且也可以成功调用draw_line()方法,但是如果我不停止运行程序,连续修改func1.py中的文字,哪怕将func1.py中的内容清空,也只能显示第一次的方程绘图,但是f.readlines()能够成功读取真实的内容,请问这是为什么呢?

func1.py在import的时候就固定了,你可以了解下python的exec()这个函数,并不需要将代码写入一个新文件中。

我想了一下,好像有点儿明白了
比如在程序运行前我的方程是“y=x”,编译的时候就固定了,而当我修改func1中的内容时,编译已经结束了
修改过的内容只有再次编译才能生效,但是文件的更新是实时的

进行了修改,不使用定义方法然后调用的形式
而是直接写函数体
然后在修改func1.py后使用os.system(python func1.py),即可每次运行都单独编译该文件,实现每次都更新的功能