Python 3000 alpha1 ist draußen!...

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.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

LINK!

Ladet es mal und gebt

Code: Alles auswählen

print "Hello World!"
ein!^_^

Edit (Leonidas): Titel angepasst.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Du meinst die (irgendwie in der Praxis abstoßende) Tatsache, dass `print` von einem Statement zu einer Funktion "degradiert" wurde?
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Y0Gi hat geschrieben:Du meinst die (irgendwie in der Praxis abstoßende) Tatsache, dass `print` von einem Statement zu einer Funktion "degradiert" wurde?
Joa, schon....

So abstoßend find ich's aber nich. Hab ein paar Zeilen Code geschrieben und irgendwie lässt's sich besser lesen...

Außerdem find ich bei dem neuen Print die Argumente end und sep total toll.
BlackJack

Also hier das korrekte Beispül:

Code: Alles auswählen

bj@s8n:~$ python3.0
Python 3.0a1 (py3k, Aug 31 2007, 21:20:42)
[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> täst = 'Hallo Welt!'
>>> print(täst)
Hallo Welt!
:-D
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Python 3000 gefällt mir ziemlich gut. Wird aber sicherlich noch eine Zeit dauern, bis die ganzen Bibliotheken in PEP3000 portiert werden.
BlackJack

Python 3.0 wird ja auch noch eine Zeit auf sich warten lassen. Da bleibt also noch Zeit. Ich persönlich warte erst einmal auf Python 2.6, da soll es ja eine Möglichkeit geben, Programme so laufen zu lassen, dass man auf Inkompatibiliäten mit 3.0 hingewiesen wird. Da kann man dann langsam anfangen zumindest Teile von Anwendungen so umzuschreiben, dass sie auf beiden Versionen laufen. Eventuell ist es ja sogar möglich es soweit anzupassen, dass das Umwandlungsskript `2to3.py` den Rest besorgt und man für den Übergang mit *einer* Quelltextbasis auskommt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Y0Gi hat geschrieben:Du meinst die (irgendwie in der Praxis abstoßende) Tatsache, dass `print` von einem Statement zu einer Funktion "degradiert" wurde?
Schade, ich hatte mich schon so an Python gewöhnt...
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
mq
User
Beiträge: 124
Registriert: Samstag 1. Januar 2005, 19:14

*kratz* vllt. sollte man noch erwaehnen, dass das die Alpha 1 ist, das hat bisher keiner getan.

Nebenbei sind die ganzen Aenderungen (auch print) schon ewig bekannt, wieso regt ihr euch da jetzt drueber auf? Oh, und Unicode-Identifier stinken, da fangen die Leute sofort an, Zeichen einzubauen, die der Grossteil der Welt (u.A. ich) nicht auf der Tastatur hat, was die Programme deutlich schwerer editierbar macht...
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo lumax!
lumax hat geschrieben:Nebenbei sind die ganzen Aenderungen (auch print) schon ewig bekannt
Ich habe mich schon damals darüber aufgeregt...
--> http://www.python-forum.de/post-20044.html#20044
print hat jeder schon irgendeinmal gehört und jeder versucht sich zuerst mit print "Hallo". Warum soll man solche Erfolgserlebnisse erschweren? Es gibt Befehle, die so einfach wie möglich gehalten werden müssen. Ich finde sogar, print soll es egal sein, ob es mit oder ohne Klammern aufgerufen wird.
(http://www.python-forum.de/post-20065.html#20065)

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BlackJack

@lumax: Das halte ich für Panikmache. Jemand der Wert darauf legt, das sein Quelltext "international bearbeitbar" bleibt, wird bei der ASCII Untermenge bleiben.
Benutzeravatar
mq
User
Beiträge: 124
Registriert: Samstag 1. Januar 2005, 19:14

BlackJack hat geschrieben:@lumax: Das halte ich für Panikmache. Jemand der Wert darauf legt, das sein Quelltext "international bearbeitbar" bleibt, wird bei der ASCII Untermenge bleiben.
Klar, das ist etwas uebertrieben, die meisten werden schon weiterhin ASCII-Identifier benutzen. Aber ich bin sicher, dass ich frueher oder spaeter ueber solchen Code stolpern werde.
Benutzeravatar
penguin-p
User
Beiträge: 22
Registriert: Sonntag 19. August 2007, 13:47

gerold hat geschrieben:print hat jeder schon irgendeinmal gehört und jeder versucht sich zuerst mit print "Hallo". Warum soll man solche Erfolgserlebnisse erschweren? Es gibt Befehle, die so einfach wie möglich gehalten werden müssen. Ich finde sogar, print soll es egal sein, ob es mit oder ohne Klammern aufgerufen wird.
Das stimmt, trotzdem ist es schlicht inkonsequent, ein eigenes Schlüsselwort für print zu führen, wenn es doch genauso einfach und ohne wirklichen Mehraufwand seitens des Programmierers als Built-In Function implementiert werden kann.
Damit wird die Zahl der Schlüsselworte minimiert und die Sprache insgesamt logischer und konsistenter.
Außerdem ist damit die Frage geklärt, wieso für Bildschirmausgaben ein solcher Sonderweg existiert, nicht aber für Tastatureingaben, was ja eigentlich nur der umgekehrte Weg ist. Aber input und raw_input sind schon seit je her Built-Ins.
Benutzeravatar
mq
User
Beiträge: 124
Registriert: Samstag 1. Januar 2005, 19:14

penguin-p hat geschrieben:Aber input und raw_input sind schon seit je her Built-Ins.
raw_input? Welches raw_input? :D
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

lumax hat geschrieben:
penguin-p hat geschrieben:Aber input und raw_input sind schon seit je her Built-Ins.
raw_input? Welches raw_input? :D
Er meint wohl input. Und mit input meint er eval(input()). Jeder macht mal einen Fehler :)
Benutzeravatar
penguin-p
User
Beiträge: 22
Registriert: Sonntag 19. August 2007, 13:47

Hach mein geschätztes raw_input *schnief* ;)

