Benutzer-Werkzeuge

Webseiten-Werkzeuge


python

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
python [2014/11/16 19:43]
root [Arbeiten mit Dateien]
python [2018/04/25 13:50] (aktuell)
root [Sequentielle Operatoren]
Zeile 46: Zeile 46:
  
   * Mutable -> Veränderliche Datentypen -> Datentypen die nach der Deklaration noch geändert werden können   * Mutable -> Veränderliche Datentypen -> Datentypen die nach der Deklaration noch geändert werden können
-  * Immutable -> Datentypen die nach der Deklaration nicht mehr verändert werden können -> entspricht const in C +  * Immutable -> Datentypen die nach der Deklaration nicht mehr verändert werden können 
-  * Alle Datentypen sind Objekte+      * wobei hier zu beachten ist, dass veränderbar sich nicht auf die Variable bezieht, sondern auf den Speicherbereich auf welchen sie verweis 
 +      * das bedeute wird ein immutable geändert verändert sich der Speicherbereich auf den er verweist und enthält den neuen Wert 
 +      * Variable in Python die auf ein immuteable verweisen sind "Copy on Write" -> in dem Moment in dem auf sie geschrieben wird, wird ein neuer Speicherbereich referenziert mit dem neuen Wert auf den sie ab dann verweisen 
 + 
 + 
 +**Praktisch:** 
 + 
 +  * int sind immutable 
 +  * wird in einer Varibalen vom Typ int 4 gespeichert und per "+= 1" die Variable um 1 erhöht, wir ein neuer Speicherbereich mit dem Wert 5 erstellt 
 + 
 +<code> 
 +#a ist vom Typ int und wird der Wert 4 zugewiesen 
 +a=int(4) 
 +#b ist vom Typ int, aber leer 
 +b=int() 
 +#b wird a zugewiesen - a und b haben den gleichen Wert 
 +b=a 
 +#Abfrage des Speicherplatzes auf den b verweist  
 +id(b) 
 +152711856 
 +#Abfrage des Speicherplatzes auf den a verweist 
 +id(a) 
 +152711856 
 +#Erhöhen von b um 1 
 +b+=1 
 +#Abfrage des Speicherplatzes auf den b verweist  
 +id(b) 
 +152711844 
 +#Abfrage de Speicherplatzes von a 
 +id(a) 
 +152711856 
 +</code> 
 + 
 +  * A und B verweisen nach dem ändern von B auf verschiedene Speicherbereiche  
  
  
Zeile 103: Zeile 137:
   * s -> das serielle Objekt aus dem das größte Objekt/Wert/Element ermittelt werden soll   * s -> das serielle Objekt aus dem das größte Objekt/Wert/Element ermittelt werden soll
 </WRAP> | </WRAP> |
