Gibt es ein Python-Äquivalent zu Ruby-Symbolen?
Gibt es eine Python-äquivalent zu Ruby-Symbole?
- Wenn ja, was ist es dann?
- Wenn nicht, dann bleiben wir mit strings als unsere Schlüssel in Wörterbüchern nur?
InformationsquelleAutor der Frage | 2010-09-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, python muss nicht ein symbol geben.
Allerdings string-Literale sind interniert standardmäßig und andere Zeichenfolgen werden können, interniert mit der
intern
Funktion. Also mit string-Literale als Schlüssel in dictionaries ist nicht weniger performant als die Verwendung Symbole in ruby.InformationsquelleAutor der Antwort sepp2k
Wie schon andere gesagt haben, es ist kein symbol in Python, aber die Saiten gut funktionieren.
Zu vermeiden, zitieren strings als Schlüssel, die Nutzung der dict () - Konstruktor-syntax:
InformationsquelleAutor der Antwort Ned Batchelder
Auch für diejenigen, die interessiert sind: Symbole in Ruby, wenn verwendet, in einer hash sind sehr ähnlich zu leeren Objekten in python. So können Sie zum Beispiel tun:
festlegen und dann einen dictionary-Schlüssel wie eine_variable:
tun, und dann eine standard-retrieval:
Jedoch, wie sepp2k darauf hingewiesen es gibt keine performance-Vorteil dabei. In der Tat, ich habe einen kleinen test und stellte fest wenig bis keine performance-boost:
Geschwindigkeit getestet in ipython:
So, in meinem Fall die 'Symbole' langsamer! (für den Spaß zahlen nicht genau). Es ist jedoch zu beachten, dass es wahrscheinlich der Speicher Vorteile, es zu tun auf diese Weise. Wenn Sie kümmern sich nicht um die key-Art-Objekte haben eine kleinere Stellfläche als die Streicher.
Obwohl, stellt sich die Frage, wie python behandelt die Erinnerung an die variable name eine_variable.
InformationsquelleAutor der Antwort MartianE
InformationsquelleAutor der Antwort Philipp
Nicht als erste-Klasse-Typ, aber es existiert https://pypi.python.org/pypi/SymbolType.
InformationsquelleAutor der Antwort Michael Wolf