Python全局变量没有更新内部定义

时间:2018-01-16 17:14:22

标签: python numpy

我对Python编程比较陌生。我遇到了一个问题,我定义为全局的变量在定义中没有更新。我(尽管我尽了最大的努力)无法绕过可能出错的地方。

以下是代码:

import math
import numpy as np
arraySize = 10
arrayPrecision = 0.1
array = []
x = 0
f_x = x

def arrayMaker():
   global x
   global f_x
   for n in np.arange(-arraySize/2, 0, arrayPrecision):
       x = n
       array.append(f_x)
   for n in np.arange(0, (arraySize/2)+0.1, arrayPrecision):
       x = n
       array.append(f_x)
   print(array)

arrayMaker()

当我运行此代码时,它会打印一个填充了零的数组,表达式f_x将返回0.

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

从评论中看,你似乎误解了一些事情,但这就是你正在寻找的东西。从本质上讲,您正在寻找对f_x的延迟评估。名称f_x实际上是一个函数,因此您应该像函数一样定义它。这是你的代码调整。

import math
import numpy as np
arraySize = 10
arrayPrecision = 0.1
array = []
x = 0
f_x = lambda x: 3*x+4

def arrayMaker():
   for n in np.arange(-arraySize/2, 0, arrayPrecision):
       x = n
       array.append(f_x(x))
   for n in np.arange(0, (arraySize/2)+0.1, arrayPrecision):
       x = n
       array.append(f_x(x))
   print(array)

arrayMaker()