当前位置: 首页 > 面试题库 >

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

袁卓
2023-03-14
问题内容

我的问题是为什么我不能再次调用该函数?或者,如何做到这一点?

假设我有这个功能:

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”分配给函数?


问题答案:

完成此操作后:

a = 2

a不再是一个 函数 ,而只是一个 整数 (您已将其重新分配!)。因此,很自然地,如果您尝试将其视为函数,则解释器会抱怨,因为您正在这样做:

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

底线:您不能 同时 使用相同的名称 同时 包含两件事,无论是函数,整数还是Python中的任何其他对象。只需使用其他名称即可。



 类似资料:
  • 问题内容: 假设我有一个Helper类,如下所示: 并且是将被设置一次,在构造函数的变量。 不是,因此我可以使用来区分变量和参数。 另一方面,是。在涉及静态变量时,是否有任何方法可以将其与参数区分开? 问题答案: 尽管不建议通过构造函数设置静态变量的值,但可以使用。

  • 问题内容: 在Java中,实例变量和方法可以具有相同的名称而没有任何不稳定或冲突吗? 我想确保是否可以摆脱它的编译问题,以免造成任何错误。 问题答案: 是的,这很好,主要是因为在语法上,它们的用法不同。

  • 问题内容: 我将如何完成? 我敢肯定有一个非常明显的答案。现在只是在逃避我。 问题答案: 是的,他们可以使用相同的名称。但是,要引用实例变量,您需要使用前缀:

  • 问题内容: 我正在尝试获得类似这样的功能的参考: 我有以下错误: 如何获得具有指定参数的功能? 问题答案: 由于有两个名称相同但签名不同的方法,因此您必须指定所需的方法: 或者(如@Antonio正确指出的): 如果您需要将类的实例作为第一个参数的咖喱函数,则可以以相同的方式进行,只有签名不同(将@Antonios注释与您的问题进行比较):

  • 问题内容: 我是Swift的新手,我已经遍历了一些教程,其中许多教程使用同一个名称多次定义了一个函数。 我已经习惯了其他编程语言,否则将无法执行此操作。 因此,我检查了官方的Swift手册,还检查了override关键字,以了解可以得到的结果,但是仍然无法理解以下代码: 从我看到的函数tableView设置在第1行和第5行,我注意到的唯一区别是第一个tableView函数返回,而第二个函数返回(U

  • 我不太清楚kotlin是如何管理属性名和主构造函数参数名的。如果我写了相同的属性名和参数名,那么kotlin编译器会给出一个错误。 它给出了这个错误。 但是,当我更改属性的名称或更改主构造函数的参数名称时,代码将工作并编译。 这将工作或编译罚款。 这背后的原因是什么?为什么主构造函数的参数名和属性名不能相同?