[英]Reassigning a value returned from a function in Python
我的頭銜可能有些離譜,但我真的不知道該如何制定自己的名字。
假設我有一個函數,該函數需要一個數據結構和其他一些參數,並從該數據結構中返回一個值。 我如何重新分配該返回值?
這是我想做的一個簡單示例:
假設我有一個函數foo,
def foo(x, n):
return x[n]
和清單l,
l = [1, 2, 3, 4, 5]
我想做的是這樣的:
foo(l, 1) = 0 #this results in an error
我想導致的結果是:
l = [1, 0, 3, 4, 5]
這個示例對於另一種方法可能是微不足道的,但是讓我們想象一下我從列表中檢索項目的功能更加復雜。
編輯:也許我的描述太不清楚了,基本上我想要的是一個像Lisp中的setf一樣的賦值運算符。 我希望我的函數返回某種指向數據結構中值的指針。 然后,我想更改指針所指向的值。 我想為我使用的東西基本上是這樣的:(我不明白為什么我不只是從一個例子開始)
def foo(l, indexes):
if indexes == []:
return l
else:
return foo(l[indexes[0]], indexes[1:])
l = [[1, 2], 3]
foo(l, [0, 1]) = 0 #Again this is what is not working and I understand why it's not working, I just want something that would do what you think this might do.
我想得到的結果是:
l = [[1, 0], 3]
我仍然不了解您要達到的目標,因此請詳細說明。 現在看來您需要的是
def foo(l, n, number):
...logic...
l[n] = number
return l
編輯:閱讀您的編輯后,不可以。 該函數返回值 ,而不是對列表中項目的引用 。
您無法要求(原因是您無法將2分配給0)。 如果使用宏,則不用使用函數,而是可以實現它。 python沒有像C那樣的宏。但是一旦看過macropy,就可以在python中編寫宏。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.