而不是像这样做一些长而丑的事情:
def change_variable():
global variable
variable+=1
def function(var, key):
global variable
variable=var
turtle.listen()
turtle.onkey(change_variable, key)
有没有办法做到以下几点?我需要的任何模块或更新?
turtle.onkey(variable+=1, key)
另外,能够做到以下几点会让我的事情变得容易1000倍,这可能吗?
while 1:
turtle.onkey(break, key)
答案 0 :(得分:2)
你可以使用一个闭合并将丑陋地区整合到一个较小的区域:
MyClass
我假设全局def function(var, key):
def change_variable():
nonlocal var
var += 1
print(var) # just to prove it's incrementing
turtle.listen()
turtle.onkey(change_variable, key)
是丑陋的一部分,如果没有,你需要它,然后只需将其添加回来并将variable
更改为nonlocal
。这会将闭包减少到内部函数。
答案 1 :(得分:1)
解决方案:
while 1:
turtle.onkey(break, key)
有点类似:
def outer(key):
keep_going = True
def quit_loop():
nonlocal keep_going
keep_going = False
turtle.onkey(quit_loop, key)
turtle.listen()
while keep_going:
turtle.left(70)
turtle.forward(200)
print("Done!")
虽然可能不是您希望的简短易用的解决方案!