Pi bei Ausführung von Python Skript langsam und "friert ein"

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
BlackJack

Wenn ich mir Zeile 3 von dem Traceback anschaue dann möchte ich den Quelltext glaube ich gar nicht wirklich sehen. :twisted:
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

BlackJack hat geschrieben:Wenn ich mir Zeile 3 von dem Traceback anschaue dann möchte ich den Quelltext glaube ich gar nicht wirklich sehen. :twisted:
Auweia.

Hebe dich hinfort, Satan!

Zum Lesen: "Eval really is dangerous"
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Eval fetzt. Die ganzen Leute mit den zwingend kompilierenden Sprachen sind ja nur neidisch, dass sie nicht sowas schönes eingebaut haben. Für C gibts immerhin den TCC, der für quick&dirty Laufzeitkompilierung einfach auszuliefern ist. :lol:
Serpens66
User
Beiträge: 259
Registriert: Montag 15. Dezember 2014, 00:31

@Sirius3:
wieso? Ihr habt doch den Code von diesem Krakenex Modul. Und blackJack meinte ja schon, dass wenn ein Fehler bei der Verbindung auftritt, dass dieser dort nicht behandelt werden würde. Also haben wir das vermeintliche PRoblem ja schon gefunden. Und ich hab schon gepostet, was ich mir für Gedanken dazu gemacht habe, aber nicht weiß, ob ich nun bei http.client.HTTPSConnection(uri, timeout = timeout) oder erst beim request ansetzen muss. Und ich weiß nicht, wie sich ein Verbindungsfehler äußert (also ein Fehler, der bisher noch nicht erfasst ist... kein Internet und normaler Timeout wird ja erfasst, so wie auch alle anderen Fehler die ein Script zum Abbruch führen würden, da ich dieses private_query Methode in einem try/except block aufrufe und die fehler samt traceback ausgeben lasse), also wie ich einbauen könnte, dass mein Bot diesen erkennt.

zu "eval":
hab den Artikel mal zur hälfte gelesen (die zweite hälfte geht zu tief ins detail und was gezeigt werden soll , wird ja schon am anfang geschrieben).
So lange man aber selbst bestimmt, was in den Klammern von eval steht, besteht da doch überhaupt keine Gefahr?
Was sollte ich denn Alternativ zu eval() nehmen, wenn man eben wie in Zeile drei eine Methode basierend auf einen wählbaren importiertem Modul aufrufen will?
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

@Serpens66: Wenn man in der Doku zur Standardbibliothek auf den Punkt 2 (von 37) klickt, dann sieht man die Built-in Functions. Diese sollte man alle mal gesehen haben und ungefähr wissen, wofür sie gut sind. Insbesondere möchtest du dich dort über getattr() informieren.
In specifications, Murphy's Law supersedes Ohm's.
BlackJack

@Serpens66: `eval()` ist nicht nur gefährlich sondern in 99,9% der Fälle braucht man das nicht, dann ist das einfach nur ein hässlicher Hack wegen Faulheit oder weil die Sprache nicht beherrscht wird.

In Deinem beschriebenen Fall würde man einfach das Modulobjekt übergeben statt einer Zeichenkette die einen Namen enthält unter dem das Modul in dem Namensraum ansprechbar ist.

@pillmuncher: `getattr()` ist doch eher wenn das Attribut variable ist, hier ist es ja das Objekt was als ”Name” in einer Zeichenkette daher kommt.
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

@BlackJack: Achso. Jetzt hab ich es auch kapiert.
In specifications, Murphy's Law supersedes Ohm's.
Antworten