我正在学习Python,来自Java背景。首先,我是在Coursera上做的。在解决实践问题时,我遇到了这个特殊的代码
import simplegui
message = "Welcome!"
# Handler for mouse click
def click():
global message
message = "Good job!"
# Handler to draw on canvas
def draw(canvas):
canvas.draw_text(message, [50,112], 36, "Red")
# Create a frame and assign callbacks to event handlers
frame = simplegui.create_frame("Home", 300, 200)
frame.add_button("Click me", click)
frame.set_draw_handler(draw)
# Start the frame animation
frame.start()
现在我的问题是关于这个特殊的方法
def draw(canvas):
canvas.draw_text(message, [50,112], 36, "Red")
在这个方法中,为什么我需要使用那个特定的参数“canvas”。为什么我不能这么简单
def draw():
canvas.draw_text(message, [50,112], 36, "Red")
因为当你从调用这个方法的地方
frame.set_draw_handler(draw)
无论如何,我不会传递任何参数。所以参数类型不存在。或者当我从方法set_draw_handler()调用它时。编译器自动假定它是canvas类型。
谢谢你
:)