pickle gibt convert error von string to float

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

Beitragvon Leonidas » Mittwoch 31. Januar 2007, 21:26

birkenfeld hat geschrieben:Nein, das nicht. Aber warum sollte das Keyword nicht so heißen?

Die gängige "Lehrmeinung" ist ja, dass man keine Namen nehmen sollte, die Builtins überdecken. In dieser Form, würde aber in der Funktion Print der Name file überdeckt. Ok - da diese Funktion höchstwarscheinlich in C implementiert ist, ist es an dieser Stelle von der Funktionalität egal, aber sollte man nicht besser ein gutes Beispiel geben?

Nicht dass dann jemand sowas in seinem Code auch macht und meint: "die Builtins machen es doch auch so!" Andererseits würde der Name ``target`` warscheinlich besser passen, ist auch nicht wesentlich länger zu tippen und ebenso leicht zu merken. Noch dazu ist er etwas neutraler, d.h. er suggeriert nicht, dass da zwingend ein file-Objekt (im Sinne von Instanz von file) hingeschickt werden muss.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Beitragvon sape » Mittwoch 31. Januar 2007, 21:26

@Birkenfeld:
Naja, man soll doch keine Namen vom builtins verwenden. Oder ist das bei Keywords zulässig? Ich glaube mich zu erinnern das im PEP8 drinstande das man dann lieber ein _ am ende setzen soll im Zweifelsfall wenn kein besserer Name einfällt (Ich glaube das galt auch für Keywords).
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 » Mittwoch 31. Januar 2007, 21:29

sape hat geschrieben:@Birkenfeld:
Naja, man soll doch keine Namen vom builtins verwenden. Oder ist das bei Keywords zulässig? Ich glaube mich zu erinnern das im PEP8 drinstande das man dann lieber ein _ am ende setzen soll im Zweifelsfall wenn kein besserer Name einfällt (Ich glaube das galt auch für Keywords).

Erstens gilt das für Funktionen, die du selbst schreibst, weil *in diesen Funktionen* der Name dann anders als sonst gebunden ist. In diesem Fall egal.

Zweitens, bei Keywords *musst* du den Namen verändern, weil die nicht als kwargs zulässig sind.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 31. Januar 2007, 21:36

birkenfeld hat geschrieben:Erstens gilt das für Funktionen, die du selbst schreibst, weil *in diesen Funktionen* der Name dann anders als sonst gebunden ist. In diesem Fall egal.

Ja, das habe ich ach schon geschrieben. Aber wie sieht das mit der Konsistenz aus. Warum wird nun mit zweierlei Maß gemessen, dass die Builtins etwas dürfen was der normale Programmierer in seinem Code unterlassen sollte.

Und wie soll man den Leuten so etwas klar machen, wenn die mir sagen, dass die die Builtins das gleiche machen. Klar, ich kann sagen, dass die in C implementiert sind, aber das gilt ja nur für CPython, für IronPython oder PyPy muss das gar nicht mehr gelten. Sonst verhalten sich die in C geschriebenen Funktionen ja eigentlich genauso wie in Python geschriebene Funktionen, d.h. es gibt im "Look and Feel" keinen Unterschied.
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 » Mittwoch 31. Januar 2007, 21:40

Leonidas hat geschrieben:
birkenfeld hat geschrieben:Erstens gilt das für Funktionen, die du selbst schreibst, weil *in diesen Funktionen* der Name dann anders als sonst gebunden ist. In diesem Fall egal.

Ja, das habe ich ach schon geschrieben. Aber wie sieht das mit der Konsistenz aus. Warum wird nun mit zweierlei Maß gemessen, dass die Builtins etwas dürfen was der normale Programmierer in seinem Code unterlassen sollte.

Und wie soll man den Leuten so etwas klar machen, wenn die mir sagen, dass die die Builtins das gleiche machen. Klar, ich kann sagen, dass die in C implementiert sind, aber das gilt ja nur für CPython, für IronPython oder PyPy muss das gar nicht mehr gelten. Sonst verhalten sich die in C geschriebenen Funktionen ja eigentlich genauso wie in Python geschriebene Funktionen, d.h. es gibt im "Look and Feel" keinen Unterschied.


"A foolish consistency..."

Die Richtlinie ist nicht dazu da, stur einfach so eingehalten zu werden, sondern dazu um dem Programmierer das Leben leicht zu machen.

Wenn du die Funktion nicht schreibst, braucht es dich nicht zu kümmern, ob der Programmierer derselben sich (evtl.) das Leben schwer gemacht hat -- sofern du dir sicher bist dass er alles richtig gemacht hat.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 31. Januar 2007, 21:50

birkenfeld hat geschrieben:"A foolish consistency..."

Das ist mir schon klar, aber ich finde dass target eine brauchbare Alternative ist. Wie dem auch sei, egal..

Eigentlich sollte dieser Thread auch schon laengst abgesplittet worden sein :)
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 » Mittwoch 31. Januar 2007, 21:53

Ich glaube es war auch "stream" im Gespräch.

Nur ist auf python-3000 keiner auf die Idee gekommen, an "file" könnte aus diesem Grund etwas falsch sein...
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Beitragvon sape » Mittwoch 31. Januar 2007, 22:03

Auch wenns nicht jeden schmeckt, aber ich finde es blöd das die bultins sich da hinwegsetzen dürfen. Ich sehe das auch so wie Leonidas:
Und wie soll man den Leuten so etwas klar machen, wenn die mir sagen, dass die die Builtins das gleiche machen. Klar, ich kann sagen, dass die in C implementiert sind, [...]

