faecher:informatik:python:eintauchen:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:python:eintauchen:start [22.07.2024 17:09] – [Dokumentation von Funktionen] Frank Schiebelfaecher:informatik:python:eintauchen:start [22.07.2024 17:43] (aktuell) – [Alles ist ein Objekt] Frank Schiebel
Zeile 47: Zeile 47:
  
 ''server=datenbank.qgm.com;database=schueler;uid=dbuser;pwd=supergeheim'' ''server=datenbank.qgm.com;database=schueler;uid=dbuser;pwd=supergeheim''
 +
 +Speichere die Datei nun unter dem Namen ''odbchelper.py'' ab. Der Name ist wichtig, weil wir ihn später nochmal benötigen!
  
 ===== Funktionen in Python ===== ===== Funktionen in Python =====
Zeile 74: Zeile 76:
 </code> </code>
  
-"Triple Quotes" schließen einen mehrzeiligen String ein. Alles zwischen den Anfangs- und Endzeichen gehört zu einem einzigen String, einschließlich Zeilenumbrüchen und anderen Anführungszeichen. Du kannst sie überall verwendenaber am häufigsten wirst du sie sehen, wenn ein Docstring definiert wird.+"Triple Quotes" schließen einen mehrzeiligen String ein. Alles zwischen den Anfangs- und Endzeichen gehört zu einem einzigen String, einschließlich Zeilenumbrüchen und anderen Anführungszeichen. Triple Quotes sind auch eine einfache Möglichkeiteinen String mit sowohl einfachen als auch doppelten Anführungszeichen zu definieren. Aber am häufigsten wirst du sie sehen, wenn ein Docstring definiert wird. 
 {{ :faecher:informatik:python:eintauchen:2024-07-22_19-08.png?nolink|}} {{ :faecher:informatik:python:eintauchen:2024-07-22_19-08.png?nolink|}}
-Triple Quotes sind auch eine einfache Möglichkeit, einen String mit sowohl einfachen als auch doppelten Anführungszeichen zu definieren. Alles zwischen den Triple Quotes ist der Docstring der Funktion, der dokumentiert, was die Funktion macht. Ein Docstring, falls vorhanden, muss das erste Element in einer Funktion sein (also das erste nach dem Doppelpunkt). Technisch gesehen musst du deiner Funktion keinen Docstring geben, aber du //solltest// es immer tun. Ich weiß, dass du das in jedem Programmierkurs gehört hast, den du jemals besucht hast, aber Python bietet einen zusätzlichen Anreiz: Der Docstring ist zur Laufzeit als Attribut der Funktion verfügbar.+ 
 +Alles zwischen den Triple Quotes ist der Docstring der Funktion, der dokumentiert, was die Funktion macht. Ein Docstring, falls vorhanden, muss das erste Element in einer Funktion sein (also das erste nach dem Doppelpunkt). Technisch gesehen musst du deiner Funktion keinen Docstring geben, aber du //solltest// es immer tun. Ich weiß, dass du das in jedem Programmierkurs gehört hast, den du jemals besucht hast, aber Python bietet einen zusätzlichen Anreiz: Der Docstring ist zur Laufzeit als Attribut der Funktion verfügbar.
  
 Viele Python-IDEs verwenden den Docstring, um kontextbezogene Dokumentation bereitzustellen, sodass der Docstring als Tooltip angezeigt wird, wenn du einen Funktionsnamen eintippst. Das kann unglaublich hilfreich sein, aber es ist nur so gut wie die Docstrings, die du schreibst. Viele Python-IDEs verwenden den Docstring, um kontextbezogene Dokumentation bereitzustellen, sodass der Docstring als Tooltip angezeigt wird, wenn du einen Funktionsnamen eintippst. Das kann unglaublich hilfreich sein, aber es ist nur so gut wie die Docstrings, die du schreibst.
  
 +===== Alles ist ein Objekt =====
 +
 +Die Aussage eben bedeutet, dass die Python-Funktion ''Attribute'' hat und dass diese Attribute zur Laufzeit verfügbar sind. Attribute sind Eigenschaften von Objekten - das bedeutet eine Funktion ist, wie alles andere in Python, ein Objekt. 
 +
 +Wie kann man aber nun auf den Docstring von ''build_connection_string'' zugreifen? Der Docstring einer Funktion ist stets im Attribut ''%%__doc__%%'' eines Funktions-Objekts gespeichert, man kann folgendermaßen darauf zugreifen:
 +
 +<code python>
 +>>> import odbchelper
 +>>> params = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}
 +>>> print(odbchelper.buildConnectionString(params))
 +server=mpilgrim;uid=sa;database=master;pwd=secret
 +>>> print(odbchelper.buildConnectionString.__doc__)
 +</code>
 +
 +Du kannst das selbst in Spyder testen, indem du die Einfaben auf der IPython-Konsole an den ''In''-Prompts eingibst. Die Promptzeichen ''%%>>>%%'' lässt du dabei weg: 
 +
 +{{ :faecher:informatik:python:eintauchen:spyder2.gif?nolink |}}
 +===== Was ist ein Objekt? =====
 +
 +//Alles in Python ist ein Objekt//, und fast alles hat Attribute und Methoden. Alle Funktionen haben ein eingebautes Attribut ''%%__doc__%%'', das den im Quellcode der Funktion definierten Docstring zurückgibt. Das ''sys''-Modul ist ein Objekt, das (unter anderem) ein Attribut ''path'' hat. 
 +
 +Das wirft dennoch die Frage auf: Was ist ein Objekt? Verschiedene Programmiersprachen definieren "Objekt" auf unterschiedliche Weise. In einigen bedeutet es, dass alle Objekte Attribute und Methoden haben **müssen**; in anderen bedeutet es, dass alle Objekte Vererbung beherrschen müssen. In Python ist die Definition lockerer; einige Objekte haben weder Attribute noch Methoden, und nicht alle Objekte beherrschen Verrerbung. **Aber alles ist ein Objekt im Sinne davon, dass es einer Variablen zugewiesen oder als Argument an eine Funktion übergeben werden kann** ).
  
 +Das ist wirklich wichtig: **Alles in Python ist ein Objekt**. Strings sind Objekte. Listen sind Objekte. Funktionen sind Objekte. Sogar Module sind Objekte.
  • faecher/informatik/python/eintauchen/start.1721668174.txt.gz
  • Zuletzt geändert: 22.07.2024 17:09
  • von Frank Schiebel