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

时间:2015-11-18 13:17:53

标签: variables scope sage

如果我在以下程序中调用L,则会收到错误消息(TypeError:' sage.rings.integer.Integer' object不可调用)。

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?

1 个答案:

答案 0 :(得分:1)

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

在你的情况下,传递的N是一个整数,当编译器尝试运行N (..)(也就是调用它,因此你的错误)时它就坏了,因为你不能这样做是为了数字。

希望有所帮助。