簡體   English   中英

重新分配從Python中的函數返回的值

[英]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(thelist, n):
     thelist.append(n)
     return thelist

或者您要插入?

def foo(thelist, i, n):
     thelist.insert(i , n)
     return thelist

閱讀您被編輯的帖子后的@OP; 檢查鏈接鏈接有一個例子有可能使用的。

根據stackoverflow帖子; 答案是不。

我仍然不了解您要達到的目標,因此請詳細說明。 現在看來您需要的是

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM