如何返回全局变量

时间:2014-04-10 02:06:23

标签: python function python-3.x return

我正在编写一个创建图形窗口的函数,从用户那里获取点并在窗口中绘制一条带有这些点的线。这是我的代码:

def setUp():
    w = GraphWin("Demo",500,500)
    return w
def userInput():
   x1, y1, x2, y2 = (eval(input("Enter 4 numbers: ")))
   return x1, y1, x2, y2

def displayLine(w,x1,y1,x2,y2):
    var = Line (point(x1, y1), Point(x2, y2))
    var.draw(w)  

def main():
    w = setUp()         
    userInput() 
    displayLine(w,x1,y1,x2,y2)  
main()

我得到的错误是global name 'x1' is not definedx1变量在userInput()函数中定义。

2 个答案:

答案 0 :(得分:2)

由于您在userInput()中返回了4个值,因此您还希望在想要使用它之前将它们展开到相同的范围内,因此请尝试使用main()

def main():
    w = setUp()         
    x1, y1, x2, y2 = userInput() 
    displayLine(w,x1,y1,x2,y2)  
main()

请注意,您的输入法(eval)肯定是不安全的,因为您正在执行任意用户输入,并且用户必须使用逗号来明确区分他们的号码,而这些逗号并不会被告知。

答案 1 :(得分:0)

错误来自main方法。 main方法中没有声明x1,y1,x2或y2。你应该做的

x1,y1,x2,y2 = userInput()

,因为userInput()会返回这4个值,而您不会在main方法中接受它。