首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在python中更改函数中的全局变量

在python中更改函数中的全局变量
EN

Stack Overflow用户
提问于 2018-07-28 03:50:49
回答 3查看 14.2K关注 0票数 13

我是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))

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-28 03:52:56

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

票数 24
EN

Stack Overflow用户

发布于 2018-07-28 04:00:54

在你的函数中,你需要返回值。将您的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的答案。它有助于防止意外地将其他功能的东西搞乱。不是to use globalMore原因

票数 4
EN

Stack Overflow用户

发布于 2018-07-28 04:04:36

您可以在函数中使用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]

然后,在main函数中,将

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51564669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档