我有一个绘制形状并记录其中一个位置的函数。假设点是(2,1)所以x =(2,1)
如何在我的主页中使用x?
def shape():
t.forward(10)
x = t.position()
t.goto(x)
我该如何做到这一点?
答案 0 :(得分:1)
要在主程序中访问x
的值,请从函数中返回(通过return x
),在这种情况下shape()
设置/更改它。
答案 1 :(得分:1)
你提出的代码没有任何意义(即使不包括范围规则)。您定义一个函数,在调用时将创建x
。然后你想使用x
。但是你从未调用过这个函数,所以x
甚至不存在!您可能已在其他地方调用该函数,但您可能已多次调用它,在这种情况下可能存在许多版本的x
。你想要哪一个?
这就是你不能简单地引用在该函数之外的函数中定义的变量的原因。这不只是惹恼你的限制;它作为一个概念没有意义。
遵循的经验法则是,通过将函数传递给函数的参数,将信息传递给,然后将从函数传递给其调用者通过返回它。这意味着您的功能应该如下所示:
def shape(t):
t.forward(10)
return t.position
然后你会这样做:
x = shape(t)
t.goto(x)
您可以访问t
作为非本地变量(全局或外部函数范围;您不清楚使用哪个)。但除非你有充分的理由,否则通常最好不要这样做;显式传递信息往往会使您的代码更具可读性,使更改更加孤立,并且更有可能在多个上下文中使用(毕竟这是制作函数的关键)。你不能访问x
而不返回它(如果你唯一做的就是返回它,那么即使在函数内部给它一个名字也没什么意义,因为没有其他人可以使用该名称。)
有很多例外情况,使用全局变量(或其他非本地人)是有帮助的,但是当你将它们视为一般规则的例外时,生活通常会更容易,因此当你这样做时,你会故意使用这些技术;你的习惯应该是避免全局和非本地人。