Was ich aber noch viel tragischer finde ist, dass True und False in Python3000 Schlüsselwörter werden. Das war immer so ein lustiger Zeitvertreib:

Code: Alles auswählen

>>> a = True
>>> True = False
>>> False = a
>>> True
False
>>> False
True
Benutzeravatar
mq
User
Beiträge: 124
Registriert: Samstag 1. Januar 2005, 19:14

penguin-p hat geschrieben:Hach mein geschätztes raw_input *schnief* ;)

Was ich aber noch viel tragischer finde ist, dass True und False in Python3000 Schlüsselwörter werden. Das war immer so ein lustiger Zeitvertreib:

Code: Alles auswählen

>>> a = True
>>> True = False
>>> False = a
>>> True
False
>>> False
True
Das ist doch erst dann richtig lustig, wenn du die builtins monkeypatchst und damit True und False auch in allen anderen Modulen verkehrt rum funktionieren :D
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Ich fand es zuerst ganz schlecht das `print` zu einer Funktion wurde.

Bin aber nun froh das es so ist, ein Anwendungsfall:

Code: Alles auswählen

sr4l@LARS:~$ python3.0
Python 3.0a1 (py3k, Sep  1 2007, 03:28:18) 
[GCC 3.4.6 (Ubuntu 3.4.6-5ubuntu1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Test")
Test
>>> def print(value):
...     handle = open("output.txt","a")
...     handle.write(value)
...     handle.close()
... 
>>> print("Test")
>>> 
Ich kann also das `standard` print zum Beispiel einfach überschreiben und dann alles was sonst geprintet wurden wäre in eine Datei um leiten oder ähnliches.

Die viele gute Sachen bei Python bleiben ja immer noch.

:-D
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Du kannst print auch jetzt umleiten in dem du stdout umleitest.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Sr4l hat geschrieben:Ich kann also das `standard` print zum Beispiel einfach überschreiben und dann alles was sonst geprintet wurden wäre in eine Datei um leiten oder ähnliches.

Die viele gute Sachen bei Python bleiben ja immer noch.

:-D
Wie umständlich :)!

Code: Alles auswählen

fl = open("foo.txt", "w")
print("foobaaaar!!!", file=fl)
fl.close
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

veers hat geschrieben:Du kannst print auch jetzt umleiten in dem du stdout umleitest.
Genau. Entweder sys.stdout umeiten oder (Achtung, dämliche Syntax) ``print >>sys.stdout "Irgendwas`` wobei man ``sys.stdout`` gegen ein file-like-Objekt tauscht.

Ich werde mit dem Python 3.0 testen erst anfangen wenn jemand es für Debian paketiert, damit ich es Backporten kann. So spannend ist es nun auch nicht, denn im SVN war es schon lange verfügbar, also hätte man es sich schon vorher laden können.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten