Seite 1 von 1

Dictionary

Verfasst: Montag 30. Januar 2012, 22:49
von theo.puke
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"}

Re: Dictionary

Verfasst: Montag 30. Januar 2012, 22:55
von webspider
"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.

Re: Dictionary

Verfasst: Montag 30. Januar 2012, 22:56
von cofi
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.

Re: Dictionary

Verfasst: Montag 30. Januar 2012, 23:06
von snafu
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?

Re: Dictionary

Verfasst: Montag 30. Januar 2012, 23:10
von cofi
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" ;)

Re: Dictionary

Verfasst: Dienstag 31. Januar 2012, 15:53
von theo.puke
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