如何在python中使用函数中的变量到main?

时间:2012-06-07 01:06:07

标签: python function

我有一个绘制形状并记录其中一个位置的函数。假设点是(2,1)所以x =(2,1)

如何在我的主页中使用x?

def shape():
    t.forward(10)
    x = t.position()

t.goto(x)

我该如何做到这一点?

2 个答案:

答案 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而不返回它(如果你唯一做的就是返回它,那么即使在函数内部给它一个名字也没什么意义,因为没有其他人可以使用该名称。)

有很多例外情况,使用全局变量(或其他非本地人)是有帮助的,但是当你将它们视为一般规则的例外时,生活通常会更容易,因此当你这样做时,你会故意使用这些技术;你的习惯应该是避免全局和非本地人。