解释无法分配给函数调用错误


def func(lst):
return lst[0]

lst = [1,2,3]
func(lst) = 5 #a
lst[0] = 5 #b

为什么"a"给我一个"a";不能分配给函数调用";error和'b'运行得非常好,即使它们说的是相同的话。请解释和/或提供我试图做的事情的替代方案。(忽略错误的压痕(

执行lst[0]=5时,实际上是将列表lst的第一个元素更改为5。因此,可以将assign的值设为5。

但是,当您为算法执行func(lst)时,您试图给func(lst)一个值5,这是不可行的。

然而,你可以做的是检查func(lst) == 5,也就是说,func(lst) equal to 5 ?给出的值是吗

你认为它是什么"应该";意思是,如果你被允许做func(lst) = 5

你似乎被这样一个事实所困扰,在这种情况下,func(lst)恰好总是等于lst[0],你知道这一点——但如果func(lst)在哪里,比如说,总是返回2,这意味着什么?你认为这意味着你可以将2设置为等于5(或者你指定的其他值(吗?这显然是荒谬的。如果函数没有返回任何内容呢?

唯一可以指定的是变量和对象属性(列表索引是其中的一种特殊情况(。函数调用既不返回这两个值,也不返回。变量和对象属性持有(或包含(一个值,但它们本身不是值。分配给其中一个是有意义的,但不能分配给值。

特别是函数返回的lst[0]实际上与lst本身没有任何关系。这就是函数计算其值的方式——它查看已传递的列表并获取第一个元素。但一旦它做到了这一点,并找到了,比如说,1(在你的例子中(,1的值就是1——它就是"1";分离的";从列表中选择。

最新更新