在Python中的函数内更改全局变量

时间:2018-07-27 19:50:49

标签: python variables scope

我是python的新手。

我不太了解如何设置变量并在要稍后使用的函数中对其进行更改。我的脚本需要从函数中获取x和y值,这些值由函数创建的图表的大小确定。这些变量需要稍后在脚本中传递给打印命令以输出html。假设我有全局变量:

    originx_pct = 0.125
    originy_pct = 0.11

但是运行该功能时,这些将需要更改...

    def makeplot(temp, entropy,preq):
        originx_pct = origin.get_points()[0][0]
        originy_pct = origin.get_points()[0][1]

然后打印在稍后编写的html页面的javascript中...

    print('var originx_pct = {};'.format(originx_pct))
    print('var originy_pct = {};'.format(originy_pct))

这两个变量没有改变,我只是不明白我需要做些什么来更新它们并能够打印它们(在函数外部)。我假设该函数不了解变量,因此无法更改它们。如果我将函数的2个变量作为参数输入函数,如何获取脚本打印部分的值?

3 个答案:

答案 0 :(得分:4)

您需要在函数中使用global关键字。

originx_pct = 0.125
originy_pct = 0.11

def makeplot(temp, entropy,preq):
    global originx_pct, originy_pct
    originx_pct = origin.get_points()[0][0]
    originy_pct = origin.get_points()[0][1]

您可以详细了解global here

答案 1 :(得分:2)

在函数中,您需要返回值。将您的makeplot更改为以下内容:

def makeplot(temp, entropy,preq):
        local_originx_pct = origin.get_points()[0][0]
        local_originy_pct = origin.get_points()[0][1] #the local_ in the names doesn't mean anything, it is just for clarity.
        return local_originx_pct,local_originy_pct 

然后,当您调用函数时,将变量设置为其返回值。

originx_pct,originy_pct=makeplot(args and stuff)

这是更好的做法,然后直接更改全局变量(如ltd9938的答案)。它有助于防止将其他功能意外弄乱。 More个没有to use global的原因

答案 2 :(得分:2)

您可以使用行global originx_pctglobal originy_pct在函数中声明全局变量,也可以在运行函数时返回它们。为此,您可以

def makeplot(temp, entropy,preq):
    return (origin.get_points()[0][0],origin.get_points()[0][1])

def makeplot(temp, entropy,preq):
    return origin.get_points()[0][0:2]

如果origin.get_points()[0]仅包含两个元素,则只需执行以下操作:

def makeplot(temp, entropy,preq):
    return origin.get_points()[0]

然后,在您的主要功能中,放入

originx_pct, originy_pct = makeplot(temp, entropy,preq)

尽管我不清楚您为什么将tempentropypreq传递给makeplot,因为您似乎没有使用它们