为什么这些变量名称有问题?

Why are those names of variables problematic?

如果我在下面的程序中调用 L,我会收到错误消息(类型错误:'sage.rings.integer.Integer' 对象不可调用)。

def N(N,a,b,c):
    return ...

def L(N,a,b,c):
    print N(N,a,b,c)

如果我把L的定义改成

def L(z,a,b,c):
    print N(z,a,b,c)

我没有问题了。有人可以解释为什么我不能调用第一个变量 N 吗?

问题是编译器认为 N (..) 是您传递给函数 L 的参数 N。 不要忘记您可以将函数作为参数传递给其他函数。

在你的例子中,传递的 N 是一个整数,当编译器尝试 运行 N (..) (又名调用它,因此你的错误)它坏了,因为你不能对数字这样做。

希望对您有所帮助。