Eigenheiten & Tricks
Hey! Hier ist eine zusammengestellte Übersicht der hochspezifischen Beispiele, benutzerdefinierten Übungen und Syntax-Nuancen.
1. String-Eigenheiten & knifflige Indexierungsgrenzen
- Slicing bis ganz zum Ende: Anstatt die standardmäßige kurze Schreibweise
str1[1:]zu verwenden, haben wir explizit dokumentiert, die Funktionlen()als oberen Grenzwertparameter zu übergeben, um das absolute Ende eines Strings zu garantieren:print(str1[1:len(str)]). - Negativ-zu-Positiv-Slices: Ein spezifisches Logikmuster, das verwendet wird, um ein Suffix ausgehend von einem negativen Index relativ zur Gesamtlänge zu isolieren:
str[-1:len(str)]undprint(marks[-3:-1]). - Das "Forever"-Mutationsmuster: Um im Kopf zu behalten, dass String-Methoden neue Strings zurückgeben, anstatt sie direkt vor Ort (in-place) zu verändern, protokollieren wir genau dieses Zuweisungsmuster, um es fest zu verankern:
str = str.capitalize() # to capitalize forever. - Manuelle Leerzeichen zählen: Achten Sie auf führende oder nachstehende Leerzeichen, wenn Sie String-Metriken auswerten. Beispielsweise ändert ein gezielter String mit einem absichtlichen führenden Leerzeichen die erwartete Anzahl der Elemente:
python str2 = " this is my second lecture" # Leading space counts! len2 = len(str2) # Evaluates to 26 instead of 25
2. Granulare Datenstrukturen & Kollektionen
- Die Ein-Element-Tupel-Falle: Wenn Sie ein einzelnes Element in Klammern setzen, wird es zu einem regulären Primitivtyp, es sei denn, Sie fügen ein nachstehendes Komma hinzu:
python tup = (1,) # Comma is mandatory to maintain type integrity! - Floats und Ints zusammen in Sets speichern: Sets erzwingen Eindeutigkeit und komprimieren typischerweise Duplikate. Um sowohl eine Ganzzahl als auch deren exakte Fließkommaversion zu speichern, ohne eine Löschung auszulösen, verpacken Sie diese in Tupeln:
python values = { ("float", 9.0), ("int", 9) } - Multi-Wert-Dictionary-Thesaurus: Ein benutzerdefinierter Mapping-Ansatz, bei dem ein einzelner Suchschlüssel direkt auf eine verschachtelte Liste verweist, die mehrere Definitionen oder Fakten enthält:
python dict1 = { "table" : ["a piece of furniture", "list of facts and figures"], "cat": "a small animal" }
3. Benutzerdefinierte Datei-I/O-Logik & Textverarbeitung
- Manuelles CSV-String-Parsing (ohne
.split()): Bevor wir zu integrierten String-Splitting-Funktionen übergehen, haben wir eine Zeichen-für-Zeichen-Iterationsschleife gebaut, die Kommas erfasst, Zahlenpuffer isoliert, sie direkt umwandelt (Type-Casting) und den Puffer sauber leert:python num = "" for i in range(len(data)): if(data[i] == ","): print(int(num)) num = "" else: num += data[i] - Die exakte Zeilennummer finden: Anstatt nur zu prüfen, ob ein Wort existiert, liest diese benutzerdefinierte Schleife eine Datei sequentiell Zeile für Zeile und gibt den exakten horizontalen Zeilenindex zurück, an dem der Teilstring erscheint:
python def check_line(): word = "learning" data = True line_no = 1 with open("practice.txt", "r") as f: while data: data = f.readline() if word in data: print(line_no) return line_no += 1 return -1 - Die Überschreibregel (
r+vsw+): Das Öffnen einer Datei imr+-Modus ermöglicht es Ihnen, Zeichen exakt ab Index Null zu überschreiben, ohne den Rest des nachfolgenden Textes automatisch zu löschen (keine automatische Kürzung/Trunkierung).
4. OOP-Architektur, private Attribute & Zustandsänderungen
-
Name Mangling und private Schutzmaßnahmen: Die Verwendung eines doppelten Unterstrichs (
__) macht Attribute und Methoden privat, was Fehlermeldungen auslöst, wenn von außen darauf zugegriffen wird, sie bleiben jedoch für interne Methoden offen: ```python class Account: def init(self, account_number, account_password): self.account_number = account_number self.__account_password = account_password # Private attributedef reset_password(self): print(self.__account_password) # Perfectly safe inside the class block* **Gezieltes Löschen von Eigenschaften und Instanzen:** Sie können das Schlüsselwort `del` verwenden, um bestimmte Eigenschaften von einem Live-Objekt zu entfernen oder die Objektinstanz vollständig aufzulösen:python del s1.name # Wipe out an individual property del s1 # Liquidate the whole object reference from memory* **3 Wege, eine Klassenvariable zu verändern:** Wenn Sie eine gemeinsam genutzte Klassenstatusvariable ändern (z. B. `name = "anonymous"`), haben wir drei klare Ansätze dokumentiert, um die Änderung über Instanzen hinweg dauerhaft zu machen:pythonStrategy A: Directly targeting the global class blueprint
Person.name = new_name
Strategy B: Dynamic query via instance class dunder
self.class.name = new_name
Strategy C: Explicit Classmethod Decorator mapping
@classmethod def change_name(cls, name): cls.name = name ```
5. Dunder-Magie & Objektvergleich
- Benutzerdefinierte mathematische Vektoren (
__sub__): Das Überladen von Operatoren ermöglicht es uns, benutzerdefinierte komplexe Objektzahlen mithilfe von Doppel-Unterstrich-Methoden sauber zu subtrahieren: ```python class complex: def init(self, real, imag): self.real = real self.imag = imagdef __sub__(self, other): newreal = self.real - other.real newimag = self.imag - other.imag return complex(newreal, newimag)* **Vergleichen von benutzerdefinierten Objekten (`__gt__`):** Wir können Instanzen basierend auf internen numerischen Werten direkt vergleichbar machen (z. B. um zu bewerten, welche Bestellung teurer ist):python class Order: def init(self, item, price): self.item = item self.price = pricedef __gt__(self, other): return self.price > other.price```
6. Persönliche Programmier-Eselsbrücken (Mnemonics)
- Syntax: Regeln richtigherum / Die richtige Art, Code zu schreiben.
- Einrückung (Indentation): Richtiger Abstand / Freiraum.
- Konkatenation (Concatenation): Aneinandergehängte Strings.
- Trunkierung (Truncating): Löscht vorherige Daten und startet die Datei frisch zum Schreiben.