在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 个变量没有改变,我只是不明白我需要做什么来更新它们并能够打印它们(在函数之外)。我假设函数不知道变量,所以它不能改变它们。如果我将 2 个变量作为参数提供给函数,我如何为脚本的打印部分取回值?

原文由 user3499381 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 370
2 个回答

您需要在函数中使用 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 的更多信息。

原文由 ltd9938 发布,翻译遵循 CC BY-SA 4.0 许可协议

在您的函数中,您需要返回值。将您的 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 的回答中直接更改全局变量更好的做法。它有助于防止不小心弄乱其他功能。 更多使用 global 的 理由

原文由 Luke Borowy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题