【问题标题】:How to return global variables如何返回全局变量
【发布时间】:2014-04-10 02:06:22
【问题描述】:

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

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() 函数中定义。

【问题讨论】:

    标签: python function python-3.x return


    【解决方案1】:

    由于您在 userInput() 中返回 4 个值,因此您还希望在使用之前将它们扩展至相同的范围,因此请为您的 main() 尝试类似的操作

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

    请注意,您的输入法 (eval) 肯定是不安全的,因为您正在执行任意用户输入,并且用户必须专门用他们不知道的逗号分隔他们的数字。

    【讨论】:

      【解决方案2】:

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

      x1,y1,x2,y2 = userInput()
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-12
        • 1970-01-01
        • 2021-11-07
        • 2020-09-11
        • 2016-05-13
        • 2014-01-16
        • 1970-01-01
        • 2016-04-03
        相关资源
        最近更新 更多