-|s[x]|Ermöglicht den Zugriff auf das xte Element innerhalb eines seriellen Objektes \\ \\ \\ Syntax: s[x] \\ \\ <WRAP>+|sum(s)|Summiert die Werte im seriellen Objekt (also deren Werte, nicht deren Anzahl| 
 +|s[x]|Auch bekannt als Sub-Operator. \\ Ermöglicht den Zugriff auf das xte Element innerhalb eines seriellen Objektes \\ \\ \\ Syntax: s[x] \\ \\ <WRAP>
   * s -> das serielle Objekt    * s -> das serielle Objekt 
-  * x -> das Element auf welches man zugreifen möchte/dessen Inhalt man haben will - **Achtung:** Die Zählung beginnt bei 0+  * x -> das Element auf welches man zugreifen möchte/dessen Inhalt man haben will - **Achtung:** Die Zählung beginnt bei 0 \\ \\ 
 +Man kann innerhalb des Suboperators auch Operationen ausführen: 
 +<code> 
 +s[x-1] 
 +</code> 
 +In dem Beispiel würde der Wert aus x - 1 berechnet und das Ergebnis als Index verwendet.
 </WRAP> | </WRAP> |
 |s[x:y]|Zugriff auf auf Bereich von Elementen innerhalb eines seriellen Objektes \\ \\ \\ Syntax: s[x:y] \\ \\ <WRAP> |s[x:y]|Zugriff auf auf Bereich von Elementen innerhalb eines seriellen Objektes \\ \\ \\ Syntax: s[x:y] \\ \\ <WRAP>
Zeile 158: Zeile 198:
   * in Python Standard-Mapping: Dictionary   * in Python Standard-Mapping: Dictionary
   * Speichert Key-Value-Pairs aka Wert-Paare   * Speichert Key-Value-Pairs aka Wert-Paare
-===== Sprachkonstrukte  ===== +====== Sprachkonstrukte  ====== 
-==== Methoden  ====+===== Funktionen ===== 
 + 
 +  * Entsprechen weitgehenst Methoden (siehe unten) 
 +  * sind eigenständige Objekte 
 + 
 +===== Methoden  =====
  
 Syntax:  Syntax: 
Zeile 165: Zeile 210:
 def Funktionsname (Parameter1,Parameter2): def Funktionsname (Parameter1,Parameter2):
     Funktionscode     Funktionscode
 +    return //Variable//
 </code> </code>
  
Zeile 175: Zeile 221:
   * Funktionsname: Name der Funktion   * Funktionsname: Name der Funktion
   * Parameterx: Parameter die an die Funktion übergeben werden; Als bennannter Parameter in beliebiger Reihenfolge -> Parametername=Wert, Parameter2=Wert2, oder als unbenannte Parameter in Reihenfolge -> Parameter1, Parameter2 usw.    * Parameterx: Parameter die an die Funktion übergeben werden; Als bennannter Parameter in beliebiger Reihenfolge -> Parametername=Wert, Parameter2=Wert2, oder als unbenannte Parameter in Reihenfolge -> Parameter1, Parameter2 usw. 
 +      * **Achtung**: Alle Variablen werden als Referenz übergeben - bei mutable (veränderlichen Datentypen) wird bei Veränderungen innerhalb der Methode auch die Variable die übergeben wurde mit geändert -> soll das verhindert werden sollte innerhalb der Methode eine Kopie gemacht werden
 +  * return: Optional, Gibt beim herausspringen den Wert/Variable hinter return zurück.
 +
 +
 +
 +
 +
  
  
-=== Optionale Parameter  ===+==== Optionale Parameter  ====
  
   * In der Literatur/Dokumentation als Parameter1,Parameter1[,Parameter3, Parameter4] dargestellt -> Parameter1 und 2 sind dabei anzugeben, 3 und 4 sind optional   * In der Literatur/Dokumentation als Parameter1,Parameter1[,Parameter3, Parameter4] dargestellt -> Parameter1 und 2 sind dabei anzugeben, 3 und 4 sind optional
Zeile 191: Zeile 244:
  
  
-=== Benannte Parameter  ===+==== Benannte Parameter  ====
  
   * Ermöglicht das angeben von Parametern in beliebiger Reihenfolge   * Ermöglicht das angeben von Parametern in beliebiger Reihenfolge
Zeile 206: Zeile 259:
   * über den Parameternamen können die Paraemter direkt angesprochen werden   * über den Parameternamen können die Paraemter direkt angesprochen werden
  
-==== Klassen  ====+ 
 + 
 +==== Beliebige Anzahl Parameter  ==== 
 + 
 +  * Bei Defeinition der Methode wird der letzte Parameter *//Parametername// angeben 
 +      * dieser Parameter kann dann beliebig viele Argumente aufnehmen 
 +  * das geht nur beim letzten Parameter in der Parameterliste 
 +  * die einzelnen Werte in dem Parameter werden in einem Tuppel gespeichert 
 +      * der Abruf der einzlnen Werte kann zum Beispiel durch eine for-each-Schleife (for x in y) erfolgen 
 + 
 +Syntax: 
 + 
 +<code> 
 +def //methodenname// (//Parameter1//,//Parameter2//,*//Parameter3//): 
 +     Code 
 + 
 +//methodenname//(//Wert1//, //Wert2//, //Wert3//, //Wert4//, //Wert5//
 +</code> 
 + 
 +  * //Parameter 3// hat ein vorangestellten * und nimmt alle Werte auf die überzählig sind (mehr sind als es Parameter gibt) 
 +      * in diesem Beispiel sind das die Werte 1-5 
 + 
 +Beispiel: 
 + 
 +===== Klassen  =====
  
   * Klassen sollten (wenn sie nicht von einer anderen Klasse erben) von Object erben    * Klassen sollten (wenn sie nicht von einer anderen Klasse erben) von Object erben 
Zeile 212: Zeile 289:
  
  
-=== Klassenvariablen  ===+==== Klassenvariablen  ====
  
   * Variablen die die global über alle Objekte der Klasse existieren   * Variablen die die global über alle Objekte der Klasse existieren
Zeile 228: Zeile 305:
  
  
-=== Objektvariablen  ===+==== Objektvariablen  ====
  
   * Variablen die innerhalb des Objektes global verfügbar sind   * Variablen die innerhalb des Objektes global verfügbar sind
Zeile 245: Zeile 322:
  
  
-=== Überladen  ===+==== Überladen  ====
  
   * Überladen von Methoden ist in Python nicht vorgesehen   * Überladen von Methoden ist in Python nicht vorgesehen
Zeile 252: Zeile 329:
  
  
-=== Überschreiben  ===+==== Überschreiben  ====
  
   * Überschreiben von Methoden geht   * Überschreiben von Methoden geht
Zeile 258: Zeile 335:
  
  
-=== Private Variablen/Methoden  ===+==== Private Variablen/Methoden  ====
  
   * Gibt es in Python nicht   * Gibt es in Python nicht
Zeile 266: Zeile 343:
 Syntax: def _Methodenname(self) Syntax: def _Methodenname(self)
  
-=== Statische Variablen/Methoden  ===+==== Statische Variablen/Methoden  ====
  
 **This section is not tested and based on assumptions:** **This section is not tested and based on assumptions:**
  
-  * Werden per __Methodenname deklariert+  * Werden per %%_%%_Methodenname deklariert
   * sind vorhanden ohne das eine Instanz der Klasse geschaffen wurde   * sind vorhanden ohne das eine Instanz der Klasse geschaffen wurde
  
-=== Spezialmethoden  ===+==== Spezialmethoden  ====
  
   * Es gibt einige Methoden die nur durch den Compiler aufgerufen werden sollen   * Es gibt einige Methoden die nur durch den Compiler aufgerufen werden sollen
-  * Diese werden mit __Methode__ deklariert+  * Diese werden mit %%_%%_Methode%%_%%_ deklariert
  
-Syntax:  def __init__()+Syntax:  def %%_%%_init%%_%%_()
 ===== Funktionen ===== ===== Funktionen =====
  
Zeile 315: Zeile 392:
   * //Modus// -> Für was die Datei geöffnet erden soll. \\ r -> Lesen, w -> Schreiben, a -> Daten an das Ende anfügen, r+ -> Lesen und Schreiben, w+ -> Schreiben und lesen - vorher die Datei leeren, a+ Anfügen und Datei zum lesen öffnen. \\ Die Optionen gibt es auch mit vorangestelltem b - in dem Fall werden die Dateien binär geöffnet    * //Modus// -> Für was die Datei geöffnet erden soll. \\ r -> Lesen, w -> Schreiben, a -> Daten an das Ende anfügen, r+ -> Lesen und Schreiben, w+ -> Schreiben und lesen - vorher die Datei leeren, a+ Anfügen und Datei zum lesen öffnen. \\ Die Optionen gibt es auch mit vorangestelltem b - in dem Fall werden die Dateien binär geöffnet 
 </WRAP> | </WRAP> |
 +|type (Objekt)|Gibt den Typ (die Klasse) eines Objektes zurück|
 +|dir(Objekt)|Gibt alle Methoden eines Objektes zurück|
  
 ====== HowTos ====== ====== HowTos ======
Zeile 385: Zeile 464:
 |tell|Gibt die derzeitige Position in der Datei an (Integer)| |tell|Gibt die derzeitige Position in der Datei an (Integer)|
 |seek|Spingt an eine bestimmte Psoition der Datei| |seek|Spingt an eine bestimmte Psoition der Datei|
 +
 +
 +===== Benutzen von anderen Zeichensätzen =====
 +
 +Standardmäßig akzeptiert Python nur Zeichen des ASCII-Zeichensatzes im Code (alle anderen Zeichen müssen per Escape-Sequenz angegeben werden). \\ \\
 +<code>
 +#coding=utf-8
 +</code>
 +
 +Mit dem Kommentar #coding=Charset in der ersten oder zweiten Zeile einer Datei setzt den Zeichensatz auf den angegebenenen.
 +
 +Hinweis: Der verwendete Editor muss ebenfalls in UTF8 kodieren können (siehe [[vim]]
 ====== Troubleshooting ====== ====== Troubleshooting ======
  
Zeile 408: Zeile 499:
 ^Name ^Typ ^Beschreibung ^Quelle ^ ^Name ^Typ ^Beschreibung ^Quelle ^
 |Python Das umfassende Handbuch|Buch/Kurs|Openbook von Galileo |http://openbook.galileocomputing.de/python/| |Python Das umfassende Handbuch|Buch/Kurs|Openbook von Galileo |http://openbook.galileocomputing.de/python/|
 +
 +
 +====== Notizen ======
 +
 +===== CGI =====
 +
 +==== CGI FieldStorage ====
 +
 +  * Dropdowns haben immer einen Wert -> ist ein Dropdown im Formular ist die Länge des CGI FieldStorages immer mindestens 1
 +
 +
 +
 +
 +
 +
python.1416163411.txt.gz · Zuletzt geändert: 2014/12/04 10:24 (Externe Bearbeitung)