Python:具有相同nam的函数和变量

2024-04-29 06:55:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题是为什么我不能再次调用函数?或者,怎么做?

假设我有这个功能:

def a(x, y, z):
 if x:
     return y
 else:
     return z

我称之为:

print a(3>2, 4, 5)

我得到4。

但是假设我声明了一个与函数同名的变量(错误地):

a=2

现在,如果我想这样做:

a=a(3>4, 4, 5)

或:

a(3>4, 4, 5)

我将得到这个错误:“TypeError:'int'对象不可调用”

无法将变量“a”赋给函数?


Tags: 对象函数功能声明returnifdef错误
3条回答

完成此操作后:

a = 2

a不再是一个函数,它只是一个整数(您重新分配了它!)。因此,如果您试图像调用函数一样调用它,解释器自然会抱怨,因为您正在执行以下操作:

2()
=> TypeError: 'int' object is not callable

底线:不能同时有两个同名的东西,无论是函数、整数还是Python中的任何其他对象。换个名字就行了。

将名称a赋给函数定义,然后将其赋给整数。

这在语法上是正确的,但不是你想要的。

最好给函数提供语义名称,描述传递给它们的参数的用途,给变量提供语义名称,描述它们指向的对象。如果你这样做,你将有更多的可读性代码,你肯定不会再犯这个错误。

python中的名称通常是特定类型的identifiers,更像是命名一个存储变量/函数/方法或python中任何对象的框。 重新分配时,只需重命名一个框。

你可以在下面找到答案。

最初,a在位置140515915925784处被分配一个值9。 当我对一个函数使用相同的标识符时,a现在引用一个框,其中包含在4512942512中该函数的地址

a重新指派到3再次指向a以引用其他地址。

>>> a = 9
>>> id(a)
140515915925784
>>> def a(x):
...     return x
... 
>>> id(a)
4512942512
>>> a
<function a at 0x10cfe09b0>
>>> 
>>> 
>>> 
>>> a = 3
>>> id(a)
140515915925928
>>> a
3
>>>

相关问题 更多 >