我在VS Code上使用Python,虽然我仍然在学习编码,但我对此感到有些困惑。
我正在运行此代码:
import scipy.integrate
import turtle
ans, err = scipy.integrate.quad(lambda x: x**2,0.,4)
print(ans)
turtle.write(ans, font=("Comic Sans", 40, "normal"))
当我运行调试器时,标记了乌龟,并且lint说乌龟没有写入成员,对吧。 我没有调试就运行了代码,弹出了正确的窗口,但是半秒后关闭了。所有这一切,即使我在我用乌龟写的最后一行标记了休息。
要查看我的代码是否有问题,我在PY shell中运行它并且它运行良好,没有问题。
我猜这个问题是VS Code特有的,虽然我不确定它是如何导入龟的(我应该只导入函数即时使用?)
答案 0 :(得分:1)
当我运行调试器时,标记了乌龟,并且lint说那只乌龟 没有写成员
Turtle暴露了两个接口,一个是功能接口,一个是面向对象的接口。功能界面在加载时导出,因此静态分析工具看不到它,因此也就是皮棉错误。而不是功能接口:
import scipy.integrate
import turtle
ans, err = scipy.integrate.quad(lambda x: x**2, 0.0, 4)
turtle.write(ans, font=("Comic Sans", 40, "normal"))
尝试使用面向对象的界面:
import scipy.integrate
from turtle import Turtle, Screen
ans, err = scipy.integrate.quad(lambda x: x**2, 0.0, 4)
yertle = Turtle()
yertle.write(ans, font=("Comic Sans", 40, "normal"))
正确的窗口会弹出,但会在半秒后关闭
乌龟程序通常以调用mainloop()
方法(屏幕)或函数结束。这将事件处理转交给tkinter。有些编程环境并不需要它,但我相信他们知道要禁用它。添加对.mainloop()
的调用作为代码中的最后一项内容,以查看是否可以解决您的问题:
screen = Screen()
screen.mainloop()