导致函数错误的函数索引没有属性getitim

时间:2018-01-09 11:03:54

标签: python python-2.7

我是一个python初学者,我正在尝试编写一个计算格点最近邻居的函数,并收到以下错误:

  

晶格[x,(y - 1)%N] +晶格[x,(y + 1)%N]

     

TypeError:'function'对象没有属性' getitem '

我在网上找到的任何解决方案似乎与传递函数而不是其结果有关,但我看不出这是怎么回事。

这是我的代码:

def lattice(N):
    lattice = np.random.rand(N,N)
    lattice = np.where(lattice <= 0.5, 1,-1)


def nearestneighbours(lattice, x, y):
    return lattice[(x - 1) % N, y] + lattice[(x + 1) % N, y] + \
       lattice[x, (y - 1) % N] + lattice[x, (y + 1) % N]

1 个答案:

答案 0 :(得分:2)

  • 不要重复使用和覆盖函数和变量名称。
  • 您应该确保lattice返回它创建的数组
  • 存在一些不一致之处。为什么lattice接受N作为参数,但是 nearestneighbours访问全局变量?


def lattice(n):
    arr = np.random.rand(n, n)
    arr = np.where(arr <= 0.5, 1, -1)
    return arr


def nearestneighbours(arr, n, x, y):
    return arr[(x - 1) % n, y] + arr[(x + 1) % n, y] + \
       arr[x, (y - 1) % n] + arr[x, (y + 1) % n]

N = 5
lat = lattice(5)
print nearestneighbours(lat, N, 2, 3) 
# 0