Dictionary

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
theo.puke
User
Beiträge: 17
Registriert: Samstag 21. Januar 2012, 16:17

Das tolle an Python ist, dass alles ein Objekt ist, auch Funktionen:
In Python kann ich Reflection durch Dictionaries ausdrücken, was bei anderen Sprachen nicht funktioniert. Darf ich das vom Stil her machen?

Code: Alles auswählen

def hi():
     print("hi")
a = {"hi",hi"}
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

"type(a)" verrät mir, dass das kein Dictionary ist. Allerdings nur wenn ich deinen Code-Schnipsel so korrigiere, dass die letzte Zeile "a = {"hi",hi()}" lautet. Gespeichert wird lediglich der Rückgabewert von hi() und das wäre in dem Fall None.
Zuletzt geändert von webspider am Montag 30. Januar 2012, 22:57, insgesamt 1-mal geändert.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Sicher kannst du das machen, Reflection wuerde ich es aber nicht nennen, das hat den Beigeschmack, dass es etwas besonderes ist.
Unter der Annahme, dass du in Python 3 arbeitest (wenn nicht, solltest du die Klammern bei ``print`` weglassen) erstellst du da aber kein Dictionary, sondern ein Set. (Wenn man den Syntax-Fehler ausbuegelt)

Dispatching ueber Funktions-Dictionaries ist sogar Pythons ideomatischer "Ersatz" fuer ``switch`` Statements.
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

cofi hat geschrieben:Unter der Annahme, dass du in Python 3 arbeitest (wenn nicht, solltest du die Klammern bei ``print`` weglassen) erstellst du da aber kein Dictionary, sondern ein Set. (Wenn man den Syntax-Fehler ausbuegelt)
Also ich kann damit auch unter Python 2.x ein Set erstellen. :o

Code: Alles auswählen

Python 2.7.2+ (default, Oct  4 2011, 20:03:08) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = {"hi", "hi"}
>>> a
set(['hi'])
A partial list of 3.1 features that were backported to 2.7:

The syntax for set literals ({1,2,3} is a mutable set).
http://docs.python.org/dev/whatsnew/2.7 ... 1-features

Oder meintest du etwas anderes?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Oh es kamen sogar Set Comprehensions mit. Danke fuer den Einwurf. Vielleicht haette ich einfach sagen sollen "Wenn du keinen SyntaxError siehst, ist das ein Set, kein Dictionary" ;)
theo.puke
User
Beiträge: 17
Registriert: Samstag 21. Januar 2012, 16:17

Ach ja stimmt, das ist mir beim Eintippen nicht aufgefallen. Da gehört ein Doppelpunkt zwischen die beiden. Aha ok danke für eure Beiträge
Antworten