Wobei die Begründung das es in C implementiert ist und die es deswegen dürfen keine wirkliche für mich ist und nur fadenscheinig Rechtfertigung.
...

Und vor ca. 1 Stunden war gerade das Thema in einem Thread mit dem überschrieben der builtins. Und nun wie soll man dann noch wirklich argumentieren könne? Die dürfen das und DU nicht ist ein wenig...naja ich sags mal höflich, dualistisch? Finde ich ehrlich gesagt nicht OK und auch inkonsistent.

Ist meine ehrliche Meinung.

Birkenfeld, könntest du das Thema nicht mal ansprechen? So wie ich mitgekriegt habe bist du ja auch ein wenig mit beteiligt bei Python. Könnte schwören das ich PEPs von dir gelesen habe ;)

lg
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 » Mittwoch 31. Januar 2007, 22:11

sape hat geschrieben:Auch wenns nicht jeden schmeckt, aber ich finde es blöd das die bultins sich da hinwegsetzen dürfen. Ich sehe das auch so wie Leonidas:
Und wie soll man den Leuten so etwas klar machen, wenn die mir sagen, dass die die Builtins das gleiche machen. Klar, ich kann sagen, dass die in C implementiert sind, [...]

Wobei die Begründung das es in C implementiert ist und die es deswegen dürfen keine wirkliche für mich ist und nur fadenscheinig Rechtfertigung.
...

"Dürfen" ist nicht der Punkt. Hier geht es nicht um Gesetze, die gebrochen werden können, sondern um Empfehlungen, mit denen sich der Programmierer das Leben leichter macht. In diesem Fall ist das weder für denjenigen, der print() implementiert, noch den, der es benutzt, relevant.

Und vor ca. 1 Stunden war gerade das Thema in einem Thread mit dem überschrieben der builtins. Und nun wie soll man dann noch wirklich argumentieren könne?

Das hab ich oben schon vorgeführt.

Die dürfen das und DU nicht ist ein wenig...naja ich sags mal höflich, dualistisch? Finde ich ehrlich gesagt nicht OK und auch inkonsistent.

Ich weiß nicht genau, was ich davon halten soll. Du kommst mir ehrlich gesagt etwas zwanghaft vor.

Nochmal: Das sind keine Gesetze, nicht mal Syntax oder zwingend vorgeschriebene Regeln. Du hältst dich krampfhaft an etwas fest, was es in der Form nicht gibt.

Birkenfeld, könntest du das Thema nicht mal ansprechen? So wie ich mitgekriegt habe bist du ja auch ein wenig mit beteiligt bei Python. Könnte schwören das ich PEPs von dir gelesen habe ;)

Brav :) Aber nein, ich werde das Thema nicht ansprechen, zum einen weil es mich überhaupt nicht stört. Zum anderen treiben sich dort recht intelligente Menschen herum, und ich kann mir nicht vorstellen dass es keinem von denen in den Sinn gekommen ist dass "file" der Name eines Builtins ist.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Beitragvon sape » Mittwoch 31. Januar 2007, 22:20

birkenfeld hat geschrieben:Das hab ich oben schon vorgeführt.


birkenfeld hat geschrieben:Nochmal: Das sind keine Gesetze, nicht mal Syntax oder zwingend vorgeschriebene Regeln. Du hältst dich krampfhaft an etwas fest, was es in der Form nicht gibt.
Ok, dann werde ich mir das dann mal verinnerlichen.


Danke für die Infos.

lg

EDIT: Ups habs genau andersherum verstanden. Sry.
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Donnerstag 1. Februar 2007, 08:46

birkenfeld hat geschrieben:Wieso sollte `print >>file, x` schlecht sein?

Wird dabei eigentlich ein NewLine in die Datei geschrieben?

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

Beitragvon BlackJack » Donnerstag 1. Februar 2007, 09:05

Ja, das verhält sich genau wie ``print`` ohne die Umleitung.
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

Beitragvon name » Donnerstag 1. Februar 2007, 13:33

birkenfeld hat geschrieben:
sape hat geschrieben:Dan hätte ich aber noch einer Frage: Warum wird das dann abgeschaft? (Die alte Begründung kann ja dann nicht zutreffen.). Wird stattdessen ein anderes Zeichen gewählt das die gleiche Aufgabe übernimmt?

Da print eine Funktion wird, wird es ein Keyword-Argument geben.

Bzw. das Futur ist unzutreffend ;)

Code: Alles auswählen

Python 3.0x (p3yk:53421, Jan 31 2007, 08:41:24)
[GCC 3.4.6 (Gentoo 3.4.6-r2, ssp-3.4.6-1.0, pie-8.7.9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> Print("a", "b", file=sys.stderr)
a b

Wobei momentan "print" als Statement noch vorhanden ist und die Funktion deswegen großgeschrieben ist.

Woher hast du das python 3.0? auch wenns nur alpha is *auchwoll*
EDIT: Habs schon, danke
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 1. Februar 2007, 18:19

name hat geschrieben:Woher hast du das python 3.0? auch wenns nur alpha is *auchwoll*

Übrigens, Python 3.0 ist noch nicht einmal alpha. Alpha-Versionen von Python werden nämlich auch richtig released, mit Ankündigung auf der Hauptseite usw.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

Beitragvon name » Donnerstag 1. Februar 2007, 18:24

Leonidas hat geschrieben:
name hat geschrieben:Woher hast du das python 3.0? auch wenns nur alpha is *auchwoll*

Übrigens, Python 3.0 ist noch nicht einmal alpha. Alpha-Versionen von Python werden nämlich auch richtig released, mit Ankündigung auf der Hauptseite usw.
Im SVN bekomm ich immer 2.6
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder