Binärdateien

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.
Antworten
Dexter1997
User
Beiträge: 92
Registriert: Sonntag 2. Dezember 2012, 21:13

Hallo,

Ich bin ein Neuling in Python und habe das ganze wie folgt verstanden:
Ich erstelle ein Python-Skript mit der Endung .py und führe diese mit python irgendwas.py aus...
Soweit so gut, aber was tue ich wenn ich meine Software anderen Leuten zur Verfügung stellen möchte, ohne den Quellcode preiszugeben? Gibt es sowas wie Python-Bytecode, ähnlich wie in Java?

Kann man die Plattformunabhängigkeit eigentlich auch mit der von Java vergleichen?
Wäre es auch möglich ein kleines grafisches Spiel ähnlich solchen mit Python zu programmieren?
https://de.wikipedia.org/wiki/Isometris ... terspielen

Ich danke für alle Antworten!
Benutzeravatar
BigZ
User
Beiträge: 30
Registriert: Mittwoch 1. Juli 2015, 21:18
Wohnort: Hamburg
Kontaktdaten:

Es gibt die .pyc Dateien.
Das ist der Bytecode der vom Interpreter erstellt wird.
Die kannst du mit

Code: Alles auswählen

python irgendwas.pyc
auch ausführen.
Du könntest deine Python Projekte aber z.B. auch in eine .exe kompilieren mit py2exe z.B.
Unter Windows gibt es, meine ich, ansonsten auch noch die .pyw Dateien, die sich ausführen lassen.
Ich weiß allerdings nicht in wie weit die mit einem normalen Texteditor editierbar sind.
Kenne ich mich persönlich nicht so gut mit Python unter Windows aus, da ich selber nur noch mit Linux unterwegs bin.
Allerdings kannst du so ziemlich alles wieder dekompilieren mit den entsprechenden Programmen.
Hier gibt es noch ein paar zusätzliche Infos
"Ist noch λ?"
"Ja, aber das ϕ ist noch ϱ"
BlackJack

@Dexter1997: Ob man die Plattformunabhängigkeit von Python mit der von Java vergleichen kann, hängt so ein bisschen davon ab wie Du die Vergleichskriterien definierst. Java läuft überall wo es eine JVM-Implementierung gibt, Python läuft überall wo es eine Python-Implementierung gibt. Beides gibt es für die verschiedensten Plattformen.

Anmerkung zu den Bytecode-Dateien: Die sind im Gegensatz zu Java-Bytecode ein Implementierungsdetail. Die Python-Bytecode-Dateien von CPython gehören nicht zur Python-Sprachspezifikation. Eine Python-Implementierung muss also kein Bytecode erzeugen oder die Bytecode-Dateien von CPython ausführen können. Zudem sind die in der Regel auch bei CPython nicht mit jeder Version kompatibel, sondern garantiert nur mit dem Python mit dem sie erzeugt wurden.

Ich wüsste nicht was gegen isometrische Darstellung bei einem Spiel spricht. Letztendlich ist das ja nur die Grafik die entsprechend gestaltet sein muss, und man muss ein bisschen mehr auf die Reihenfolge achten in der man die Kacheln des Spielfelds zeichnen lässt. Von hinten nach vorne, damit hintere Teile von vorderen verdeckt werden können. Im gegensatz zu einer Draufsicht von oben, wo es in der Regel egal ist in welcher Reihenfolge die Kacheln gezeichnet werden.

@BigZ: *.pyw-Dateien sind ganz normale Python-Quelltextdateien. Der Unterschied zu *.py-Dateien ist die Verknüpfung mit dem ausführenden Programm. Es gibt unter Windows zwei Varianten von CPython weil Windows zwischen Konsolen- und Fensterprogrammen hart unterscheidet.
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

Dexter1997 hat geschrieben:Wäre es auch möglich ein kleines grafisches Spiel ähnlich solchen mit Python zu programmieren?
Ein kleines wohl schon. Habe keine Ahnung von Spieleentwicklung und kennen längst noch nicht alle Möglichkeiten von Python. Doch so allgemein würde ich davon ausgehen, wenn es um schnelles Rendering geht, ist eine maschinennahe Programmiersprache besser geeignet. Je höher eine Sprache entwickelt ist, umso weiter ist sie von der Maschinensprache entfernt und umso mehr ist mit Performanceverlusten zu rechnen, sagt man allgemein, da die Übersetzung länger dauert. Was aber nicht bedeutet, dass z.B. Module in einer höheren Sprache entwickelt werden könnten und da würde ich bislang eher die Stärken von Python sehen. So ist z.B. Blender durch Python-Scripts erweiterbar.
Benutzeravatar
BigZ
User
Beiträge: 30
Registriert: Mittwoch 1. Juli 2015, 21:18
Wohnort: Hamburg
Kontaktdaten:

@BlackJack: Danke für die Aufklärung Bild

Was die isometrische Perspektive angeht, auf die ich gestern vergessen hab einzugehen, so sollte man eigentlich auch größere Spiele in der isometrischen Perspektive realisieren können, wenn man bedenkt das beispielsweise Civilization 4 in großen Teilen in Python programmiert wurde.
Allerdings macht es schon Sinn performance kritische Bereiche in C zu schreiben.
Ansonsten, wenn es sich um kleinere Projekte handelt, so sollte man mit PyGame oder PyGlet schon durchaus ansehnliche Ergebnisse erzielen können
"Ist noch λ?"
"Ja, aber das ϕ ist noch ϱ"
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

BigZ hat geschrieben:Unter Windows gibt es, meine ich, ansonsten auch noch die .pyw Dateien, die sich ausführen lassen.
Ich weiß allerdings nicht in wie weit die mit einem normalen Texteditor editierbar sind.
Ist nur die Endung, mit *.py öffnet die Konsole im Hintergrund, umbenennen in *.pyw und die Konsole öffnet nicht. Einen anderen Unterschied sehe ich da nicht. Mit einem normalen Texteditor lassen sich möglicherweise die Dateien nicht als UTF-8 kodierte Dateien abspeichern, was zu Problemen führen könnte.
BlackJack

Die performancekritischen Teile die man für Isometriedarstellung in C schreiben würde sind ja schon in C geschrieben: Pygame oder Pyglet. Oder eventuell auch Qt, was ja auch Möglichkeiten bietet Grafiken aus Bildern zusammen zu setzen. Isometrie unterscheidet sich fast nicht von einer Draufsicht von oben. Man muss pro Feld eine Grafik darstellen. Bei der Draufsicht von oben sind das halt ganz einfach Quadrate, bei Isometrie sind das Grafiken der Felder in der isometrischen Darstellung mit Transparenz, also zum Beispiel PNGs, damit die Felder die dahinter liegen an den Stellen zu sehen sind an denen in den Feldern davor nichts in die Höhe geht (Gebäude, Vegetation, …).
Dexter1997
User
Beiträge: 92
Registriert: Sonntag 2. Dezember 2012, 21:13

Ich verstehe, vielen Dank für die sehr aufschlußreichen Antworten!
Antworten