Was sollten Sie wahrscheinlich tun, ist nur 2
zurückkehren und dann verwenden, die als Index in die Liste, die Sie in geben:
lyst = [7, 8, 9, 10]
def func(lst):
# ...
return 2
lyst[func(lyst)] = 11
Sie können ein Objekt erstellen, die einen Verweis auf den Behälter kapselt plus Index (oder Schlüssel im Fall eines Wörterbuchs) des jeweiligen Elements:
class ElementRef(object):
def __init__(self, obj, key):
self.obj = obj
self.key = key
@property
def value(self): return self.obj[self.key]
@value.setter
def value(self, value): self.obj[self.key] = value
dann Ihre Funktion wie folgt aussieht:
def func(lyst):
# ...
return ElementRef(lyst, 2)
Und Sie können, indem sein value
Attribut wie dies das Element ändern:
func(lyst).value = 11
Aber ich weiß nicht viel Wert in dieser über gerade zurückkehr den Index sehen. Vor allem, weil das Objekt nutzlos werden kann, wenn Elemente vor der Verwendung zu der Liste hinzugefügt oder aus ihr entfernt werden. Das explizite Zurückgeben eines Indexes macht dies zu einem offensichtlichen Problem, aber wenn Sie eine ElementRef
zurückbekommen, können Sie annehmen, dass sie eine Art von Magie enthält, die sie nicht enthält.
@abccd Nun ist es möglich, in C++, fragte ich mich, wenn es in Python möglich war. – Rockybilly
nicht so etwas wie "Rückkehr durch Referenz", vielleicht meinen Sie "Anruf per Referenz"? – muratgu
Nicht genau. Dies funktioniert nur mit einem veränderbaren Objekt (Liste, Wörterbuch, etc ..) –