我是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个变量作为参数输入函数,如何获取脚本打印部分的值?
答案 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_pct
和global 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)
尽管我不清楚您为什么将temp
,entropy
和preq
传递给makeplot
,因为您似乎没有使用它们