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";分离的";从列表中选择。