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
mq
User
Beiträge: 124
Registriert: Samstag 1. Januar 2005, 19:14

Beitragvon mq » Samstag 1. September 2007, 17:30

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:

Beitragvon Sr4l » Samstag 1. September 2007, 18:25

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:

Beitragvon veers » Samstag 1. September 2007, 18:48

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:

Beitragvon BlackVivi » Samstag 1. September 2007, 19:06

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 1. September 2007, 19:18

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

Beitragvon BlackVivi » Samstag 1. September 2007, 19:20

Der >> Operator wird doch bereits für das shifting benutzt, oder?... Auf jedenfall funktioniert dein Beispiel nich so.

Vielleicht bin ich auch zu unfähig..

(Debian müsste es doch auch wie Arch Linux machen bei Python Versionen... Das bedeutet das Python 3.0 extra gekennzeichnet wird und die stabile 2.5 Installation nicht beeinflussen sollte. So kenn ich das zumindest bei Linux...)
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 1. September 2007, 19:27

BlackVivi hat geschrieben:Der >> Operator wird doch bereits für das shifting benutzt, oder?... Auf jedenfall funktioniert dein Beispiel nich so.

Stimmt, da fehlt ein Komma:

Code: Alles auswählen

In [289]: print >>sys.stdout, 'Irgendwas'
Irgendwas


BlackVivi hat geschrieben:(Debian müsste es doch auch wie Arch Linux machen bei Python Versionen... Das bedeutet das Python 3.0 extra gekennzeichnet wird und die stabile 2.5 Installation nicht beeinflussen sollte. So kenn ich das zumindest bei Linux...)

Ist doch auch so... :roll:
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Beitragvon BlackVivi » Samstag 1. September 2007, 19:30

Dann verwirrst du mich. Wieso willst du es dann backporten oO?... Zu was? Python3.0 is dann ein eigenes Paket was du ohne Einfluss auf dein Python 2.5 System entfernen kannst mit Aptitude.

Der Quellcode funktioniert übrigens immernoch nich...

Code: Alles auswählen

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and
'TextIOWrapper'


Ich bin wohl doch zu unfähig.

Edit: Ach, wie logisch. Unter IPython funktionierts natürlich genauso. Aber auch mit älteren Pythonversionen :)

IPython scheint die Pipingfunktion des Terminals zu übernehmen. Aber der Pythoninterpreter alleine kann mit dem Operator >> nichts anfangen... außer als Binäroperator. Aber das weißt du ja selber.

Mit Python 2.5 geht's... in Python 3 nich.
Zuletzt geändert von BlackVivi am Samstag 1. September 2007, 19:40, insgesamt 3-mal geändert.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Beitragvon Sr4l » Samstag 1. September 2007, 19:34

BlackVivi hat geschrieben:
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


Es ging mir ums Prinzip. Man ändert nichts am Code man lässt sich alles normal printen und füngt sich einfach nur noch ne `def print()` hinzu und hat was neues.
man könnte auch einfach:

Code: Alles auswählen

def print(value):
    pass


Man kann einfach sau viel machen, das wollte ich nur damit mal sagen.
Natürlich kann man auch in Python 2.X sich seine eigene def print machen.
:-D
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Beitragvon veers » Samstag 1. September 2007, 20:06

Ich warte eher auf Pyython2.6 und damit brauchbaren SSL Support. :twisted:
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 1. September 2007, 20:17

BlackVivi hat geschrieben:Dann verwirrst du mich. Wieso willst du es dann backporten oO?... Zu was? Python3.0 is dann ein eigenes Paket was du ohne Einfluss auf dein Python 2.5 System entfernen kannst mit Aptitude.

Zu Etch will ich es Backporten. Aus Sid. Oder Lenny. Wenn man ein Paket aus einer dieser Versionen nimmt und es auf die stable Distribution neukompiliert dann heißt das nun mal backporten.

BlackVivi hat geschrieben:Der Quellcode funktioniert übrigens immernoch nich...

Sicher funktioniert der. Tipp ihn im Interpreter so ein, wie ich ihn geschrieben habe.

BlackVivi hat geschrieben:Edit: Ach, wie logisch. Unter IPython funktionierts natürlich genauso. Aber auch mit älteren Pythonversionen :)

IPython scheint die Pipingfunktion des Terminals zu übernehmen. Aber der Pythoninterpreter alleine kann mit dem Operator >> nichts anfangen... außer als Binäroperator. Aber das weißt du ja selber.

Es funktioniert sowohl unter IPython aus auch im normalen interpreter, denn es ist einfach gültige Python-Syntax. Die Pipingfunktion des Terminals hat damit nichts zu tun, denn gilt nur wenn du Prozesse aufrufst.

BlackVivi hat geschrieben:Mit Python 2.5 geht's... in Python 3 nich.

Klar, denn wenn ``print`` kein Statement ist, braucht man keine so krüpplige Syntax mehr.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Beitragvon birkenfeld » Samstag 1. September 2007, 23:30

Ach Leute, wenn print euer einziges Problem ist...
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Sonntag 2. September 2007, 00:01

Das mit print ist nur konsequent. Aber das mit dem Rüberportieren wird ein Spaß :-)
TUFKAB – the user formerly known as blackbird
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Montag 3. September 2007, 15:39

BlackVivi hat geschrieben:

Code: Alles auswählen

fl = open("foo.txt", "w")
print("foobaaaar!!!", file=fl)
fl.close

Da geht noch was!

Code: Alles auswählen

with open('foo.txt', 'w') as f:
    print("I know kung foo.", file=f)
Benutzeravatar
paedubucher
User
Beiträge: 28
Registriert: Donnerstag 29. Juni 2006, 18:29
Wohnort: Schweiz
Kontaktdaten:

Beitragvon paedubucher » Samstag 8. September 2007, 16:25

Meine grösste Hoffnung für Python 3000 ist ein "anständiges" GUI-Toolkit. Dabei denke ich besonders an eine Portierung eines plattformunabhängigen Toolkits wie wxWidgets oder Qt. wxWidgets - bzw. wxPython - wäre mir lieber, da es auf Linux auf die GTK-Komponenten zurück greift.

Tkinter ist tot, etwas neues muss her!

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder