In Python binden die Schlüsselwörter def
und class
einen bestimmten Namen an das von ihnen definierte Objekt (Funktion oder Klasse). Ebenso wird Modulen aufgrund eines spezifischen Dateinamens ein Name zugewiesen. In allen drei Fällen gibt es offensichtlich eine Möglichkeit, dem fraglichen Objekt einen "kanonischen" Namen zuzuweisen.
Bei anderen Arten von Objekten kann ein solcher kanonischer Name jedoch möglicherweise einfach nicht existieren. Betrachten Sie beispielsweise die Elemente einer Liste. Die Elemente in der Liste haben keine individuellen Namen, und es ist durchaus möglich, dass der einzige Weg, sie in einem Programm zu referenzieren, darin besteht, Listenzugriffsindizes auf die enthaltende Liste anzuwenden. Wenn eine solche Liste von Objekten an Ihre Funktion übergeben würde, könnten Sie den Werten keine aussagekräftigen Bezeichner zuweisen.
Python speichert den Namen auf der linken Seite einer Zuweisung nicht im zugewiesenen Objekt ab, weil:
- Es erfordern würde, festzustellen, welcher Name unter mehreren konkurrierenden Objekten "kanonisch" ist,
- Es würde keinen Sinn machen für Objekte, die niemals einem expliziten Variablennamen zugewiesen werden,
- Es wäre äußerst ineffizient,
- Buchstäblich keine andere Existenzsprache das tut.
Also haben zum Beispiel Funktionen, die mit lambda
definiert sind, immer den "Namen" , anstatt einen spezifischen Funktionsnamen.
Der beste Ansatz wäre einfach, den Aufrufer zu bitten, eine (optionale) Liste von Namen zu übergeben. Wenn das Tippen von '...','...'
zu umständlich ist, könnten Sie z.B. einen einzelnen String akzeptieren, der eine kommaseparierte Liste von Namen enthält (wie es namedtuple
tut).