Fortgeschrittenes Python (Python 301) | Kalob Taulien | Skillshare

Playback-Geschwindigkeit


1.0x


  • 0.5x
  • 0.75x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Fortgeschrittenes Python (Python 301)

teacher avatar Kalob Taulien, Web Development Teacher

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Willkommen in Python 301!

      1:27

    • 2.

      So schaffst du deinen ersten OOP

      5:11

    • 3.

      OOP

      5:57

    • 4.

      OOP

      9:34

    • 5.

      OOP

      2:35

    • 6.

      OOP

      6:12

    • 7.

      OOP

      3:41

    • 8.

      OOP Die super

      8:31

    • 9.

      OOP

      9:22

    • 10.

      Fehler und Ausnahmen

      6:10

    • 11.

      Ausnahmen fangen

      9:35

    • 12.

      Was sind Dekoratoren und wie du eine Gestaltung erstellst

      7:09

    • 13.

      Was sind die Generatoren und wie du eine

      12:19

    • 14.

      Pipenvs: Andere Arten von virtuellen Umgebung

      8:25

    • 15.

      Dein Abschlussprojekt

      20:09

    • 16.

      Python 301 Zusammenfassung

      1:00

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

838

Teilnehmer:innen

8

Projekte

Über diesen Kurs

Willkommen in Python 301, wo du fortgeschrittene Python lernst.

In diesem Kurs behandeln wir diese Hauptthemen:

  • Kurse (objektorientierte Programmierung)
  • Probiere und außer (gnädige Fehlerbehandlung)
  • Dekorieren (Funktionen in Funktionen)
  • Generatoren (performante Datenverarbeitung)

Und dein Abschlussprojekt wird eine Banking-App sein! Weitere Infos zu dem Projekt im Bereich Kursprojekt.

Triff deine:n Kursleiter:in

Teacher Profile Image

Kalob Taulien

Web Development Teacher

Kursleiter:in

Hi everybody! I'm Kalob Taulien.

 

Here's the TL;DR (short) version about me:

I have been coding since 1999 and teaching people how to code since 2013 I have over 350,000 web development students world-wide I'm on the Wagtail CMS core development team (Wagtail is Python's #1 most popular website making system) I try my best to answer EVERY question my students have  I love teaching — it's definitely one of my natural talents  Also I love goats! (Great conversation starter with me if we ever get to meet in person)

Below you can find all my Skillshare courses. The categories go from easiest to hardest, except for the Misc. Coding Courses at the very end. 

If you're brand new to coding, start with BEGINNERS WEB DEV.&nb... Vollständiges Profil ansehen

Skills dieses Kurses

Entwicklung Programmiersprachen Python
Level: Advanced

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. Willkommen in Python 301!: Hallo und willkommen bei Python 301. Ich bin Caleb Colleen und werde heute dein Lehrer sein. In diesem Kurs werden wir über einige fortgeschrittene Python Konzepte lernen, wie objektorientierte Programmierung, Verwendung von Klassen, versuchen außer Generatoren, Dekoratoren. Und dann werden wir am Ende eine Banking-App erstellen , um das Beste aus diesem Kurs herauszuholen, Sie sollten bereits etwas mit Python vertraut sein. Sie sollten sich als Zwischenstufe oder Junior-Level, als Python Programmierer betrachten. Und Sie werden im Grunde ein wenig Hausaufgaben am Ende jeder einzelnen Lektion machen, wir werden alles über Klassen, Eigenschaften, Methoden, Defender-Methoden, Klassenvererbung, Klasse Schnittstellen und alle möglichen Dinge dazwischen. Dann werden wir anmutig im Grunde Fehler behandeln , so dass unser Programm nicht einfach aufhört zu arbeiten. Damit unser Programm einen Fehler anmutig behandeln und weiter arbeiten kann. Und wie ich bereits erwähnt habe, werden wir am Ende ein Projekt haben, in dem wir eine App erstellen, eine Banking-App, in der Sie Geld mit Python abheben oder einzahlen können. Und dann werden Sie alle Ihre Transaktionen in einer Transaktionsdatei protokollieren. Ich bin Caleb Colleen und arbeite seit einigen Jahren mit Python. Ich benutze Python jeden Tag, sowohl professionell als auch für Hobbes. Und heute werde ich dir fortgeschrittenes Python beibringen. Willkommen bei Python 301 mit Ihrem Gastgeber und Instruktor Caleb Tallinn. 2. So schaffst du deinen ersten OOP: Beginnen wir mit dem Lesen unserer ersten Python Klasse. Also zuerst müssen Sie Python installiert und Sie müssen in der Lage sein, ein wenig Python zu schreiben , um dieses Modul zu nutzen, um Python drei, oh eins zu verwenden. Also vor mir hier habe ich nur VS-Code ist nur ein einfacher Texteditor. Sie können PyCharm verwenden, Sie können Klammern verwenden, Sie können jeden Texteditor verwenden, den Sie mögen. Ich mochte gerade VS-Code. Also, vor mir hier, was ich tun werde, ist, zu View zu gehen und dann zum Terminal zu gehen und einfach das Terminal zu öffnen. Und das gibt mir nur ein Terminal am unteren Rand und meinen Dateibetrachter auf der linken Seite. Lassen Sie uns voran und erstellen Sie hier eine neue Datei. Und nennen wir diesen First-Class-Dot Py. Werfen wir einen Blick auf das Schreiben unserer First-Class. Aber bevor wir das tun, müssen wir einen Blick auf einige der Syntax werfen. Also, wenn wir eine Funktion schreiben, ist es wie etwas in der Linie von d f, Funktionsname. Tun Sie etwas. Eine Klasse ist ein bisschen anders. Um nun eine Funktion zu instanziieren, sagen wir einfach den Funktionsnamen, und das war's. Jetzt ist eine Klasse ein bisschen anders. Eine Klasse beginnt mit dem Wort Klasse, und dies wird zu erstellen, was als Objekt bekannt ist. Und in Python ist alles ein Objekt der Datei als Objekt. Eine Funktion ist ein Objekt. Eine Klasse ist kein Objekt, aber sie werden etwas anders verwaltet. So beginnt eine Klasse mit der Schlüsselwort-Klasse und dann geben wir ihr normalerweise Großbuchstaben benennen, oder zumindest Großbuchstaben sind Großbuchstaben. Also sagen wir so etwas wie Klasse. Das ist ein Tier. Und das ist buchstäblich alles, was es gibt, um eine Klasse zu erstellen und dann diese Klasse zu instanziieren oder, oder um weniger schickere Terminologie zu verwenden, um diese Klasse zu aktivieren , sagen wir Tier ist gleich, das ist ein Tier. An diesem Punkt ist diese Klasse völlig nutzlos, aber das wird funktionieren. Das wird uns keine Fehler geben. Und wir können das demonstrieren, indem wir in unser Terminal gehen und Python erstklassigen Punkt py eingeben. Und wir sehen keine Fehler. Das bedeutet, dass das so funktioniert, wie wir es wollen. Wenn Sie keine Fehler sehen, ist das eine gute Sache. Lassen Sie uns also voran und erstellen Sie hier ein echtes Lebensbeispiel. Dieses Beispiel wird also buchstäblich nur ein Tierbeispiel sein. Und wir werden dieses Beispiel durch so ziemlich all dieses Python 301-Modul oder diesen Kurs verwenden . Also lasst uns voran gehen und eine brandneue Klasse schaffen. Wir sagen Klasse. Wir geben ihm einen Namen Doppelpunkt, und dann können wir hier drinnen etwas tun. Jetzt werden wir in den nächsten Lektionen über Eigenschaften und Methoden und solche Dinge sprechen. Aber jetzt lassen Sie uns voran gehen und diesem eine Symboleigenschaft geben. Und das ist wirklich nur ein schickes Wort für eine Variable innerhalb einer Klasse. Und so haben wir so etwas wie eine Immobilie. Und das ist eigentlich Schlüsselwörter, die nicht verwendet werden, die wie Eigenschaft verwendet wird , ist eins gleich etwas. Dann können wir diese Klasse instanziieren oder diese Klasse aktivieren, indem wir sagen, dass das Tier gleich einer Tierklasse ist. Es hat die Klammern. Es gibt eine Menge wie eine Funktion. Und dann können wir sagen, drucken die Tierpunkteigenschaft eins und Sie können es Audiophile für mich mit VS Code sehen. Und so ist das viel wie ein Wörterbuch-Objekt, aber ein Wörterbuch sieht in etwa so aus. Es sucht nach einem Schlüsselwort. In einer Klasse verwenden wir Punktnotation und dieser Punkt bedeutet einfach, dass dies eine Art Klasse sein wird , und dies ist eine Art Eigenschaft oder eine Variable innerhalb dieser Klasse. Lass uns weitermachen und das laufen. Und wir sehen, dass es etwas sagt, was auch immer das nicht hier ist. Jetzt können wir das überschreiben und wir werden darüber in zukünftigen Lektionen sprechen. können wir komplett ändern. Wir müssen das Eigentum überhaupt nicht benutzen. Wir können das buchstäblich benennen. Sonst noch etwas? Ich werde das auswählen. Gehen Sie zur Ansicht oder ist seine Auswahl, Auswahl hinzufügen nächstes Vorkommen. Und es wird beide auswählen. So kann ich an zwei Orten gleichzeitig schreiben. Und ich kann sagen, das ist eine Eigenschaft. Und wenn ich das wieder laufe, wird es einfach das Wort etwas ausdrucken. Und so können Sie sehen, dass diese beiden, wenn ich, auch wenn ich es dort anklicke, gleichzeitig hervorgehoben, diese verheiratet sind. Und so, um Sinn daraus zu machen, haben wir eine Klasse namens Tier geschaffen, ihr eine Eigenschaft gegeben, nur ein langweiliges, feines Eigentum. Wir haben es fest codiert, also ist es momentan nicht viel Nutzen. Es gibt nicht viel Nutzen dafür. Dann haben wir diese Klasse instanziiert und wir werfen sie in eine Variable. Und dadurch haben wir diese Klasse aktiviert oder diese Klasse instanziiert. Dann sagten wir, in dieser Variablen aktivieren Sie die Eigenschaft. Das ist eine Eigenschaft. Nun, im Moment ist das viel wie ein Wörterbuch. Die Syntax ist etwas anders, aber das ist viel wie ein Wörterbuch. Also, was ich möchte, dass Sie tun, ist eine Beispielanimal Klasse oder wirklich jede Art von Klasse zu erstellen . Geben Sie ihm eine Eigenschaft, schreiben Sie den Wert fest, aktivieren Sie diese Klasse und drucken Sie diese Eigenschaft dann aus. Also im Wesentlichen tun, was ich in diesem Video getan habe. Wenn du das fertig bist, lass uns zur nächsten Lektion gehen, in der wir über Klasseneigenschaften ein wenig tiefer sprechen. 3. OOP: Willkommen zurück. In dieser Lektion werden wir über Klasseneigenschaften sprechen. Also, um von unserer letzten Lektion fortzufahren, werde ich einfach kopieren und einfügen, was wir aus unserer vorherigen Lektion haben, die ich gerade aus dem letzten Video umbenannt habe. Nur so ist es ein wenig einfacher, diese Dateien zu verwalten, wenn Sie die Quelle herunterladen. Aber ich werde diesen genauen Code im Grunde nehmen und ihn in diese nächste Lektion verschieben, es, und ich werde dies durch Python 301 vorwärts machen. In der letzten Lektion haben wir darüber gesprochen, dass dies eine Eigenschaft ist. Wir haben eine Klasse, das ist eine Eigenschaft und das ist hart codiert, um die Zeichenfolge zu sein, etwas. Jetzt muss dies keine Zeichenfolge sein. Dies könnte ein boolescher Wert, eine Liste oder ein Wörterbuch sein, oder es könnte buchstäblich alles sein. Aber lassen Sie uns etwas nützen, das etwas komplizierter ist. Also lassen Sie uns ein Wörterbuch verwenden. Also werden wir hier eine Immobilie haben. Es wird auf eine Form eines Wörterbuchs gesetzt werden. Und hier könnten wir sagen, T1 ist dann gleich dem Wert eins. Und dann müssen wir das instanziieren. Wir haben das in der letzten Lektion getan. Wir verwenden die Variable, nachdem die Tierklasse instanziiert wurde. Dies ist eine Eigenschaft und dies wird ein Wörterbuch ausdrucken. Also, wenn ich das mache, druckt es ein Wörterbuch aus. Jetzt wissen wir, dass dies ein Wörterbuch ist, und an dieser Stelle ist dies nur eine Standardvariable. Es gibt nichts Besonderes daran. Es ist zufällig, dass es hier eine Klasse gibt. Dann eine Eigenschaft. Betrachten Sie es als Variable. Und dann, um auf einen Schlüssel zuzugreifen, wie wir es in einem regulären Wörterbuch würden, geben wir ihm einfach den Schlüsselnamen und der hier übereinstimmt. Also, wenn ich das speichere und das Skript erneut ausführe, können wir sehen, dass es Wert eins sagt. Und so werden wir das viel in Python auf professioneller Ebene sehen, werden wir die Eigenschaft als Wörterbücher festlegen sehen. Das ist eine sehr häufige Sache. Und so wird es wirklich nützlich für Sie sein zu wissen, dass dies eine Klasse ist, das ist eine Eigenschaft. Und diese Eigenschaft, ihr Datentyp oder ihre Struktur, ist ein Wörterbuch. bedeutet, dass wir dann die Dinge nachschlagen können, aber es muss nicht unbedingt ein Wörterbuch sein. Wir könnten diese Liste sagen und ich werde ihr nur geben, jeder Name ist gleich einer Liste von vielleicht Namen. Also haben wir Stock, Caleb, und Gully, die eine süße kleine Katze ist, ist eigentlich nicht buchstäblich ist eine ziemlich große Katze. Und dann könnten wir sagen, drucken Sie das Tier, diese Liste. Und wenn wir das erneut ausführen, werden wir hier unten sehen, da steht Kain, Caleb und Gully, und es erscheint als Liste. Nun, da dies eine Liste ist, können wir Indizierung und Slicing durchführen und Dinge darauf genau wie eine reguläre Listenvariable nur innerhalb einer Klasse ist. Das ist wirklich alles, was es dazu gibt. Also, wenn wir wollen, sagen wir gully, erinnern Listen beginnen bei 0. Das ist also 0 Index eins, Index, zwei Index. Wir würden diese Liste sagen. Harte Klammern zu, und das wird das Wort Gulley oder den Namen Gully für uns ausdrucken , einfach so. Wenn es nun darum geht, Eigenschaften automatisch zuzuweisen, können wir dies mit dieser Sache tun, die als Defender-Methode bezeichnet wird, eine doppelte Unterstrichmethode. Wir werden darüber in seiner eigenen Lektion sprechen. Wir können auch Funktionen als Eigenschaften verwenden, und das wird ein wenig fortgeschrittener. Wir werden in der nächsten Lektion darüber reden. In dieser Lektion möchte ich, dass Sie eine Klasse erstellen, sie Eigenschaften geben. Und anstatt nur eine Zeichenfolge oder eine Zahl oder eine Art einfachen Datentyp zu verwenden. Verwenden Sie einen neuen Datentyp sind kein neuer Datentyp, sondern eine komplexere Datenstruktur. Das erste sollte also ein Wörterbuch sein und das zweite sollte eine Liste sein. Und dann versuchen Sie, auf diese Wörterbuch-Enlist innerhalb der Klasse zuzugreifen. Jetzt eine lustige Sache, die wir tun können, weil Programmiersprachen haben wir diese Dinge genannt private Eigenschaften. Python hat keine privaten oder öffentlichen. Es ist alles irgendwie zugänglich. Also, was wir auch tun könnten, ist Druck Tier Punkt diese Liste. Und das geht einfach nur, anstatt die Klasse in eine Variable zu werfen, werden wir direkt auf diese Eigenschaft von ihrer Klasse zugreifen. Wenn wir also weitermachen und das ausführen, werden wir sehen, wie wir unsere Liste für uns ausdrucken, wie wir es erwarten. So gibt es kein Privates, es gibt keine Öffentlichkeit, Nichts dergleichen. Ich weiß, PHP und Java und all diese anderen Sprachen haben das. Python hat das nicht. Oh, und noch eine Sache, eigentlich sollte ich das nicht vergessen. Du wirst das die ganze Zeit sehen. Wenn Sie eine Eigenschaft sehen, beginnen Sie mit einem Unterstrich wie diesem. Dies ist ein Privateigentum. So kommen wir damit in Python durch, anstatt zu sagen, dass dies privat sein wird, wie in einigen Sprachen, verwenden wir buchstäblich das Wort privat. Wir beginnen mit einem Unterstrich. Und wenn wir mit diesem Unterstrich beginnen, sagen wir einfach, dass dies ein Privateigentum ist. Greifen Sie nicht von außerhalb der Klasse darauf zu, also greifen Sie nicht auf diese Weise zu. Es sollte immer nur intern verwendet werden. Jetzt wissen wir noch nicht, wie wir diese intern nutzen sollen. Also werden wir in den nächsten Lektionen darüber erfahren. Aber was ich möchte, dass du das tust, ist, dass du das hier machst und es ausprobierst. Erstellen Sie ein Tierklassenwörterbuch, eine Liste, private Eigenschaft, und instanziieren Sie dann Ihre Klasse. Drucken Sie etwas aus Ihrem Wörterbuch oder Listen aus und versuchen Sie, direkt von diesem Tier, dieser Tierklasse, zu drucken. Eine der Eigenschaften, ohne sie zu instanziieren und ohne sie direkt in eine Variable zu werfen. Es gibt also zwei Möglichkeiten, dies zu tun. Geh weiter und gib dem eine Chance. Probieren Sie es aus. Bitte. Probieren Sie es aus. Dies ist wichtig, denn wenn Sie zum Beispiel in die Welt des maschinellen Lernens oder sogar nur Django-Web-Frameworks einsteigen. Du wirst überall Unterricht sehen. Es ist wichtig zu wissen, wie Klassen in Python funktionieren. Zum Glück sind sie ziemlich leicht zu erlernen. Lassen Sie uns in der nächsten Lektion über Klassenmethoden sprechen. 4. OOP: Hallo, hallo, hallo. Lassen Sie uns in dieser Lektion über Klassenmethoden sprechen. Klassenmethoden. Ehrlich gesagt, es ist nur ein schicker Begriff für eine Funktion innerhalb einer Klasse. Und so sieht es genau wie eine Funktion aus. Hier gibt es nur einen deutlichen Unterschied. Lassen Sie uns also voran gehen und diese private Variable loswerden, die nur aus der letzten Lektion stammt. Und lassen Sie uns eine neue Methode erstellen. Das ist also eine Methode. Das ist alles, was es gibt und das sieht genau wie eine Standardfunktion aus. Und so wird alle eine Methode ist, ist eine Funktion innerhalb der Klasse. Nun ist eine Sache, die hier zu beachten ist, dass bei einer Standardmethode innerhalb einer Klasse der erste Parameter immer selbst ist. Wenn Sie nun aus einem JavaScript-Hintergrund kommen, werden Sie dies sehen, oder PHP verwendet dies auch. In PHP verwendet so etwas. Dann bekomme ich Dollarzeichen und dann einen Pfeil. Javascript verwendet das Schlüsselwort this. In Python verwenden wir das Schlüsselwort self. Und was das tut, ist, wenn wir selbst sagen, können wir jetzt Selbstpunkt drucken und wir haben Zugriff auf alles. Und Sie können sehen, VS-Code wird automatisch gefüllt. Das für mich, wir haben Selbstpunkt. Dies ist eine Methode, dies ist eine Eigenschaft, diese Liste. Also lasst uns voran gehen und diese Liste ausdrucken. Wir haben hier eine Methode geschrieben. Jetzt gehen wir weiter und aktivieren Sie es. Und um es zu aktivieren oder auszuführen. Wir werden diese Tierklasse instanziieren, weil dies eine Best Practice ist. Anstatt selbst auf Tier zuzugreifen, werfen wir es in eine Variable. Dann sagen wir den Anime Eule Punkt. Dies ist die Methode Klammern. Und im Gegensatz zu einer Funktion, bei der wir hier ein Schlüsselwortargument oder ein erforderliches Positionsargument sehen , müssen wir das nicht tun, wir können es einfach ignorieren. Obwohl selbst innerhalb der Klasse außerhalb der Klasse verwendet wird, ignorieren wir es vollständig, als ob es nicht existiert. Und das heißt nur, weil dies ein Klassenobjekt in hier ist, wird es Zugriff auf alles innerhalb der Klasse haben. Und der Grund, warum wir das tun, ist, dass wir nicht ständig neue Argumente einbringen müssen. Also müssten wir diese Liste nicht sagen. Dies ist Eigentum, et cetera, et cetera, et cetera, et cetera. Wir müssen diese Dinge nicht ständig weitergeben weil wir hier eine Liste aufstellen müssten. Und dann wird dieses nächste ein Wörterbuch sein, das hier bereits gesetzt ist. Wir müssen diese nicht übergeben, also werde ich das rückgängig machen und einfach ausführen, das ist eine Methode. Drucken Sie sich selbst, diese Liste. Und wieder bezieht sich das Selbst auf Tier. Diese Listeneigenschaft, Klasse, Eigenschaft. Lassen Sie uns voran und führen Sie diese Python 301 Lektion drei Klassenmethoden, und es druckt es für uns aus. Mit dem Schlüsselwort self haben wir Zugriff auf andere Methoden, andere Eigenschaften, all die anderen guten Sachen innerhalb dieser Klasse. Wir haben noch keinen Zugang zu anderen Klassen. Es ist nur diese bestimmte Klasse und das ist es, worauf sich selbst bezieht. Selbst bezieht sich auf die Tierklasse, in der wir arbeiten. Als Nächstes können wir auch Eigenschaften mit Methoden definieren. Und wieder, um dies in mehr Laien Begriffe zu kochen, können wir eine Klassenvariable basierend auf einer Klassenfunktion erstellen. Lassen Sie uns voran und erstellen Sie eine Funktion oder eine Methode namens get. Verdammt. Es wird sich selbst als ersten Parameter nehmen, tut es immer. Und wir könnten zurückkehren, weil es im Grunde eine Funktion ist, self.age, diese Liste. Und dann ist Schlucht Nummer zwei, sein Index auf 012. Nun, wenn wir versuchen, das zu bekommen müssen wir sagen, „ Golly mit Klammern bekommen“. Nun, wenn dies wie eine Eigenschaft anstelle einer Funktion handeln soll, sagen wir, es ist nichts drin und es sollte nur ein einfaches Stück Daten zurückgeben. Wir können eine Sache benutzen, die als Dekorateur bezeichnet wird, über die wir auch in Zukunft sprechen werden. Und wir sagen einfach im Eigentum. Und was das tun wird, ist zu sagen, jede Art von Logik hier drin, jede Logik und diese Methode könnte riesig werden, obwohl es hier 100 Zeilen Code sein könnte, wenn wir es wollten. Es wird das immer in eine Immobilie stecken. Und wenn dies eine Eigenschaft ist, wir die Klammern. Nun, da wir das Rückgabe-Schlüsselwort wie eine Funktion verwenden, wird dies eigentlich nichts tun. Dies ist eine Methode hier oben, ist tatsächlich Druck. In diesem Fall machen wir dies ein wenig komplexer. Lassen Sie uns eine Methode wie eine reguläre Funktion verwenden und tatsächlich etwas zurückgegeben. Also dann können wir sagen, Gully ist gleich dem Tier, Gully. Und das wird uns erlauben, das später zu verwenden, damit wir drucken können. Der süßeste Zeh aller Zeiten ist Golly. Lass uns weitermachen und das laufen. Und wir werden sehen, dass das auf verschiedene Dinge abdruckt. Es wird drucken. Dies ist eine Methode, weil es dies ausführt, die gedruckt wird. Und dann drucken wir den süßesten Gatto, wenn die ganze Zeit Galeere ist. Und sieh dir das an. Es druckt unsere Liste genau wie im ersten Beispiel, im zweiten Beispiel und in unserer zweiten Print-Anweisung. Das ist unsere Klasse, das ist unser Eigentum. Und Sie können sehen, dass es tatsächlich viel wie eine Funktion aussieht, aber es hat einen Dekorator darauf, der im Grunde sagt, hey, obwohl dies ein ausführbares Objekt ist, oder was wir ein aufrufbares nennen. Behandeln Sie es, als wäre es keine aufrufbare, behandelt, als ob es sich um eine Standardeigenschaft wie diese Liste handelt. Und das ist eine Eigenschaft. Und weil wir das Rückgabe-Schlüsselwort verwenden, wird in der Lage sein, das dann in eine Variable, einen beliebigen Variablennamen, zu werfen. Und dann können wir diese Variable auf der Straße benutzen. Werfen wir nun einen Blick auf ein weiteres Beispiel. Lassen Sie uns ein Beispiel erstellen, in dem wir einen Namen zu dieser Liste hinzufügen. Also hier drin können wir den Tod sagen, weil wir eine Methode erstellen werden. Fügen Sie Namen hinzu. Es wird immer selbst nehmen und der Name wird der Parameter sein, den wir hinzufügen werden. Dann können wir selbst Punkt schreiben, diese Liste Punkt fügen Sie diesen Namen. Und wir können, wenn wir entweder self.age zurückgeben wollten, diese Liste als die gesamte neue Liste, weil alles, was wir getan haben, war eine Liste zu nehmen. Wenn Sie das Selbst für nur eine Sekunde vergessen, sieht es wie eine normale Liste aus, list.append. Dies greift nur von außerhalb der Funktion oder der Methode darauf zu. Also haben wir Klasseneigentum. Es ist eine Liste, so dass wir dot append darauf verwenden können. Wir werden den Namen hier anhängen. Und dann wird es diese Liste für uns zurückgeben. Und wir werden das viel sehen. Also lasst uns voran gehen und diesen Code auskommentieren. Und sagen wir, der Anti-Malware-Punkt. Und wie nannten wir es? Wir nannten es Add Name und es braucht einen Namen. Ignoriere dich selbst. Selbst geht immer da rein, aber wir ignorieren es. Fügen Sie Name hinzu, und dann wird der Name Rhabarber sein. Wenn wir es wollten, könnten wir den Tierpunkt dieser Liste ausdrucken. Und wir werden sehen, dass diese Liste jetzt Doo-Doo-Doo-Doo kam Caleb Gully und Rhabarber. Und so fügen wir unseren Eigenschaften jetzt dynamisch Dinge hinzu, indem wir eine Methode verwenden. Gehen Sie weiter und führen Sie das aus. Und da steht Kain, Caleb Gully und Rhabarber genau wie erwartet. Und wieder, alles, was wir hier tun, ist, dass wir Datentypen verwenden, Standard-Python Datentypen innerhalb einer Klasse. Und so kapseln wir oder, wissen Sie, um das herunterzukochen, weil wir unsere großen Worte als Entwickler mögen, Incentive-Kapselung, Betrachten Sie es als enthalten. Alles, was wir tun, ist, diesen ganzen Code in einer Klasse zu enthalten. Und die Idee hier ist, dass wir Funktionen und Variablen oder Methoden und Eigenschaften gruppieren . Wir gruppieren sie in dieser Sache, die ein Tier genannt wird, diese Klasse, die ein Tier genannt wird. Und die Idee hier ist, dass alle diese irgendwie verwandt sind. Also, was ich möchte, dass Sie als Ihre Aufgabe für diese Lektion tun, ist, ein Klassentier zu erstellen. Erstellen Sie eine Eigenschaft, machen Sie sie zu einem Array oder machen Sie sie zu einer Liste, einer Python Liste. Dann schreiben Sie eine Methode, um nichts hinzuzufügen, sondern etwas aus dieser Liste zu löschen. Anstatt hinzuzufügen, könnte es entfernen Name genannt werden. Denken Sie daran, nehmen Sie selbst als ersten Parameter ein 100% der Zeit, die es immer abnimmt. Innerhalb dieser, eine bestimmte Methode, können wir dann auf Selbstpunkt zugreifen, was auch immer Ihre Liste genannt wird, Punkt entfernen und dann den Namen. Und dann können wir hier unten sagen, nun, wir haben es instanziiert. Dies ist unsere Klasse, Dies ist unser Methodenname. Also würde Ihr Name entfernen genannt werden, und dann der Name, der entfernt werden soll. Und dann kannst du die ganze Liste wieder ausdrucken und sehen, dass sie tatsächlich entfernt wurde. In der nächsten Lektion lassen Sie uns das aufräumen. Das sieht also ein wenig mehr Bein aus, ein Beispiel aus der realen Welt, denn im Moment ist dies unordentlicher Code und das ist nur Tutorial-Code. Das ist nicht gut. Lassen Sie uns in der nächsten Lektion ein echtes Beispiel für eine Tierklasse erstellen. 5. OOP: Ich schreibe, ausgehend von dieser letzten Lektion, was wir tun werden, ist, dies ein wenig aufzuräumen und etwas von einer echten Tierinstanz zu erstellen , oder manchmal nennen wir die Klasseninstanz, weil es eine Instanz einer Klasse ist. Und wir werden das alles im Grunde loswerden und wir werden eine richtige Tierklasse schaffen. Was für Dinge hat das Tier also nicht? Ein Tier hat eine Pelzfarbe. Und lassen Sie uns sagen, dass für eine Farbe orange sein wird, dann hat ein Tier auch Aktionen, die es ergreifen kann. Welche Art von Aktion kann es nicht tun, könnte es def, essen, es könnte etwas tun. Und denken Sie daran, wir haben uns immer hier reingebracht. Wir könnten auch taub Chase machen, weil es seine Nahrung verjagt. Sagen wir, das ist wie ein Tiger oder ein Cheeto oder so. Und das wird auch selbst als ersten Parameter nehmen. Dann instanziieren wir diese Klasse, nennen wir diesen Tiger gleich und Tier. Und dann können wir diesen Tiger machen. Wir können ein IIT machen. Wir könnten es Chase schaffen, wir könnten seine Pelzfarbe ausdrucken oder wir machen es, machen wir das. Def sprechen. Es wird sich selbst nehmen und das wird einfach Rar, Rar, Tier-Punktsprechen drucken . Und wenn wir das ausführen, wenn wir Python Lektion für die Klassenbereinigung ausführen, wird es rar ausdrucken, genau wie wir es jetzt erwarten, ist dies nichts, was wir nicht bereits abgedeckt haben. Und wenn Sie gerade in Python 301 treten und Python irgendwie neu sind und sich nur fragen, was das passiert. Das bedeutet einfach, nichts zu tun, außer Einrückungen zu erlauben. Denn wenn wir diesen Pass hier nicht haben, gehen wir weiter und sehen, welche Art von Einrückungsfehler wir bekommen werden. Wir erhalten einen Einrückungsfehler, der einen eingerückten Block nach taub Chase erwartet hat. Eigentlich sucht es hier drinnen und tut sein Bestes, um herauszufinden, wo es ist. Aber wir haben einfach Pass da reingelegt. Jetzt ist dies eine sehr generische Klasse und es gibt ehrlich gesagt nichts Super Nützliches daran. Aber in der nächsten Lektion werden wir über Klassenvererbung sprechen. Es gibt also keine Aufgabe für diese Lektion. Ich wollte dir nur zeigen, dass ich das ein bisschen aufräumen werde. In der nächsten Lektion werden wir diese Tierklasse erweitern und wir werden, sagen wir, einen echten Tiger oder eine andere Tierart erschaffen . Und dann können wir die Speak-Methode, die Methode Chase Methode, überschreiben . Wir könnten alle möglichen Dinge hinzufügen. Wenn du also fertig bist, wie ich diesen Code bereinigt habe, lass uns zur nächsten Lektion gehen, in der wir über Klassenvererbung sprechen. 6. OOP: Das ist Vererbung. Also eines der wirklich netten Dinge hinter Python, oder ich denke wirklich jede Klasse in jeder Sprache, es muss nicht Python sein. Aber das Schöne an einer Klasse ist, dass wir sie erweitern können. Und so statt nur Klassentier zu sagen und dann eine andere Klasse namens Tiger und eine andere Klasse namens Hauskatze. Wir könnten, anstatt bewerten, sprechen, Verfolgungsjagd für eine Farbe immer und immer wieder essen zu müssen, können wir sie einfach verlängern. Und was ich hier tun werde, ist, das loszuwerden und eine neue Klasse zu schaffen. Und das hier wird Tiger genannt. Und in Klammern, wird es Tier erweitern. Und ich kann hier reingehen, um buchstäblich nichts zu tun. Und es ist automatisch, weil es diese Tierklasse hier oben erweitert. Es wird automatisch die Pelzfarbe zu bekommen, sprechen Methode, essen Methode und jagen Methode. Also, was ich tun kann, ist jetzt schreiben Tiger ist gleich einer Tiger-Klasse. Tiger Doublespeak, und statt zu schreiben, Tier ist gleich einer Tierklasse oder Tiger, die einer Tierklasse entspricht. Wir können jetzt sagen, Tiger ist gleich einer Tiger-Klasse und dann spricht der Tiger. Also lassen Sie uns diesen Code ausführen und sehen, was hier passiert. Laufen Sie weniger als fünf. Und da steht Rawr. Jetzt nur zum Spaß, lassen Sie uns das ausdrucken. Mal sehen, welche Art von Typ das ist. Druckart, Tiger. Und es wird sagen, rar, aber es wird auch sagen, Haupttiger. Dies ist anders als Tier. Wenn wir das gegen Tier austauschen, werden wir sehen, dass wir uns als RAR oder das Haupttier der Klasse. Und so tauschen wir das aus. Nun, was schön daran ist, dass wir hier alles überschreiben können. Statt also sprechen Sie roh oder wir können etwas anderes sagen. Taub, sprechen, es braucht sich selbst. Und was ist dieser Tiger, den wir sagen wollten, da wuchs richtig? Wie Tony, der Tiger, und holen Sie es. Ok. Vielleicht nicht der größte Witz, den ich je gemacht habe. Aber lassen Sie uns das laufen und wir werden sehen, dass wir diese Linie tatsächlich loswerden. Das brauchen wir nicht mehr. Wenn wir das ausführen, wird es nicht mehr rar sagen, weil wir die Tiger-Klasse instanziieren. Es hat gesprochen. Es erbt Klasse. Es hat auch sprechen. Welcher wird laufen. Nun, weil wir die Tiger-Klasse instanziieren und sprechen überschreiben, wird es diese hier laufen. Also wird es sagen, ihre Rate wie erwartet. Lassen Sie uns voran und erstellen Sie ein weiteres Beispiel und lassen Sie uns eine Hauskatzenklasse erstellen. Es wird sich auch von einem Tier erstrecken. Und wenn wir überbewerten sprechen, werden wir es sagen lassen. Und das ist alles, was wir dort tun werden. Und anstelle von Tiger, Tiger sprechen, können wir das immer noch instanziiert halten, wenn wir es wollten. Es tut nichts, damit wir es tatsächlich löschen könnten. Lassen Sie uns Ihnen ein Beispiel zeigen, wo wir sowohl eine Tigerklasse als auch eine Hauskatzenklasse haben. So können wir jetzt schreiben Katze gleich Hauskatze, Katze Punkt sprechen. Und schreiben wir auch Tiger, Doublespeak. Und einer wird sagen, dass sie großartig sind, und der andere wird mich retten. Und lasst uns weitermachen und das laufen. Und das ist die Regel und Miau. Nun, zu diesem Zeitpunkt denkst du wahrscheinlich, nun, das ist nicht gut. Ich meine, ich könnte genauso gut eine normale Hauskatzenklasse schreiben und nicht vom Tier ausgehen , wenn ich die eine Sache übersetze, die ich sowieso benutze, wenn du das denkst. Ja. Du hast absolut Recht. Lassen Sie uns voran und schauen Sie uns das für Farbe an. Lassen Sie uns Katze Punkt für Farbe drucken. Und wir werden sehen, dass das orange ist. Sie sind ein tolles Miau, und es steht Orange. Aber das können wir überschreiben. Wir können sagen, die Pelzfarbe ist gleich schwarz. Speichern wir das und führen Sie es erneut aus. Und jetzt wird es schwarz sagen. Und so hat es standardmäßig Orange als Fellfarbe geerbt, genau als Standard. Also ist es irgendwie wie eine Blaupause. Und dann haben wir das für eine Farbe für diese Hauskatze geändert, um schwarz zu sein. Jetzt im Wesentlichen, was wir hier tun, ist, dass wir eine Art Blueprint mit dieser Klasse erstellen, und dies wird eine Schnittstelle genannt. In der nächsten Lektion werden wir über Schnittstellen sprechen, was sie sind und wie wir sie implementieren und den Grund, warum wir sie sogar schreiben. Aber im Moment möchte ich, dass du eine Klasse namens Tier erstellst. Vielleicht haben Sie schon einen. Und dann möchte ich, dass du diese Klasse verlängerst. Ich möchte, dass du diese Klasse erbst. Durch das Schreiben der Klasse Ihren neuen Klassennamen. Erweitern Sie Tier, indem Sie Tiere in Klammern hier in Klammern setzen. Und dann können Sie es Attribute oder seine Eigenschaften überschreiben. Sie können auch die Methoden überschreiben. Und dann möchte ich, dass du diese Hauskatze instanziierst oder was auch immer du verwendest. Und dann, was auch immer Methode Sie gewählt haben, um zu überschreiben, ob es sprechen , essen, vielleicht etwas ganz Neues. Vielleicht ist es etwas, das außerhalb von dem liegt, was Sie bisher in diesem Modul gesehen haben. Ich möchte, dass du es hinrichtest. Cat Dot sprechen. Es wird mich ausdrucken. Und dann möchte ich, dass Sie, da Sie eine Ihrer Eigenschaften hier überschrieben haben, ich muss auch diese Eigenschaft ausdrucken. Und so hier habe ich einfach nicht für Farbe gedruckt. Und wieder, es ist wirklich, wirklich wichtig, dass Sie lernen, wie Klassen funktionieren. Denn in Frameworks wie Django-Web-Framework werden wir viele Klassen verwenden. Und es ist wichtig zu wissen, dass selbst wenn du nicht wüsstest, was Hamlets Reißverschluss da oben. Das ist einfach zusammengebrochen, also sagen wir sogar, Sie wissen nicht, was sich im Tier befindet. Sie könnten irgendwie überschreiben, was sich im Tier befindet. Du, du würdest in der Lage sein, herauszufinden, oh, ein Tier hat eine Pelzfarbe, aber ich möchte das überschreiben. Es hat eine Sprechmethode. Ok? Ja, ja, es hat eine Standardsprach-Methode, aber ich möchte das auch überschreiben. Wenn Sie also fertig sind, gehen wir zur nächsten Lektion über, in der wir über Klassenschnittstellen sprechen. 7. OOP: Lassen Sie uns eine Unterhaltung darüber führen, was eine Schnittstelle ist. Also im Wesentlichen, wenn Sie es herunterkochen wollten, ist eine Klassenschnittstelle buchstäblich nur ein Blueprint. Und alles, was es sagt, ist, dass es irgendeine Art von Eigentum geben wird. Es wird eine Art von Methoden oder nur eine Methode geben und es soll einfach etwas implementieren. Und in der letzten Lektion haben wir einen Tiger und eine Hauskatze erschaffen. Lassen Sie uns voran und löschen Sie diese nur für eine Sekunde. Wir werden neue erstellen. Und lassen Sie uns nur mit diesem Tier arbeiten. Und normalerweise, wenn Sie eine Schnittstelle sehen, werden Sie sehen, dass es eine Art von Methode gibt und es nur passieren wird. Oder Sie werden etwas wie erhöhen, nicht implementierten Fehler sehen. Und lassen Sie uns dies hier ein besseres Beispiel geben. Lasst uns Tier erweitern, lasst uns Klasse machen. Hauskatze wird die Tierklasse zu verlängern und einfach passieren. Das ist dann die Hauskatze instanziieren. So können wir sagen, Hauskatze ist gleich Host Kat oder Katze ist gleich Hauskatze. Und dann könnten wir Cat Dot machen. Und welche haben wir hier überschrieben? Nun, wir haben nichts überschrieben, aber wir wissen, dass es automatisch sprechen von der Animal Klasse erben wird. Also lasst uns voran gehen und reden. Und lassen Sie uns diese Datei starten. Dies ist Lektion sechs Klassenschnittstellen, und es sagt, nicht implementiert. Jetzt ist die Idee hier, dass Sie einfach eine Blaupause haben und das ist, wenn Sie dies verwenden. Du sollst das umsetzen. Wenn Sie es verwenden möchten, müssen Sie es implementieren. Und so, um diesen nicht implementierten Fehler loszuwerden oder wenn er nur vorbei ist, gibt keiner zurück. Wir könnten einfach sagen, def sprechen. Es wird sich selbst als seinen einzigen Parameter, obligatorischen Parameter innerhalb einer Klasse nehmen. Drucken Sie, miau. Und was das hier tut, ist, dass es sagt, hey, Hauskatze wird die Tierschnittstelle oder diese Blaupause benutzen. Wenn wir versuchen, sprechen gut zu verwenden, gibt es nichts implementiert, also müssen wir das umsetzen. Und weil wir Tier erweitert, wir überschrieben sprechen, so dass dies nicht mehr funktioniert. So können Sie sich das irgendwie so vorstellen. Wir nehmen diese beiden Zeilen und es ist sehr ähnlich. Boom, wir haben es einfach ersetzt. Aber die Schnittstelle oder der Blueprint soll uns einfach sagen, dass sie implementiert werden soll. Wenn wir das speichern und dies erneut ausführen, erhalten wir keinen nicht implementierten Fehler. Wir werden jetzt wie erwartet drucken. Und das ist so ziemlich die einzige Rolle einer Schnittstelle. Und Schnittstellen sind ein Blueprint, der besagt, hey, wenn Sie die Speak-Methode oder eine Methode verwenden möchten, müssen Sie sie selbst implementieren. Aber nur damit Sie wissen, wann immer Sie davon ausgehen, Hauskatze wird immer die Sprechmethode haben und es ist unsere Aufgabe als Entwickler, sie zu überschreiben. Ihre Aufgabe für diese Lektion besteht nun darin, eine Schnittstelle zu erstellen. Wenn Sie also bereits eine Tierklasse haben, wenn Sie zusammen mit Python 301 gefolgt sind, Sie wahrscheinlich noch keine Tierklasse. Gehen Sie voran und statt sprechen zu verwenden, gehen Sie voran und heben Sie einen nicht implementierten Fehler auf Essen oder Verfolgungsjagd oder eine andere Funktion oder Methode Ihrer Wahl. Erweitern Sie diese Klasse oder erben Sie diese Klasse, erstellen Sie eine neue. Ich habe gerade eine Hauskatze erstellt und dann diese Methode überschrieben. Sie haben dies vielleicht schon einmal getan. Es ist keine schlechte Idee, es wieder zu tun. Dieses Mal implementieren wir eine Schnittstelle mit nicht implementiertem Fehler. Als nächstes werden wir über die Superfunktion sprechen. 8. OOP Die super: Also viel Zeit, die Sie mit Klassen sehen werden, dass, weil wir eine Klasse erweitern können, Sie werden in der Lage sein, auf eine Funktion darüber zuzugreifen. Denken Sie also daran wie unten und Tier ist oben. Und wenn wir das als Hierarchie betrachten , so denke ich gerne darüber nach. Wir überschreiben einfach sprechen, was wir in der letzten Lektion getan haben. Aber wenn wir wollten, könnten wir alles hinrichten, was hier drin ist. Also statt zu überschreiben sprechen, Lassen Sie uns essen überschreiben. Also in unserer Tierschnittstelle, gehen wir voran und drucken. Ich esse. Yum, yum, yum. Und weil wir Hauskatze vom Tier ausdehnen, können wir jetzt diese Hauskatze instanziieren und wir können sagen, essen. Und das haben wir schon ein paar Mal gemacht. Also werden wir hier nichts Neues sehen. Da steht, ich esse yum, yum, yum. Und obwohl Hauskatze keine Methode darauf hat, hat die Klassen, die vom Tier erben, es hat es. Also dürfen wir das benutzen. Nehmen wir an, wir wollten die eq-Methode überschreiben, aber wir wollten auch den Code ausführen, der hier drin ist. Lassen Sie uns hier zwei Beispiele machen. Def, essen Sie sich selbst, drucken Sie. Ich esse Lachs. Und wenn wir dieses Katzen-Punkt-Essen erneut ausführen, nun, wir haben die ursprüngliche Ess-Schnittstellenmethode überschrieben. Und so werden wir jetzt nur sehen, dass ich Lachs esse. Aber was wäre, wenn wir aus irgendeinem Grund das auch ausführen wollten? Was wir tun könnten, ist, dass wir es irgendwie aufblasen können. Also denken Sie daran, das ist der Boden, das ist die Spitze. Wir können bis zur Tierklasse aufblasen und essen hinrichten. Jetzt gibt es zwei Möglichkeiten, dies zu tun. Es gibt den richtigen Weg und den falschen Weg. Der falsche Weg ist, Tier-Punkt-Essen zu schreiben. Weil dies noch nicht in einer Variablen oder irgendetwas Richtiges instanziiert ist. Ich meine, wir können technisch darauf zugreifen, aber wir sollten es wirklich nicht so machen. Und dann ist der richtige Weg, einfach super zu sagen. Es ist eine Funktion Punkt-Essen. Und wenn es irgendwelche zusätzlichen Parameter gibt, passen wir einfach die Parameter an. Wir haben keine Parameter, wir müssen nicht selbst übergeben. Es ist in einer Klasse, die bereits weiß, dass selbst automatisch übergeben wird. Und was das sagen wird, ist, die Klasse zu bekommen, die darüber ist, die Animal Klasse, das ist, was Super hier macht. Und dann führen Sie die Eat-Methode aus. Es wird also diese Tierklasse bekommen als diese Essensmethode. Und dann wird es es für uns ausführen, weil wir gesagt haben, essen mit Klammern, richtig? Sie werden hingerichtet. Es wird drucken, ich esse yum, yum, yum, yum. Und dann wird es drucken, ich esse Sammy, lass uns das speichern und versuchen. Und wir werden sehen, dass es genau das tut, was ich hier beschreibe. Ich esse yum, yum, yum, yum, ich esse Lachs. Und das alles tat wieder, war eine Blase bis zu dieser Tierklasse. Dot essen ausführen. Was auch immer hier drin ist, könnte ein Print-Statement sein, könnte alles sein. Es wird alles da drin ausführen. Und dann haben wir geschrieben, was wir sonst wollten. Und wieder, dies könnte jede Logik sein, die Sie schreiben möchten. Es spielt keine Rolle, dass es ein Print-Statement ist. Es könnte Mathematik sein, es könnte ein Webschaber sein. Es könnte alles sein, was du willst. Nun gehen wir weiter und machen ein weiteres Beispiel mit Chase, aber lassen Sie uns hier einige Schlüsselwörter hinzufügen. Also in unserer Tierklasse haben wir taube Jagd, Selbst. Und was werden wir jagen? Wir werden eine Gazelle jagen. Das ist es, was wir verfolgen wollen. Lasst uns jagen und Tier. Und das wird drucken, ich jage ein Tier. Und stellen wir sicher, dass Tier standardmäßig eine Gazelle ist. Ich hoffe, ich schreibe das richtig, vielleicht nicht. Und wenn ich hier runtergehe, wird Cat ab.js jetzt dazu kommen, weil wir es noch nicht alleine implementiert haben. Es kommt von der Schnittstelle. Es wird sagen, ich jage was immer das Tier ist, was zufällig eine Gazelle ist. Es ist los und führen Sie das aus. Und da steht, ich jage eine Gazelle. Jetzt können wir hier auch ein Schlüsselwort eingeben. Die Katze könnte eine Maus jagen. Lass uns weitermachen und das laufen. Und da steht, dass ich die Maus jage. Lustiges Englisch, ich jage eine Gazelle oder eine Maus oder so etwas. Jetzt, um Chase zu implementieren, können wir tun, tun, tun, können wir def, jagen, selbst, Tier schreiben. Es wird mit dem übereinstimmen, was wir hier oben sehen. Das Tier wird standardmäßig Gazelle sein, aber wir werden immer ein Tier übergeben, also werden wir dieses Schlüsselwort-Argument nicht machen. Dann sagen wir Super-Dot-Verfolgungsjagd. Wir werden das Tier hier oben vorbeikommen, was auch immer das sein wird. Es wird also sagen, ich jage standardmäßig, weil ich, aber vielleicht ist es das Tier jagt eine Maus. Ich jage eine Maus. Und dann konnten wir drucken Tier gefangen wurde und wir könnten f Saiten verwenden, wenn wir wollten, oder einfach nur eine reguläre Druckaussage. Es spielt an dieser Stelle keine Rolle. Dies sind nur Beispiele. Lass uns weitermachen und das laufen. Und das wird Cat Dot Chase laufen, die hier ist. Es wird super bis zu diesem hier. Es wird sagen, ich jage ein, was auch immer das Tier ist. Standardmäßig ist es Gazelle, wenn es nicht zur Verfügung gestellt wird. Und hier sagen wir, dass es erforderlich ist. Und dann werden wir das übergeben. Lass uns weitermachen und das laufen. Und es fehlt ein Schlüsselwort hier drin. Also lasst uns voran gehen und die Maus als Schlüsselwort hier hineinwerfen. Und kein Schlüsselwort, sondern ein erforderliches Positionsargument. Lass uns weitermachen und das noch ein Mal ausführen. Und da steht, dass ich eine Maus jage. Maus wurde gefangen und so jagt jetzt tun was die Schnittstelle uns sagt, wird tun. Wir haben dann mit der Super-Methode oder der Super-Funktion aufgeblasen. Wir sagten, hey, wo immer das sich von der Klasse erstreckt, die sich von den USA erstreckt , die dann die Chase-Methode ausführen und wir haben einfach Tier bestanden. Also, Tiere machen tatsächlich eine Menge von hier durchqueren. Wir geben Tieren eine Schnur hier. Dann geht es hier rein, dann geht es hier rein. Es wird dann hier überschrieben. Also statt Gazelle wird Maus sein und wir werden es einfach drucken. Also bewegen wir Daten ziemlich viel herum. Und das ist in Python sehr häufig. Es ist tatsächlich in allen klassenbasierten Sprachen üblich. So dass alles passiert, bevor es überhaupt bekommt, um Tier zu drucken wurde gefangen und dann druckt es Tier gefangen wurde. Nun, das ist etwas kniffliges Konzept, um den Kopf zu wickeln. Also, was ich möchte, dass Sie eine brandneue Schnittstellenklasse erstellen , die Sie Tier nur nennen können, ich möchte, dass Sie es von Grund auf neu schreiben. Genau wie eine gute Übung, weißt du. So erstellen Sie wie eine tierische Schnittstelle, machen Sie es etwas jagen und es macht einfach etwas. Dann dehnen Sie das Tier aus. Ich verlängerte meine Hauskatze zu sein. Ihr könnte ein Tiger, ein Gepard, ein Elefant sein. Es spielt keine Rolle. Stellen Sie einfach sicher, dass Sie es erweitern, überschreiben Sie diese Chase-Methode und verwenden Sie diese Superfunktion darin. Und denken Sie daran, super einfach zu sagen, oh, okay, das reicht von einem Klassentier. Das ist unsere Schnittstelle, die hier oben ist. Und dann wird es „Jagd“ sagen. Es spricht jetzt von diesem Tier, das super Jagd ist. Das ist diese Methode hier. Es wird dann drucken, ich jage ein Tier irgendeiner Art und führe dann einen Code darunter aus. Wir verwenden nur einfache Druckanweisungen, aber Sie könnten tatsächlich die richtige Python Logik verwenden, wenn Sie möchten. Sie könnten Zahlen hinzufügen. Sie können eine Website kratzen, Sie könnten so ziemlich alles tun. Wir bleiben nur bei etwas ziemlich Einfaches, um unsere Köpfe um die Idee der objektorientierten Programmierung zu wickeln. Sobald Sie das getan haben, gehen wir zur nächsten Lektion über , in der wir über Verteidiger Methoden sprechen. Und unter Methode lässt uns im Wesentlichen automatische Maßnahmen ergreifen. Und zum Beispiel hat unser Tier immer eine Pelzfarbe von Orange. Aber was, wenn wir einen Elefanten benutzen? Dann müssten wir hier die erste Farbe schreiben. Ich schätze, wird grau sein. Oder wir müssen die Hauskatze mitnehmen. Und wir werden sagen Katze, Pelzfarbe ist gleich grau. Und an diesem Punkt arbeiten wir nur mit Variablen. Das ist keine Möglichkeit, dein Leben zu leben. Wir könnten es auch hier hineinwerfen, wenn es instanziiert wird. Darüber reden wir in der nächsten Lektion. 9. OOP: Lassen Sie uns über Verteidiger Methoden sprechen. Und was ich hier sage, ist d, u und d sind Schuppen und was das bedeutet, ist doppelter Unterstrich. Und so sind dies magische Methoden, die mit der Klasse kommen. Wenn Sie bereits mit Klassen in einer anderen Sprache vertraut sind, werden Sie vertraut sein, größtenteils mit Dander-Methoden. Und wir sind magische Methoden, wie sie in einigen anderen Programmiersprachen genannt werden. Gehen wir also zurück zu unserem Tier hier, und lassen Sie uns eine Defender-Methode namens init erstellen. Und es beginnt mit DEF Unterstrich, Unterstrich IN IT, Unterstrich, Unterstrich. Es ist eine Methode, also nimmt es immer selbst als ersten Parameter. Und dann könnten wir ihm einen anderen Parameter geben. Und so könnte das für Farbe sein. Und dann kann es etwas tun. Und was uns das erlaubt, ist hier unten Code einzugeben, den wir erweitern. Wir können jetzt eine Fellfarbe hier reinsetzen und lassen, dass Farbe grau sein könnte, zum Beispiel. Derzeit wird dies nichts tun, aber wenn wir diesen Code ausführen, wir sehen, dass es keinen Fehler geben wird. Es gibt nur keinen Fehler, der auftauchen wird. Es wird schön, cool. Es tut genau das, was wir in der letzten Lektion getan haben. Aber was wir jetzt sagen, ist, dass wir ein positionsgefordertes Argument übergeben können. Lassen Sie uns voran und führen Sie dies ohne Grau da drin aus, obwohl init für Farbe akzeptiert. Und wir sehen, dass ein erforderliches Positionsargument fehlt. Jetzt lassen Sie uns eine Sekunde zurück. Was macht ein Strick hier? Init sagt einfach, wenn Sie diese Klasse instanziieren, wenn Sie diese Klasse aktivieren, auch wenn sie in einer anderen Klasse erweitert oder geerbt wird, müssen wir jetzt etwas übergeben und dies wird vor jeder anderen Funktion ausgeführt werden. Und wenn wir also Unterstrich, Unterstrich init verwenden, ist das, was dies sagt, eine Art von Parametern oder Parametern oder Argumenten einzugeben, und das wird automatisch ausgeführt, so dass wir dann nicht cat underscore, underscore init, grau, so etwas. Es wird es einfach automatisch für uns tun. Und so können wir hier grau eingeben. Und lasst uns voran und lasst uns demonstrieren, dass dies vor allen unseren anderen Funktionen ausgeführt wird. Drucken für Farbe ist für Unterstriche Farbe. Und lasst uns hier eine F-Saite verwenden. Und es steht für Farbe ist grau, dann ist es ausgeführt, ich jage eine Maus. Linda hingerichtete Maus wurde erwischt. Und so gibt es hier eine Reihenfolge von Operationen. Jetzt ist init bei weitem die häufigste, die Sie sehen werden. Und das bedeutet einfach, dass wir mit für Farbe arbeiten können. Jetzt standardmäßig wird, dass für eine Farbe orange sein wird. Lasst uns das loswerden. Wir brauchen das nicht mehr und wir können einfach, weil wir wissen, dass dies zuerst ausgeführt wird, können wir einfach sagen, Selbstpunkt für Farbe ist gleich für Farbe. Und was uns das erlaubt, ist dann self.view Farbe in jeder anderen Methode zu verwenden, die wir verwenden möchten, ob es in der Tierklasse ist oder in einer und geerbten Klasse oder einer erweiterten Klasse ist, es wird das automatisch für uns zuweisen. Also lasst uns diese Druckaussage loswerden. Und lassen Sie uns hier eine andere Methode erstellen. Def bekommen für Farbe selbst. Und lassen Sie uns einfach selbst Punkt für Farbe drucken. Nun, zum größten Teil, können Sie all diese ignorieren, weil wir sie nicht in diesem Video verwenden werden. Was wir tun werden, ist eine Klasse zu erstellen. Automatisch werfen in der Fellfarbe wird dann self.view Farbe zuweisen. Wir können dann, sobald wir diese Klasse instanziiert haben, können wir Cat Dot für Farbe bekommen. Dies ist eine Methode, daher braucht es Klammern. Und was das tun wird, ist, weil es keine Farbmethode in unserer Hauskatze gibt, aber es gibt eine auf der Tierschnittstelle wird dies ausführen, und es wird einfach ausführen, was Farbe wir hier setzen. Und als ein besseres Beispiel, schreiben wir das aus. Für die Farbe. Und das wird sagen, immer für Farbe. Grau. Sagt immer für ein farbiges Grau. Lassen Sie uns orange oder eine ACH oder lief. Und es wird sagen, für eine Farbe Orange zu bekommen. Und was daran schön ist, ist jetzt können wir die Super-Funktion verwenden. So können wir def in unserer erweiterten Klasse sagen. Selbst für Farbe super durch Init zu tun. Und das wird auch die erste Farbe nehmen. Und so was, wenn wir eine Hauskatze instanziieren, wie wir hier unten tun, werden wir diese Init-Funktion überschreiben, diese hier oben. Aber anstatt es einfach zu überschreiben, wollten wir eigentlich alles tun, um standardmäßig zu tun. Nehmen wir an, wir waren mit dieser Logik zufrieden. Wir wollen es nicht überschreiben, wir wollen es einfach erweitern. Also werden wir zulassen, dass self.view farbig zugewiesen wird. Und dann können wir, wenn wir etwas drucken wollten, wie Pelzfarbe wurde auf das Klassenobjekt gespeichert. Und dann könnten wir hier drinnen etwas anderes tun, wenn wir es wollten. Aber du wirst das auch sehr sehen. In Python auf professioneller Ebene wirst du immer sehen und init oder nicht immer, aber oft wirst du ein Netz sehen und manchmal sehen, wie wir es überschreiben. Und so überschreiben wir es hier und wir sagen eigentlich, wir wollen es überschreiben, aber wir wollen auch die reguläre Logik verwenden, die mit ihr kommt, was auch immer das sein mag. Und dann wollen wir vielleicht etwas anderes tun. Nehmen wir also an, wir wollten nicht unbedingt den Tiertyp jedes Mal überschreiben. Wir könnten hier oben sagen, Tiertyp ist gleich unbekannt. Und wir könnten diesen Tiertyp im Haus Katze selbst erzwingen . Alter Tiertyp ist gleich Host Kat. Lassen Sie uns voran und drucken Selbstpunkt-Tiertyp. Und an diesem Punkt verwenden wir jetzt init. Wir verwenden eine Dundee, wo Sie super reguläre Druckaussage verwenden. Wir haben gesehen, dass bereits eine Billion Male diese Tierart zwang , nicht in init weitergegeben zu werden. Es ist gar nicht da drin. Standardmäßig ist es unbekannt. Aber weil es eine Hauskatze ist, wollen wir das hart codieren. Wir wollen sagen, Hauskatze wird immer Hauskatze sein. Egal, was wir tun, es wird immer Host Got Es ist nicht änderbar. Und so werfen wir hier keine Hauskatze rein. Wir sagen einfach, instanziate Hauskatze und es wird eine Tierart Hauskatze da drin haben. Und es wird das ausdrucken und das ausführen. Und es sagt, für Farbe wurde in das Klassenobjekt gespeichert. Das ist genau hier oben. Es lief super da oben. Also tun wir, tun, tun, tun, tun. Wir wissen, dass self.view Farbe zugänglich ist und wir haben Zugriff auf diese in allen unseren Methoden. Dann sagten wir, der Tiertyp ist eine Hauskatze und drucken diese Tierart. Und so erste Print-Statement, Hauskatze ist die zweite Print-Statement. Wo ist es genau da, steht Hauskatze, und das passt hier unten Wort für Wort, Brief für Brief. Und dann bekommen wir die Pelzfarbe, und wir sagen, es ist orange. Und das kommt von hier wegen, wegen zu tun für Farbe bekommen. Und wir setzen das einfach für die Farbe in einem Strick. Das wird immer ziemlich fortgeschritten sein. Python, um ehrlich zu sein. Aber wir geben es hier rein und sagen Self.age für Farbe. Und dann greifen wir in einer Methode auf self.view Farbe zu. Nun, wenn du dir dieses Video ansiehst, Kopf kratzt, cool gehst. Ich verstehe keine einzige Sache, die gerade gesagt wurde. Ich möchte, dass du das tust, ist, das auszuprobieren. Ich möchte, dass Sie das ausprobieren, bis es Sinn macht, weil Sie das überall sehen werden, besonders in Python auf professioneller Ebene. Dies ist sehr wichtig, dass wir sowohl Super- als auch Dander-Methoden verstehen. Jetzt in dieser Lektion sprechen wir wirklich nur über die Dinner-Methode und die Methode im Netz als Zusammenfassung, bedeutet einfach, dies vor jeder anderen Methode innerhalb unserer Klasse auszuführen . Wir können es außer Kraft setzen. Wir können super darauf verwenden. Wir können alles tun, was wir wollen. Es ist wie eine normale Methode, wie sprechen. Es wird einfach zuerst automatisch ausgeführt und diese Parameter werden direkt in die Klasseninstanziierung geworfen. Und so sieht das jetzt viel wie eine Funktion mit einem Parameter aus. Der einzige Unterschied ist, dass dies eine Klasse ist, und dies wird automatisch für den Rest unserer Klasse zugänglich sein. Ich möchte, dass du es ausprobierst. Bitte verbringen Sie mindestens zehn Minuten damit und basteln Sie einfach mit einem sogar herum, auch wenn Sie es nicht zur Arbeit bringen können, ist es gut, dass zehn Minuten darauf zu verbringen. Und nur weil, wie Gehirne entworfen werden, auch wenn man damit kämpft, ist es okay. Es ist eine gute Praxis, egal. Geh weiter und gib dem einen Schuss für etwa zehn Minuten. Wenn Sie das nicht in etwa zehn Minuten zum Laufen bringen, fühlen Sie sich frei, weiterzumachen. Sie werden viel Zeit in der Zukunft haben, um mit Schuppen Methoden und super zu üben. 10. Fehler und Ausnahmen: Willkommen zurück. Hören wir auf, über Klassen zu reden. Können wir so etwas wie acht Lektionen zusammen verbringen, um über Klassen zu reden? Und ja, sie sind in Python wichtig, sie sind in Python extrem wichtig, aber es gibt eine andere Sache, die in fortgeschrittenem Python äußerst wichtig ist, und so können wir den Fehlerfluss verwalten. Also machen wir das Ding, versuchen etwas, außer noch etwas. Und was dies einfach tut, ist zu sagen, versuchen Sie einen Codeblock. Und wenn es einen Fehler gibt, tun Sie etwas anderes. Es ist also viel wie eine if else Aussage. Der einzige Unterschied ist, dass es nach Fehlern sucht. Und so werfen wir einen Blick auf eine einfache Tri-akzeptieren. Und so sieht die Syntax so aus. Wir werden ein Stück Code ausprobieren. Und so versuchen wir es. Die Summe ist gleich eins geteilt durch 0. Nun, wenn wir in unsere Python -Shell gehen und wir eine geteilt durch 0 machen, werden wir sehen, dass dies uns einen 0 Divisionsfehler gibt. Sie können nicht durch 0 dividieren. Mathematisch ist es nur eine dieser Rollen war nicht erlaubt, es zu tun. Was wir jetzt tun können, ist jede Art von Ausnahme zu akzeptieren. Und wir können sagen, dass insgesamt 0 sein wird. Drucken Sie die Gesamtsumme. Und das ist wirklich alles, was es zu einem Versuch und außer Block in Python gibt. Das Wichtigste, in, das Wichtigste hier ist, dass es ein Stück Code ausprobieren wird. Wenn es fehlschlägt, löst es eine Art Ausnahme aus, wie wir hier sehen, einen 0 Divisionsfehler. Es wird dann diese Codezeile und alles darunter überspringen. Dies wird nicht einfach ausgeführt, da das dann aus diesem Block herausspringt und dann versucht wird, die Ausnahme auszuführen. Und wenn wir diese Python Lektion neun ausführen, Fehler und Ausnahmen, habe ich übrigens keine Ausnahmen richtig buchstabiert , ich muss das beheben. Das wird mich verärgern. Ausnahmen besser. Wir sehen, dass die Summe hier unten 0 ist und das liegt daran, dass es 0 hier bekommt. Und als Beispiel, lasst uns das tun. Drucken Sie einen geteilt durch 0. Lassen Sie uns das nach oben bewegen. Und dann lassen Sie uns etwas darunter drucken. Das wird nicht auftauchen. Und lassen Sie uns noch einen ausdrucken. Ausnahme wurde abgefangen. Lass uns weitermachen und das noch ein Mal ausführen. Und es sagt, man versucht, eins geteilt durch 0. Dies wird nicht angezeigt, nicht in unserem Skript hier unten angezeigt. Und es besagt, dass Ausnahme abgefangen wurde. Nun zu diesem Zeitpunkt solltest du darüber nachdenken, oh, geez, wo werde ich je AS benutzen, hoffe ich , dass du diese Frage stellst und wenn du diese Fragen stellst, lass uns hier zu einem richtigen Beispiel übergehen. Was passiert, wenn wir den Benutzer um eine Eingabe bitten? Also fragen Sie nach einer Nummer. Wir sagen Input. Was ist eine Nummer? Dann stellen wir sicher, dass dies immer eine Nummer ist. Also werden wir sagen, num ist gleich, und wir werden es als Ganzzahl umwandeln. Egal, was jemand hier reinschreibt, es wird immer eine Nummer sein, es wird eine vollständige Nummer sein. Und drucken wir das aus, drucken Sie Num. Und wenn wir das ausführen, wie lautet die Nummer? Schreiben wir zehn. Und es hat nur zehn. Cool. Aber was passiert, wenn jemand keine Nummer schreibt? Nun, das wird immer noch in dieser Variablen gespeichert werden. Wir werden dann versuchen, diese Zahl als Ganzzahl umzuwandeln. Und was ist, wenn es keine ganze Zahl ist? Was ist, wenn wir Python 301 schreiben? Wir erhalten einen Wertfehler. Ungültiges Literal für int mit Basis zehn. Im Grunde, was das heißt, ist, dass es eine Zeichenfolge nicht in eine Zahl mit einer Basis von zehn verwandeln kann. Aber die TL, DR, die Kurzgeschichte hier ist, dass sie schlicht gescheitert ist. Wir konnten das nicht ausdrucken. Wir konnten damit nicht arbeiten. Also, was machen wir? Wir bitten um eine Nummer. Wir versuchen, das als Ganzzahl umzuwandeln. Wenn es nicht funktioniert, können wir außer allen Ausnahmen tun. Wir können dann sagen, dass die Nummer unbekannt sein wird und sie einfach ausdrucken. Und das wird uns erlauben, diese Nummer zu drucken, was sie vorher nicht getan hat, weil sie falsch war und es wird sagen unbekannt. Also lasst uns das mal versuchen. Was ist die Nummer? Python 301. Und es steht „unbekannt“. Wenn wir dies erneut ausführen, eine tatsächliche Zahl gegeben haben, sagt es, dass die Zahl zehn ist. Und was das tat, war, dass es sagte, oh, eigentlich, wir können seinen Wertfehler nicht verwalten. Python weiß einfach nicht, wie man eine Zeichenfolge richtig in eine Zahl verwandelt, auf eine Weise, die für Sie, den Programmierer, vorhersehbar ist. Und so wirft es eine Ausnahme aus. Wir fangen diese Ausnahme und wir überschreiben num unbekannt zu sein, und dann haben wir sie einfach ausgedruckt. Jetzt ist dies ein wirklich guter Anwendungsfall, denn was ist, wenn Sie versuchen, etwas zu tun und es nicht so ausfällt, wie Sie es erwarten. Nun möchte ich, dass du das tust, ist, das auszuprobieren. Sie können es entweder mit dem ersten Beispiel versuchen. Dieser hier oben, wo wir versucht haben, eins durch 0 zu teilen, funktioniert einfach nicht. Oder Sie können dieses Beispiel ausprobieren, das ich bevorzuge, weil es näher daran liegt, ein echtes Beispiel zu sein. Fragen Sie nach einer Eingabe. Versuchen Sie, diese Zahl als Ganzzahl umzuwandeln, fangen Sie die Ausnahme ab, überschreiben Sie die Zahl und drucken Sie sie dann aus. Und das nächste daran ist, dass wir in einfache Fehlerbehandlung und Fehlerfluss geraten. Und wieder, was daran wichtig ist, ist in unserem ersten Beispiel, wenn wir hier schauen, unser Code einfach gestorben. Es gab keine Möglichkeit, sich davon zu erholen. Und so ist alles, was wir mit einem Versuch machen außer, diesen Fehler anmutig zu fangen und zu verwalten, damit unser Skript nicht stirbt, so dass unser Code weiterhin so ausgeführt werden kann, wie er ausgeführt werden soll. Probieren Sie das aus. Es ist ein ziemlich einfaches Beispiel. Das sollte also nur ein paar Minuten dauern, wenn du bereit bist. Fahren Sie mit der nächsten Lektion fort, in der wir darüber sprechen, einige neue Ausnahmen abzufangen. Wir werden bestimmte Ausnahmen fangen. 11. Ausnahmen fangen: Lassen Sie uns darüber sprechen, bestimmte Ausnahmen zu fangen und herauszufinden , welche Ausnahme ausgelöst wird und wie wir mehrere Ausnahmen verwalten können. Also lassen Sie uns hier ein Beispiel erstellen, und dies wird nur aus dem letzten Beispiel neu erstellt werden. Wir werden sagen, dass eine Art von Zahl gleich der Eingabe ist, geben Sie eine Zahl ein. Dann können wir versuchen, diese Zahl in eine Zahl zu ändern, denn wenn wir nach Eingabe fragen, kommt sie immer als String zurück. Und wir können diese Ausnahme akzeptieren, indem wir alles tun, was wir wollen. Und sagen wir einfach, diese Nummer wird unbekannt sein. Und lassen Sie uns einfach die Nummer ausdrucken, wenn wir damit fertig sind. Gehen wir weiter und führen Sie dieses Skript aus. Das ist weniger als zehn. Geben Sie eine Zahl ein, zehn, druckt zehn, geben Sie eine Zahl ein. Python. Es steht, die Nummer ist unbekannt. Im ersten Beispiel haben wir eine Zahl zehn eingegeben, sie kam als Zeichenfolge zurück. Und int war in der Lage, dies in eine ganze Zahl zu schreiben. Das hat also perfekt geklappt. Im zweiten Beispiel haben wir Python eingegeben. Im Wesentlichen haben wir das getan. Jetzt können wir kein Wort in eine ganze Zahl verwandeln, funktioniert einfach nicht. Python weiß nicht, was Python, diese Zeichenfolge ist dagegen, als Zahl zu werden. Sowieso nicht vorhersehbar, also löst es eine Ausnahme aus. Jetzt, wenn die Ausnahme ausgelöst wird, sagten wir, dass die Zahl unbekannt sein wird. Woher wissen wir nun, was diese Ausnahme ist? Wir können herausfinden, was diese Ausnahme ist, indem wir außer Ausnahme eingeben, da E. Druckausnahme abgefangen wurde. Und dann können wir Art von E. drucken. Gehen wir weiter und lassen das noch mal laufen. Und geben wir Python als unsere Nummer ein. Und es besagt, dass Ausnahme Klasse ValueError abgefangen wurde, und es ist unbekannt. Also, was wir jetzt tun können, ist, dass wir spezifisch einen Wertefehler akzeptieren können. So können wir hier eine weitere Ausnahme hinzufügen, außer einem Wertfehler. Drucknummer war keine gültige Nummer. Und lassen Sie uns das ausprobieren. Dies hat mehrere Ausnahmen hier. Also lassen Sie uns Python eine Zahl hat, und es sagt, Python war keine gültige Zahl. Und dann hat es hier unten gedruckt. Python ist das, was wir geschrieben haben. Es konnte nicht in eine Zahl oder eine ganze Zahl umgewandelt werden. Dann sagten wir, was auch immer dieser Wert war, ist keine gültige Zahl. Jetzt ist das viel wie eine if else, if, else if - Anweisung. Also wird es so etwas wie eine if-Anweisung versuchen. Wenn es dann diesen speziellen Fehler abfängt, wird hier keine andere Ausnahme ausgeführt. Es wird nur diese eine bestimmte Ausnahme ausführen. Und so haben wir jetzt eine Möglichkeit, mit einem bestimmten Wertfehler umzugehen. Was, wenn wir dann etwas mit dieser Nummer machen wollten? Nehmen wir an, num wurde perfekt akzeptiert, senkt die Zahl zehn, und dann wollten wir es durch eine andere Zahl teilen. Lassen Sie uns also eine zweite Eingabe erstellen. Wir nennen es num, um eine zweite Nummer einzugeben. Und wir werden diese teilen. Dann werden wir sagen, num zwei ist gleich int num zwei. Und die Summe wird NUM geteilt durch m2 sein. Nun, wenn num1 und num2 beide in eine ganze Zahl umgewandelt werden können. Die Summe wird laufen. Wenn einer von ihnen jedoch nicht in eine ganze Zahl umgewandelt werden kann, wird es dann einen Wertefehler auslösen. Wir werden dann diesen Wertefehler mit einer Ausnahme abfangen und drucken, welche Nummer keine gültige Zahl war. Und in der Tat ist es vielleicht nicht taub. Es könnte taub sein. Also lassen Sie uns sagen, taub oder taub waren nicht gültige Zahlen. Und lassen Sie uns das ausprobieren. Geben Sie eine Zahl ein. Lass uns 100 machen. Und deine zweite Nummer, zehn. Ok? Keine Fehler. Das sind gute Neuigkeiten. Was ist, wenn wir die erste Zahl 100 und die zweite Zahl 0 ist. Nun, in der letzten Lektion haben wir versucht, durch 0 zu teilen. können wir nicht tun. Und so können wir sehen, dass die Ausnahme abgefangen wurde. Es hat keinen Wertfehler ausgeführt, da kein Wertfehler auf uns geworfen wurde. Also können wir diesen Fehler nicht erfassen. Aber es gab einen anderen Fehler oder eine andere Ausnahme, die auf uns geworfen wurde, dass wir dann können , außer dann druckt Ausnahme wurde abgefangen. Drucken Sie den Typ der Ausnahme. Und wir haben mit einer Nummer gearbeitet, die wir eigentlich nicht mehr tun müssen. Vielleicht möchten wir stattdessen mit Summen arbeiten. Und ich weiß es nicht. Jetzt, wenn es Typ II druckt, heißt es Klasse ZeroDivisionError. Was wir tun können, ist das auch von alleine zu fangen. Wir können sagen, außer 0, Divisionsfehler, Drucknummern konnten nicht geteilt werden div ich tat. Und lasst uns das loswerden. Versuchen wir es noch einmal. Geben Sie eine Zahl zehn und ihre zweite Zahl 0 ein, und es besagt, dass Zahlen nicht geteilt werden können. Diesmal wird kein Wertefehler ausgelöst. Das bedeutet, beide waren in der Lage, beide Zahlen, num1 und num2 wurden beide in ganze Zahlen umgewandelt. Es gab also keinen Wertefehler, der abgefangen werden konnte. Also hat es das übersprungen. Aber dann sagte es insgesamt gleich taub eins geteilt durch num2, zehn geteilt durch 0. Nun, Sie können alles durch 0 teilen, wir erhalten einen 0 Divisionsfehler. Also sagten wir, okay, versuchen Sie, einen Wertefehler zu fangen, wenn er existiert . Wenn nicht, versuchen wir, den ZeroDivisionError zu fangen. Wir haben dann diesen ZeroDivisionError erwischt und etwas anderes ausgedruckt. Und da dieser ausgeführt wurde, die generische Ausnahme unten nicht ausgeführt, dieser Code wurde einfach übersprungen. Python wird also eine dieser Ausnahmen auswählen, je nachdem, welche die richtige ist. Und es wird eine dieser Wege des Codes ausführen. Es wird immer versuchen, diesen Code auszuführen. Und wenn es irgendwelche Fehler gibt, wird es überprüfen, ob es ein Wertfehler war. Überprüfen Sie, ob es eine 0 Divisionsfehlerüberprüfung war, um zu sehen, ob es eine allgemeine breite Ausnahme war, die wir nicht explizit abfangen. Und so fangen wir zu diesem Zeitpunkt einen Wertefehler ab, 0 Divisionsfehler. Oder wenn es eine andere Luft gibt, die uns unbekannt ist, können wir damit arbeiten. Jetzt sage ich versuchen und fangen, weil ich auch aus anderen Programmiersprachen komme. In Python sagen wir versuchen, außer es ist genau dasselbe, nur ein anderes Schlüsselwort. Und Sie werden es versuchen sehen, außer überall in professionellem Python. Und der Grund dafür ist, dass wir etwas ausprobieren wollen. Und wenn es einen Fehler gibt, wenn wir nicht versuchen, diesen Fehler zu akzeptieren, wird unser Code einfach sterben. Wir wollen nicht, dass das passiert. Wir wollen, dass es weiterführt, wir wollen, dass es weitergeht und weitergeht. Und so fangen wir anmutig jeden dieser Fehler ein, oder wir fangen im Großen und Ganzen jeden Fehler, jede Ausnahme und arbeiten damit. Und das bedeutet nur, dass unser Code weiter funktionieren kann. Es wird uns nicht irrtümern. Und das bedeutet, dass unser ganzer Code hier unten immer noch ausgeführt wird. Und das sind gute Neuigkeiten. Denn was, wenn Sie ein Programm wie Googles Web-Scraping Bot bauen, und es wird zu einer Website und es versucht, eine bestimmte E-Mail-Adresse zu kratzen und die Überprüfung der E-Mail-Adresse. Und vielleicht gibt es diese E-Mail-Adresse nicht wirklich. So wie es ist, ist es vorbei. Wir dachten, es wäre keine E-Mail-Adresse, aber es ist keine echte E-Mail-Adresse. Nun, wenn Google Boston diesen Fehler nicht fangen würde, würde es einfach sterben und dann müsste jemand gehen und ihn neu starten. Und Sie würden jemanden bei Google die ganze Zeit nur tippen Python Scrape Internet, Python Scrape Internet, Python Scrape Internet, Python Stream Internet. Und unsere Aufgabe als Programmierer ist es, uns selbst aus einem Job zu automatisieren. Und so wird es dann vielleicht versuchen, eine E-Mail-Adresse oder eine andere Website zu bekommen. Es wird dann versuchen, etwas zu tun. Und wenn es nicht kann, überspringt es vielleicht. Vielleicht versucht es einen anderen Code. Vielleicht versucht es etwas anderes zu tun. Und dann haben wir niemanden am anderen Ende eines Computers, der Python tippt. Scrape internet dot py, Python kratzen internet dot py, Python kratzen internet dot py. Jedes Mal in Arizona, es geht einfach automatisch um es für sie zu handhaben. Und das ist die Macht hinter Versuch und außer, dass Sie jede Art von Fehler akzeptieren können. Diese sind gerade Schlüsselwortfehler, die genau von Python geworfen wurden. Wir können auch unsere eigenen schaffen, wenn wir wollten. Und dann können wir einen Fehler anmutig behandeln. Und das bedeutet, dass unser Code für immer ohne Probleme ausgeführt wird. Nun, was ich möchte, dass Sie tun, ich möchte, dass Sie das ausprobieren, eine Art Beispiel schreiben, und Sie können mein Beispiel stehlen, wenn Sie möchten, wo Sie Code ausprobieren und Sie außer einem Fehler, einem bestimmten Fehlertyp. Dann akzeptieren Sie einen anderen Fehlertyp. Und dann akzeptieren Sie nur eine allgemeine Bereiche. Stellen Sie auch sicher, dass Sie den Typ E ausdrucken, so dass Sie später damit umgehen können. Gehen Sie weiter und schreiben Sie dieses komplexe Tri außer Block, und wenn Sie bereit sind, gehen wir auf die nächste Lektion. Viel Glück, und wir sehen uns dort drüben. 12. Was sind Dekoratoren und wie du eine Gestaltung erstellst: Lass uns über Dekorateure reden. Wenn wir nun zu einer bestimmten Lektion zurückkehren, ist dies eine dieser Methoden. Ja, wir können dieses Ding einen Dekorateur nennen lassen. Und ein Dekorateur ist einfach eine Funktion, die sich um eine andere Funktion wickelt. Und in dieser Lektion werden wir unseren eigenen Python Dekorator erstellen. Lassen Sie uns also davon ausgehen und eine neue Python Datei erstellen. Wir nennen es weniger als 11. Deco lesen Touren, die Korridor. Typischerweise haben wir eine Art von Funktion, MyFunc. Und das wird einfach drucken, mein Name ist Caleb. Dann können wir myfunc so ausführen. Das ist Python, Eins-zu-Eins-Zeug hier. Cool. Das funktioniert sehr fade, sehr langweilig. Das ist nicht in einer Klasse. Das ist nicht in einem Versuch. Fangen Sie uns macht nichts Neues. Aber sagen wir, wir wollten einen Dekorateur schreiben, der normalerweise so aussieht. Deck oder ein Tor hat das at Symbol und dann den Namen einer Funktion. Und alles, was tun wird, ist eine Funktion namens Decorator auszuführen und diese Funktion darin zu werfen , so dass wir etwas vorher oder danach automatisch ausführen können. Also lassen Sie uns voran und erstellen Sie einen Dekorateur. Und damit wir meinen Dekorateur erschaffen können. Und das wird eine Funktion übernehmen, genau wie myfunc. Myfunc wird dort als ganze Funktion geworfen werden, nicht als Variable, sondern hat eine Funktion. Also übergeben wir Funktionen an dieser Stelle in Funktionen. Dann können wir eine Art Wrapper erstellen und wir sehen in der Regel das Wort Rapper. Das ist sehr, sehr häufig. Drucken. Tun Sie hier etwas. Dann können wir diese Funktion ausführen, was auch immer das ist, drucken Originalfunktion ist beendet. Und lassen Sie uns einfach den Rapper zurückgeben. Und so ist dies eine Funktion innerhalb einer Funktion. Wir haben das tatsächlich gesehen, ich denke, es war in Python 201, wo wir eine Funktion innerhalb einer Funktion setzen können. Und das war im Wesentlichen ein Dekorateur zu diesem Zeitpunkt. Und was wir hier sagen, ist, dass mein Dekorateur eine Funktion als einzigen Parameter annehmen wird. Es wird dann eine neue Funktion namens Rapper registrieren, wird etwas tun, diese ursprüngliche Funktion ausführen. Wir sprechen über seltsames Scoping an diesem Punkt in JavaScript, das wird als Schließung bezeichnet. Führen Sie die Funktion aus, was auch immer diese Funktion ist, und drucken Sie dann eine andere Anweisung. Schließlich geben wir den Wrapper zurück. Jetzt gibt es zwei Möglichkeiten, eine Funktion zu dekorieren. Lass uns das hier oben loswerden, denn wir wissen, dass MyFunc einfach meinen Namen Caleb ausdrucken wird. Wir könnten diese neue Funktion nennen, ist meinem Dekorateur gleich. Und weil es eine Funktion braucht, werfen wir MyFunc ein. Beachten Sie, dass wir hier nicht die Klammern haben. Wir führen MyFunc nicht aus, wo es einfach als Funktion von selbst hineinwirft, nicht als ausgeführte Funktion, sondern als das Funktionsobjekt. Dann können wir neue func sagen, dies als seine eigene Funktion ausführen. Probieren wir das aus. Und da steht, tun Sie hier etwas. Mein Name ist Caleb, die ursprüngliche Funktion ist beendet. Und wirklich das ist alles, was es für einen Dekorateur gibt. Jetzt gehen wir weiter und tun dies auf eine pythonischere Weise und modernere drahtlose. Schneiden Sie das und bewegen wir es nach oben. Und lassen Sie uns myfunc mit meinem Dekorateur dekorieren. Und weil wir diese Art von Syntax verwenden, müssen wir das hier nicht mehr einbinden. Wir können einfach meinen Func schreiben. Lasst uns das loswerden. Und lasst uns myfunc eingeben. Myfunc, meine Funktion hier ist mit meinem Dekorateur dekoriert. Es wird das automatisch passieren. Das wird Wrapper registrieren, eine Sache drucken, etwas tun, drucken Sie die ursprüngliche Funktion ist beendet. Bringen Sie den Wrapper zurück. Gehen wir weiter und sparen, und lassen Sie uns das laufen. Und es funktioniert genauso, jetzt ist das sehr pythonisch. Ich hätte das gerne besser. Du wirst, du wirst diesen Weg wahrscheinlich öfter sehen als nicht. Und all dies ist, ist genau das gleiche wie diese erste Funktion. Nicht die Funktion, sondern das erste Beispiel. Und alles, was wir sagen, ist hey, benutze das at Symbol hier als Dekorateur. Wickeln Sie meinen Dekorateur um meine Funktion. Also wird es meinen Dekorateur irgendwo drinnen ausführen. Es wird die ursprüngliche Funktion ausführen. Und dann können wir etwas davor oder danach tun oder nichts, wenn wir nicht wollen, wir können buchstäblich nichts tun. Ich meine, das wäre sinnlos von Dekorateur, nichts zu tun. Aber wir könnten etwas davor und danach tun, was uns wirklich, wirklich mächtig macht. Warum sollten wir das jemals tun? Nun, weil wir manchmal eine Funktion haben und uns einfach gefällt, was es tut. Und wir wollen einfach nur ein wenig zusätzliche Logik hinzufügen, ein wenig zusätzliche Funktionalität. Und so wollen wir nicht unbedingt immer unsere ursprüngliche Funktion ändern, aber vielleicht wollen wir diese ursprüngliche Funktion übernehmen und erweitern. Es ist also ähnlich wie die Klassenvererbung, wo wir eine reguläre Klasse genommen haben und sie dann in eine neue Klasse geerbt oder in eine neue Klasse erweitert haben. Dies nimmt eine Funktion an und erweitert sie mit meinem Dekorateur. Jetzt ist dies ein sehr, sehr, sehr einfacher Dekorateur, aber es bekommt das Beispiel über. Also, was ich möchte, dass Sie tun, ist, dass Sie einen Dekorateur erstellen und ich möchte, dass Sie ihn auf diese Weise verwenden. Verwenden Sie es nicht auf funktionsbasierte Weise, die ursprüngliche Art und Weise, die Sie von Zeit zu Zeit sehen werden. Aber das ist der pythonische Weg. Erstellen Sie also eine Funktion, nennen Sie es meinen Dekorator. Sein einziges Argument wird die Funktion selbst sein, nicht die ausführbare Funktion, sondern nur der Name der Funktion. Und so haben wir im Grunde einen Funktionsnamen als Variable hier in neu zugeteilt. Innerhalb dessen müssen Sie eine nother-Funktion registrieren. Tun Sie etwas, führen Sie diese ursprüngliche Funktion aus, machen Sie eine zweite Sache und geben Sie diese interne Funktion zurück. So haben wir Funktionen innerhalb von Funktionen. Sie möchten diese interne Funktion zurückgeben und dann eine andere Funktion erstellen, nur eine normale. Es könnte eine Druckanweisung sein, es könnte eine tatsächliche Logik haben. Ich könnte alles tun, was du willst, und es bei meinem Dekorateur dekorieren. Das heißt, es ist ein Dekorateur. Mein Deko-Rater stimmt einfach mit dem Namen der Dekorator-Funktion überein. Gehen Sie weiter und führen Sie myfunc mit und ohne den Dekorateur aus. Zum Beispiel, wenn ich den Dekorateur loswerde und das ausführen, druckt es eine Zeile. Wenn ich den Dekorateur zurücklege und das erneut renne, druckt er drei Zeilen. Ich möchte, dass du das machst und eine Chance gibst. Es ist nicht allzu oft, dass Sie tatsächlich Ihre eigenen Dekorateure erstellen werden. Du wirst sie mehr oder weniger benutzen. Aber selbst die Möglichkeit, dass Sie wie Open Source oder wirklich fortgeschrittenes Python bekommen, dann werden Sie Ihre eigenen Dekorateure erstellen. Und es ist wirklich wichtig zu wissen, wie diese funktionieren und wie die Dinge passieren. Zum Beispiel haben wir etwas vor unserer Funktion passiert, nach unserer Funktion. Probieren Sie das aus, und wenn Sie bereit sind, gehen wir zu unserer nächsten Lektion. 13. Was sind die Generatoren und wie du eine: Willkommen zurück. Lassen Sie uns über Generatoren sprechen. Also ein Generator ist, ist wirklich, wirklich interessant Konzept. Also zum Beispiel, wenn Sie eine Liste haben, so LST ist gleich 123123 sind gehen, um im Speicher zu jeder Zeit gespeichert werden. Nehmen wir an, diese Liste hat 10 Millionen Zahlen darin, die, wenn Sie in Data Science einsteigen, eine 10 Millionen Zahlen darin haben könnte und Sie wollen nicht all das im Speicher speichern , weil Sie dann den RAM auf Ihrem -Computer. Und Ihr Computer wird es brauchen, im Grunde wird Ihr Computer wirklich teuer werden, wenn Sie nur Hardware darauf werfen. Ein Generator ist eine Software-Art zu sagen, etwas mit der ersten Zahl zu tun, dann tun Sie etwas mit der zweiten Zahl, dann tun Sie etwas mit der dritten Zahl, und es ist ihm egal, was davor oder danach kam. Jetzt wird ein Generator typischerweise in eine Art von Funktion gesetzt. Also könnten wir def myfunc für eine Art von Zahl in einem Bereich sagen, reicht bereits einen Generator in Python drei. So 14, zum Beispiel, drucken Sie num. Und wenn wir myfunc, Python Lektion 12 ausführen , wird das nichts tun, weil es in der Funktion ist. Versuchen wir es noch einmal. Da gehen wir. Es steht 012345678910111213. Ok. Nicht schlecht. Weißt du, wir arbeiten nur mit 14 Zahlen. Dies ist technisch kein Generator. Aber sagen wir, wir wollten etwas Großes tun, wie machen dies immer alle diese Zahlen an den Exponenten von sich selbst zurückgeben. Also würden wir taub zu dem Exponenten von Num tun. So zum Beispiel, zehn zur Macht 1013 zur Macht von 13. Und statt der Rückkehr, die nur einmal ausgeführt wird, lassen Sie uns das ausprobieren. Das wird nicht funktionieren. Lassen Sie uns tun total ist gleich MyFunc und drucken Sie dann die Summe. Auftaucht mit nur einer Nummer. Was, wenn wir mehrere Nummern wollten? Was ist, wenn wir mit wirklich großen Zahlen arbeiten? Einer sagte, wir könnten das Schlüsselwort namens Ausbeute verwenden. Und was Ausbeute tun wird, ist es wird sagen, dass diese Funktion jetzt nicht mehr nur eine Funktion einen Generator trifft, wird jede Zahl von 0 bis 13 durchlaufen und wird ergeben, was auch immer diese Zahl ist. Zwei der Exponent von sich selbst. Jetzt gehen wir weiter und drucken das aus. Und wir sehen, wenn wir meinen Func drucken, ist es ein Generator. Jetzt noch einmal, denken Sie daran, Generator wird nur eine Nummer nach dem anderen arbeiten. Also in unserem ersten Beispiel, wo es nur eine Liste war, weiß es über die Zahlen 0 bis 13. Und technisch können wir auf diese Nummern zugreifen. Aber wenn wir mit wirklich großen Zahlen arbeiten, wollen wir das nicht. Oder wenn wir mit wirklich großen Datensätzen arbeiten, wollen wir einen Generator verwenden. Es geht also nur um die eigentliche Aufgabe. Es geht nicht um irgendetwas, was vorher kam oder danach kommt. Und die Idee hier ist, dass du bist, du schreibst jetzt Code, das ist Speicherleistung. Also, wenn es 14 mit der Macht von 14 tut, es kümmert sich nicht um 13 bis zur Macht von 13, es kümmert sich nicht um 12 bis zur Macht von 12. Es wird das einfach einmal tun. Und wenn Sie versuchen, auf diese Nummer zuzugreifen, dann wird es die Mathematik machen. Also ist es irgendwie faul. Es wird die Mathematik nur machen, wenn es gefordert wird. Es wird es nicht direkt von der Fledermaus machen. Es wird nicht versuchen, all dies im Speicher zu speichern. Das einzige, was tun wird, ist 14 bis zur Macht 14 im Speicher zu speichern und dann zur nächsten Nummer zu wechseln. Es wird zu tun 15, um die Macht 15 und völlig vergessen über 14. Jetzt in typischem Python, nehmen wir an, Sie machen Python für das Web , Sie werden nicht viel sehen, aber in der Datenwissenschaft werden Sie es viel sehen, viel. Und es ist sehr wichtig, dass wir wissen, wie das funktioniert. Lassen Sie uns das von MyFunc in meinen Generator umbenennen. Und lasst uns das loswerden. Und jetzt können wir für Num sagen, lasst uns sie nicht benutzen. Sagen wir Big Num in meinem Generator. Und dann sahen wir hier unten, dass dies ein Generatorobjekt war. Wir können diese Zahlen durchlaufen, und wir können sie ausdrucken, um Big Num zu drucken. Und lassen Sie uns voran gehen und das ausführen. Nun, das ist so schnell mit Python. Wir werden nicht einmal bemerken, was los ist. Aber was es tat, war die erste Iteration, dann die zweite Iteration zur dritten Iteration, dann die vierte, fünfte bis zur letzten Iteration. Und Sie bemerken, wie diese Zahlen ziemlich groß werden. Es ist eigentlich egal, was davor oder danach kam. Und was wichtig ist, ist, dass wir mit wirklich großen Zahlen tun können. Also lassen Sie uns wirklich große Zahl wie 50 auf die Macht von 50. Und mal sehen, ob dies möglicherweise meinen Computer abstürzt. Sieh dir das an. Es war in der Lage, all das ganz leicht zu machen. Also schätze ich, ich war besorgt darüber, dass es meinen Computer ohne Grund abstürzt. Aber es war in der Lage, all diese Logik ganz einfach zu machen. Und so ist die Idee, wissen Sie, als es auf 49 kam, hat es nur auf 49 funktioniert. Es musste sich nicht erinnern, was 4993, wo es sich nicht darum kümmern musste, was als nächstes kommt. Es sagte einfach, wenn es auf 49 war. Arbeit an 49 an die Macht 49 gibt uns diese massive Zahl hier. Und nichts davon muss im Speicher gespeichert werden. Wenn wir eine Liste hätten, müssten wir alle diese Nummern im Speicher speichern. Nun, Zahlen sind klein, um im Speicher zu speichern, so ist es nicht wirklich so groß von einer Sache. Aber wenn Sie es mit riesigen Datensätzen zu tun haben, vor allem in Sachen Machine Learning oder Data Science. Sie möchten die Ausbeute verwenden, um sicherzustellen, dass Ihr Computer nicht ausgeht. Nun, im Grunde denken Macht, es wird nicht der RAM ausgehen. Nun, wenn Sie jemals Zugang zu diesen haben wollten, sagen wir, wir haben gesagt, lasst uns das einfach aussagen. Und sagen wir, wir wollten all diese Zahlen bekommen. Also sind alle Zahlen gleich meinem Generator. Und dann wollten wir diese Zahlen aus irgendeinem Grund drucken. Alle Zahlen. Gehen wir weiter und führen das noch ein Mal aus. Und es gibt uns nichts. Es gibt uns diese Zahlen nicht. Stattdessen gibt es ein Generatorobjekt zurück. Wenn wir nun Zugang zu diesen Zahlen haben wollten, können wir alles machen, was dieser Generator die ganze Sache zurückgeben wird. All diese Zahlen. können wir in eine Liste setzen. Lassen Sie uns voran und führen Sie dies wollte als Liste gegossen werden. Und wir sehen all diese riesigen Zahlen hier drin. Nun zu diesem Zeitpunkt, wenn wir dies als eine Liste werfen, dieser Generator, was auch immer er zurückgibt, all diese Zahlen sind, was es zurückgeben wird, wird in dieser Variablen gespeichert werden, die alle Zahlen genannt werden. Also jetzt speichern wir das eigentlich für später. Während bei nur einem regulären Generator diese Zahlen in unserem vorherigen Beispiel nicht für später gespeichert wurden. Wir machen nur etwas mit diesen Zahlen eins nach dem anderen. Aber mit einer Liste. Wir sagten, ja, okay, verarbeiten alle diese eine nach dem anderen. Und dann gehen all diese gespeicherten Werte aus diesem Yield-Schlüsselwort in diese Liste. Und diese Liste wird im Speicher sortiert werden damit wir mit dieser Liste auf der Straße arbeiten können. Nun, warum wir das tun würden, oder wo wir das tun würden, ist, wenn wir mit großen Zahlen arbeiten, sind eine Menge Verarbeitung. Es kann eine Menge von der Verarbeitung einer Aufgabe nach dem anderen erledigen. Es muss sich keine Sorgen um all die anderen Sachen davor oder danach machen. Und dann können wir nur die Antwort in eine Liste setzen. Also, während der Computer 37 mit der Leistung von 37 macht, kümmern wir uns nicht um diese Verarbeitung. Also im Grunde sagen wir, das ist ein bisschen mehr, was ist das Wort, nach dem ich hier suche? Temporär. Es ist etwas vorübergehender. Und so oder Einweg fügt ein besseres Wort. Es wird eine Sache tun. Und wenn es fertig ist, wird es es in dieses Yield-Schlüsselwort werfen. Wenn es zum nächsten geht, wird dieses In-Memory entsorgen. Es ist egal, was der letzte war. Es kümmert sich nur um die aktuelle Aufgabe. Während bei einer Liste oder einem anderen Datentyp, sobald wir in einer Variablen gespeichert sind, es tatsächlich in dieser Variablen gespeichert wird. Also, um einen Generator zu verwenden und ihn dann in einer Variablen zu speichern. Nicht wirklich die richtige Art, einen Dekorateur zu verwenden und nicht einen Dekorateur, sondern einen Generator. Das ist mehr oder weniger, was wir verwenden werden. Also wirklich ist es eine Möglichkeit, irgendeine Art von Verarbeitung durchzuführen und sie dann wegzuwerfen. Also werden wir sagen, für jede große Zahl in meinem Generator ausgedruckt, und es wird eine mit der Macht von 12, der Macht von 23, mit der Macht von drei, den ganzen Weg bis zu 50 bis zur Macht von 50. Und es wird einen nach dem anderen ausdrucken. Es wird nicht alles im Gedächtnis speichern. Es wird einfach nur eine Sache nach dem anderen tun. Es ist also wirklich gut für Einweg-Code auf großen Datensätzen. Jetzt wieder, wenn Sie in die Web-Entwicklung einsteigen, Sie nicht so oft Generatoren sehen, um ehrlich zu sein. Aber wenn Sie sich mit Data Science oder maschinellem Lernen beschäftigen, werden Sie dies überall sehen und ein sehr, sehr wichtiges Konzept in der Python Programmierung. Und in der Tat können wir hier noch ein Beispiel machen. Lassen Sie uns Kasse Bereich. So können wir sagen, gesamt ist gleich Bereich von 50 und drucken insgesamt. Und wir werden sehen, dass dies auch einen Dekorateur zurückgibt. Und tatsächlich hat es keinen Dekorateur zurückgegeben. Es gab den Funktionsbereich 0 bis 50 zurück. Es ist jedoch ein Generator hinter den Kulissen. Und was wir nicht sehen, ist, dass es nicht durchläuft und eine Liste von 150 erstellt. Was, wenn wir Bereich 50 auflisten? Wir erhalten jetzt eine Liste von 0 bis 49 oder 50 Zahlen insgesamt. Und so funktioniert es genauso wie unser erfundener Generator. Jetzt ist eine Sache, die Sie beachten müssen, wenn Sie einen der Generatoren hier drinnen iterieren, wird es nicht mehr für ihn funktionieren. Also lasst uns voran gehen und das kommentieren. Lassen Sie uns dieses Beispiel hier unten loswerden, und lassen Sie uns das Skript erneut ausführen. Und es sollte alle Zahlen drucken. Aber dann wird das Drucken überhaupt nicht funktionieren, weil da nichts drin sein wird. Der Generator hat sich erschöpft. Es ist eine einzige und erledigte Art von Sache. Und eigentlich schaue ich mir diesen Code an und er wird es nicht tun, weil er für jeden von ihnen einen neuen Generator erstellen wird. Lass uns voran gehen und das in eine Variable werfen. Also ist mein var Generator gleich meinem Generator. Und tauschen wir das hier draußen gegen mein Var Gen aus. Und wir können sehen, dass es all diese Zahlen druckt, aber es tut nichts hier drin. Dieser Generator, diese Funktion, werfen wir dies in eine Variable. Wir sagten dann, hey, führen Sie das aus. So sagt es man zur Macht 12 zur Macht 23 zur Macht 349 zur Macht von 49, den Weg durch all diese Zahlen in einer Variablen sortiert, dass Generator als erschöpft selbst. Wenn wir also wieder versuchen, auf den Generator zuzugreifen, werden wir sehen, dass er nichts druckt. Und alles, was es tat, war, unsere riesige Liste hier zu drucken. Aber es hat nicht eine nach dem anderen gedruckt, irgendwie wie die Pyramidenform, die wir hier oben gesehen haben. Es wird keine von denen drucken, weil ich Generator fertig ist. Es ist eine Eins-und Geschehene Sache. Wenn wir also wieder auf den Generator zugreifen wollten, müssen wir auf seltsam formulierte Weise wieder auf diesen Generator zugreifen. Und so machen wir es so. Wir sagten, nennen Sie es hier oben und rufen Sie es wieder hier unten an. Und dieses Mal werden wir verschiedene Ergebnisse sehen. Wir werden all diese großen Zahlen sehen. Und darüber werden wir diese Liste von Zahlen sehen. Und so eine Sache, die man mit dem Generator im Auge behalten muss, ist es eine einmalige Sache. Sobald Sie den Generator ausgeschöpft haben, ist es fertig. Sie müssen eine neue erstellen oder keine neue erstellen. Das ist eine schlechte Formulierung, aber Sie müssen einen neuen Generator instanziieren oder generieren. Sobald Sie diesen neuen Generator erstellt haben, können Sie mit ihm alles tun, was Sie wollen. Aber wenn Sie versuchen, diesen Generator mehr als einmal auszuführen, wenn es zum Beispiel in einer Variablen gespeichert ist, wird das erste Mal erschöpft sein und kümmert sich nur um die Durchführung einmal. Es ist nicht wie eine Funktion, eine Funktion und Sie können immer und immer wieder verwenden. Ein Generator ist ein Ein-und-Typ-Sache. 14. Pipenvs: Andere Arten von virtuellen Umgebung: In Ordnung, reden wir über Pip. Pip-Umgebungen. Ich sage, Pip env. Und in Python 1:1 oder Python 201 kann ich mich nicht erinnern. Wir benutzten einen Python-Befehl namens Python dash m dot v. Und dann kamen wir in eine virtuelle Umgebung und dies schuf eine virtuelle Umgebung für uns. Es gibt eine andere Möglichkeit, dies zu tun, und es gibt mehrere verschiedene Möglichkeiten, eine virtuelle Umgebung zu erstellen. Aber ein anderer gängiger Weg ist ein Pip env. Und ich persönlich mag Pip Enden, weil sie nett und einfach sind. Und so machen wir das hier in unserer Kommandozeile. Das macht das größer. Lassen Sie uns diese Sidebar hier loswerden. Und so bin ich in meinem Python 301-Ordner. Vor allem, was ich tun möchte, ist pip installieren Pip env. Und aufgrund, aufgrund zu tun, wird es Pip env sammeln. Und heute habe ich PIP nth. Nun, was ich tun kann, ist Pip env zu tippen. Und es gibt mir eine Liste von Befehlen. Überprüfen Sie saubere Grafik, installieren, sperren, öffnen Sie ausführen Skripte sinken, deinstallieren und aktualisieren. Dies ist viel einfacher als das Schreiben von Python Bindestrich m v, m dot v. Stattdessen, was wir tun können, ist Typ. Und ich werde das abklären. Wir können Pip env install eingeben, und dies wird eine PIP-Umgebung für uns erstellen. Also lasst uns einfach pip installieren. Aufgrund, aufgrund aufgrund tut eine Sache. Und es sagt, um Ihre Projekte virtuelle End Run Pip, Shell, Pip Shell zu aktivieren. Und jetzt befinden wir uns in einer PIP-Umgebung. Sie können sehen, dass ich in einem bin, weil es Klammern hier drüben hat. Lass uns voran gehen und Python dash v eingeben und wir werden sehen, dass ich Python 3.9, Kuckuck, Kuckuck verwende. Das ist schön. Lassen Sie uns hier raus, indem Sie Control D treffen also CTR plus D abgebrochen mit Control C, Control D, das unsere Pip env verlässt. Wenn ich jetzt wieder reingehen möchte, mache ich Pip N Shell und ich bin drin, dann kann ich pip installieren. Nehmen wir an, ich wollte Django installieren, ist gleich 2, etwas. Doo-Doo-Doo-Doo. Führen Sie es einfach und Feststoffe erhalten 2.2.17. Pip Show. Django. Und ich habe zwei Punkt-zu-Punkt-siebzehn. Jetzt weiß ich auf meinem Computer, dass ich diese Version nicht habe. Ich habe Django 3.1 etwas oder anderes. Und so ist dies jetzt vollständig vom Rest meines Computers isoliert und Sie können tatsächlich sehen, wo dies verwendet wird. Es ist in meinem Benutzerordner, Caleb Aeolian dot lokale Freigabe virtuelle EMS, Python drei oder eins, das ist der Ordnername. Dann eine Art Hash-LIB, Python 3.9 Site-Pakete. Cool, lass uns hier mit Control D. verschwinden und sagen wir, wir wollen diese PIP-Umgebung loswerden. Wir könnten Pip env, dash, dash oder M machen und genau so. Wir haben keine PIP-Umgebung mehr. Und so ist dies eine wirklich gute Möglichkeit, eine Umgebung zu erstellen und eine Umgebung zu löschen. Nehmen wir an, Sie haben ein Projekt, das eine bestimmte Version von Python verwendet. Es gibt zwei verschiedene Möglichkeiten, Python zu verwenden. Wenn es um die Versionierung geht. Sie können pi n verwenden und Sie können Ihre Python Version wechseln. Oder die Art, wie ich es vorziehe, ist mit Pip env. Und ich kann pip installieren dash, dash Python. Und lasst uns Python 3.7 machen. In unserer letzten Version oder letzten Pip env verwenden wir Python 3.9. Und so lassen Sie uns weiter gehen und Python 3.7 verwenden. Pip env Schale. Lassen Sie uns einfach diesen Python Bindestrich V klären und ich benutze Python 3.7.2. Es gibt also zwei Möglichkeiten, mehrere Versionen von Python zu verwenden. Ich persönlich bevorzuge diesen Weg, denn wenn ich damit fertig bin, kann ich einfach Pip env, dash, dash r, m sagen , und das wird es nur entfernen. Boom, ich habe keine PIP-Umgebung mehr. Wenn wir jetzt L.A., Grep, das Wort Pip. Wir werden sehen, dass wir zwei Pip-Akten haben. Jetzt wird dieser Befehl tatsächlich ein bisschen anders sein. Wenn Sie unter Windows sind, ist es wahrscheinlich nur D-I-R dir. Möglicherweise können Sie grep verwenden. Sie können immer einfach alles auflisten, was in Ihrem Ordner ist, um Sie tun können. Oder wenn Sie auf Windows oder ls dash LA sind, wenn Sie auf Mac oder Linux sind. Und ich habe eine Pip Datei und eine Pip Datei Dot Lock. Und was das ist die PIP file.txt. Und die Pip-Datei gibt an, welche Art von Paketen in dieser Pip-Datei involviert sind. Nun, ich habe dir gezeigt, als ich Django installiere, dass es mir Django gab. Auf Punkt-zu-Punkt-siebzehn. Der richtige Weg, dies zu tun, wäre pip. Installieren Sie es einfach ein neues Pip env erstellen. Und lasst uns das klarstellen. Dann können wir pip installieren. Django ist gleich 3.1 und es wird installiert. Nun, der einzige Nachteil von Pip ist, wenn Sie Dinge installieren, dauert es ein paar Sekunden länger. Jetzt, meiner Meinung nach, ist es nur ein paar Sekunden für eine schöne virtuelle Umgebung, das Leben ist einfacher auf diese Weise. Pip ist schneller als Pip genug. Manche Leute haben ein Problem damit. Manche Leute tun es nicht. Lass uns Pip env, Shell, klar, Pip, zeigen Django. Und jetzt haben wir Django 3.1 hier drin. Und wir haben das von außerhalb unserer virtuellen Umgebung gemacht, indem wir pip install schreiben und dann ist der Paketname gleich der Version. Und wieder, das wirklich Schöne daran ist, dass wir pip N dash, dash r, m tun können , und es wird unser PIP aufräumen. Und für uns wird dieser ganze Ordner gelöscht, so dass wir jetzt keinen Platz auf unserem Computer verschwenden Wenn Sie wie ich sind und auf einem Mac laufen, haben Sie vielleicht nicht so viel Platz und Sie möchten Ihre virtuellen Umgebungen, wenn Sie mit ihnen fertig sind, wenn sie genau wie virtuelle Wegwerfumgebungen sind. Ich mache das die ganze Zeit. Jetzt liebe ich Pippin persönlich. Ich mag es mehr als ein Python Dutch. Und dann Dot Ven. Ven. Wenn es nur viel zu tippen ist, ist es auch irgendwie seltsam tippen. Nur weil dies die Python Version verwenden wird, die sich auf Ihrem Computer befindet. Nun, wenn ich eine andere Python Version in einer virtuellen Umgebung wollte, könnte ich pip installieren dash, dash python und dann die Version von Python, die ich möchte. Und das wird für mich funktionieren. Die andere Möglichkeit, dies mit verschiedenen Python Versionen zu tun, ist die Verwendung von pi n, was eine gute Möglichkeit ist, verschiedene Versionen auf Ihrem Computer zu verwenden. Aber ich verlinkt, um mein Projekt zu lokalisieren , so dass alles innerhalb einer virtuellen Umgebung ist. Denn was auf Python 3-Site funktioniert, sagen wir, 3.4 wird nicht notwendigerweise auf 3.9 funktionieren. Und wenn ich ein Projekt mit Python 3.9 habe, aber mein Computer hat nur Python 3.8. Oh, jetzt kann ich voran gehen und pip install dash, dash Python 3.9 verwenden und das zum Laufen bringen. Jetzt, als wenig Einschränkung, müssen Sie möglicherweise Pi installiert. Wenn Sie pi n benötigen, können Sie sich ansehen, wie Python auf Ihrem Computer installiert wird. Je nach Betriebssystem wird es etwas anders sein. Aber ich werde das in Ihren Händen lassen, weil Sie jetzt ein fortgeschrittener Python Entwickler sind. Im Wesentlichen, was ich sage, ist, dass Sie die Fähigkeiten haben, das selbst herauszufinden. Und die ganze Lektion ist wirklich, dass es mehrere Möglichkeiten gibt, mehrere virtuelle Umgebungen durchzuführen. Wir können pip machen, wir könnten Python machen, dash m, dann können wir virtuelle n verwenden, wir können docker verwenden, wir können Vagrant verwenden. Wir können alle Arten von verschiedenen Schichten der Abstraktion verwenden. Ich persönlich mag Pip n. Jetzt gibt es keine Aufgabe. Ich wollte dir das nur zeigen. Ich möchte Ihnen nur zeigen, dass dies eine verfügbare Option für Sie in unserem nächsten vorwärts geht, und es ist nicht einmal eine Lektion. Es ist unser letztes Projekt. Wir werden eine Banking-App mit Klassen erstellen. 15. Dein Abschlussprojekt: In Ordnung, willkommen zurück. Lassen Sie uns voran und erstellen Sie ein endgültiges Projekt. Jetzt in diesem Projekt möchte ich, dass Sie eine Banking-App erstellen. Und es muss nicht super komplex sein, aber es muss ein paar kleine Extras drin haben. Also zuerst sollte dies klassenbasiert sein. Es sollte Methoden darin für mit Unentschieden und Ablagerung haben. Und nach jeder Auszahlung und jeder Einzahlung möchte ich, dass Sie die Transaktion in eine Python Datei schreiben. Jetzt haben wir nicht behandelt, wie man Dateien und Python 301 öffnet und schreibt, das war eine Python 201-Sache, wenn ich richtig glaube. Was ich möchte, dass Sie tun, ist, dass Sie versuchen, ein Projekt zu erstellen , das den Benutzer immer und immer wieder fragt, was er tun möchte. Wollen sie zurückziehen oder wollen sie einzahlen, und wie viel wollen sie tun? Dann möchte ich, dass du all das in einer Klasse namens Bank nach jeder Transaktion im Auge behalten kannst, richtig? Diese Transaktion in eine Python Datei. Also haben wir eine Geschichte dieser Transaktion, oder nicht nur diese Transaktion, sondern alle Transaktionen. Jetzt werde ich dir keine Hinweise mehr geben, sonst werden wir Wild true verwenden. Wir werden Input verwenden. Wir werden Klassen, Methoden und Eigenschaften verwenden. Dies sollte ein Gehirn schwitzen lassen. Das ist hoffentlich alles brandneue Sachen für dich. Nun, Klassen, Methoden und Eigenschaften sollten brandneu in der Eingabe sein. Du solltest wilden Baum kennen, du solltest wissen, oh, was brauchst du sonst noch? Sie müssen die offene Syntax für die Verwaltung von Dateien kennen. solltest du auch schon wissen. Wenn Sie dies nicht tun, gehen Sie auf jeden Fall und erforschen, wie Sie dies erstellen können. Nun, was ich will, dass du es selbst ausprobierst. Sehen Sie sich nicht den Rest dieses Videos an. Ich werde dir zeigen, wie ich es mache. Ich habe übrigens noch nie eine davon gebaut. Du wirst also alle Fehler sehen, die ich vielleicht auch mache. Aber wenn dir hier etwas Neues ist, weißt du nicht, wie du es machen sollst, kannst du dich nicht erinnern. Ich werde Sie bitten, sich nicht auf ein anderes Video zu beziehen. Versuchen Sie das Beste, was Sie können. Und wenn Sie wirklich, wirklich stecken bleiben, gehen Sie zu Google, gehen Sie zu Stack Overflow und suchen Sie dort nach Ihrer Antwort. Weil 50% der Codierung Probleme lösen und Sie lernen müssen, wie Sie Probleme selbst lösen können. Wenn Lehrer immer Ihre Hand halten. Ehrlich gesagt, du wirst es nicht lernen. Und ich möchte, dass du als mein Student wirklich lernt. Nicht nur beobachtete uns, weil es wie redaktionellen Stil ist, Netflix, wissen Sie, ich möchte, dass Sie tatsächlich in der Lage sein, eine Python App zu erstellen. Und dann, weißt du, vielleicht können wir eines Tages zusammen arbeiten und wie cool wäre das? Also machen Sie weiter und erstellen Sie eine Back-App von Grund auf neu. Denken Sie daran, es geht, um den Benutzer für eine Auszahlung und einen Betrag oder eine Einzahlung und einen Betrag zu fragen , behalten Sie den Überblick über all das. Was ich tun werde, ist das ausblenden und wieder einblenden und ich werde Ihnen meine Lösung zeigen. Okay, also zuerst werde ich dieses Projekt Dot Pi nennen. Und ich werde all das auswählen, das kommentieren und das als Leitfaden für das verwenden, was ich tun muss. Also das erste, was ich brauche, ist eine Art Banking-App. Ich muss eine Klasse namens Bank erstellen. Und wie hoch wird mein Anfangsbetrag sein? Nun, ich werde taub init selbst machen und der Anfangsbetrag wird 0 sein. So viel werde ich dieses Konto mit den $0 eröffnen. Verwenden Sie hier einen Schwimmer, 0.0.0. Selbst.Altersbilanz ist gleich Anfangsbetrag. Dann muss ich abheben und einzahlen. So taub, mit Unentschieden Selbstbetrag, werde ich dieses Gleichgewicht nehmen, selbst.Alter Gleichgewicht. Und lasst uns das nach oben bewegen. Selbst.Alter Gleichgewicht ist gleich Selbstpunktbalance minus der Menge. Nun, was, wenn dieser Betrag ist, sagen wir eine Zeichenfolge aus irgendeinem Grund. Wir können sagen, dass der Betrag gleich Float Betrag ist. Wir wissen nicht, ob das funktionieren wird oder nicht. Und was wir hier tun können, ist , was mache ich hier? Versuchen Sie, das als Betrag mit Ausnahme eines Wertefehlers umzuwandeln. Und dieser Betrag wird 0 sein. Und dann werden wir die New Balance aufstellen. Wir wollen auch Einzahlung zu tun. Gehörlos D posit Wie viel würde immer nehmen selbst einen Betrag nehmen. Wir wollen den gleichen Versuch machen und außer hier versuchen. Der Betrag ist gleich dem Gleitkommabetrag mit Ausnahme eines Wertefehlers. Wenn es diesen Betrag nicht in einen Gleitkommawert umwandeln kann und die Änderung auf 0 beträgt. Selbst.Alter Gleichgewicht wird die selbst.Alter Gleichgewicht plus was auch immer diese Menge sein wird. Entweder fügen wir unserem Konto hinzu oder fügen unserem Konto nichts hinzu. Und wenn wir uns auszahlen, nehmen wir entweder von diesem Konto weg oder wir nehmen nichts von diesem Konto weg. Lassen Sie uns diesen einen Schritt kleiner machen, damit wir das irgendwie in einer Ansicht sehen können. Und jetzt lasst uns das instanziieren. Lassen Sie uns eine Zählung ist gleich Bank. Was nimmt es in seinem init Anfangsbetrag? Sagen wir, ich eröffne dieses Konto mit $50. 50,0050,50 Lass uns das machen. Dann kann ich Konto Dot Einzahlung machen. Und sagen wir, ich möchte $10 oder $10 einzahlen. Und dann drucken wir meinen Gesamtbetrag aus. Kontopunktguthaben. Und dann sagen wir, ich möchte 1475 zurückziehen, nicht mit einem Komma, sondern mit einer Dezimalstelle. Und lassen Sie uns das Kontoguthaben noch einmal ausdrucken und sicherstellen, dass wir das richtig buchstabieren. Danke. Vs Code, um mir einen Tippfehler dort zu zeigen. Und lasst uns ein Terminal öffnen und das laufen lassen. Und so begannen wir mit 50.50, wir haben Zehner hinzugefügt, wir haben 60,5, das ist gut. Und dann nahmen wir 14.75. Also 60,5 minus 14,75 ist 45,75. Das scheint richtig zu sein, und ich werde diese Mathematik nicht überprüfen. Ich bin mir ziemlich sicher, dass der Computer weiß, was er tut. Und jetzt müssen wir Transaktionslog hinzufügen. Und was müssen wir hier noch hinzufügen? Und wir müssen den Benutzer um Eingabe bitten. Also werde ich das machen. Ein Schritt kleiner, ich habe versehentlich den falschen Knopf dort gedrückt. Ein Schritt kleiner. Und lassen Sie uns eine andere Methode in Ihrer tauben Log-Transaktion selbst durchführen. Und dann eine Art String. Was machen wir? Was machen wir hier? Und lassen Sie uns einfach diese Transaktionszeichenfolge aufrufen. Jetzt müssen wir eine Datei öffnen. Also können wir Breite sagen, das ist mit einem Kontextmanager hier. Und wir können mit offenen Transaktionen 2.txt sagen, wir werden es die ganze Zeit anhängen oder eine neue Datei erstellen. Wenn es nicht als Datei existiert, dann können wir Datei Punkt sagen, richtig? Was wollen wir schreiben? Wir wollen in die Transaktionszeichenfolge schreiben, und lassen Sie uns vielleicht immer eine neue Zeile am Ende anhängen. Also lassen Sie uns hier eine IF-Anweisung verwenden, eine F-Anweisung und einen F-String, und werfen eine neue Zeile hier hinein. Und das kommt von Python -Tool eins, wo wir gelernt haben, mit Dateien umzugehen. Jetzt können wir nach jedem Rückzug einfach sagen, ob es einen Betrag gibt. Denken Sie daran, ob 0 ist oder wenn der Betrag 0 ist, wird dies falsch sein, so dass dies nicht ausgeführt wird. So können wir sagen, wenn Menge dann etwas tun. Self.View, Log-Trends Aktion und dies nimmt einen Betrag, sind keine Menge, sondern eine Zeichenfolge. Es nimmt die Transaktionszeichenfolge. Also lassen Sie uns das zurückgezogen nennen. Wie viele Dollar der Betrag. Machen wir das Gleiche mit der Einzahlung hier. Und was ich tatsächlich tun kann, ist Doo-Doo-Doo-Doo, das zu kopieren. Und wir müssen nur sicherstellen, dass wir das austauschen. Seien Sie immer vorsichtig, wenn Sie kopieren und einfügen. So können wir sagen, das Gleichgewicht ist gleich dem Gleichgewicht plus unabhängig von der Menge. Wann immer wir einzahlen, protokollieren Sie diese Transaktion, wir haben uns nicht zurückgezogen. Wir besuchten den Einleger, hinterlegten den Betrag. Und machen wir weiter und öffnen unsere Akten hier auf der Seite. Und wir sehen keine Transaktionen 2.txt. Nannten wir es so? Transaktionen Punkt TXT? sehen wir noch nicht da drin. Speichern Sie das und führen Sie es aus und sehen Sie, ob es Tippfehler oder irgendetwas gibt. Und in Ordnung. Kuckuck, Kuckuck. Und es ging hinterlegten Betrag. Ich habe dort etwas sehr falsch gemacht. Was machen wir hier drin? Zuallererst ist das eine F-Saite. Das ist kein JavaScript. Das ist eine F-Saite. Das ist kein JavaScript. Lass uns weitermachen und das nochmal laufen. Wir sehen Transaktionen. Wir schauen uns das bei $10 deponiert, zog 1475 zurück. Lassen Sie uns auch das Gleichgewicht im Jahr mit einem neuen Gleichgewicht von selbst.age Balance hinzufügen . Und wenn ich das hier nur ein kleines bisschen kleiner mache, können wir sehen, dass ein, Ich habe einen Tippfehler und bin, dass ich eine App-Zeichenfolge verwende. Und in der Tat können wir damit schicker werden. Wir könnten sagen, dass etwas passiert ist und statt einer New Balance, wir könnten Tab, Tab, Tab-Balance tun. Ist was auch immer dieser Selbstpunkt ausbalanciert. Lassen Sie uns voran und räumen Sie Transaktionen Punkt TXT. Und lassen Sie uns das noch einmal ausführen. Überprüfen Sie Transaktionen auf TFC Einzahlung $10 New Balance, 60,5, zog 1475 New Guthaben, 45, 75. Okay, das sieht ziemlich gut aus. Jetzt müssen wir eine, eine Schleife irgendeiner Art erstellen , um den Benutzer immer und immer wieder nach Eingabe zu fragen. Lass uns das schließen. Und wir haben all unsere Logik funktioniert. Gehen wir also voran und wickeln Sie dies in etwas ein, das eine while-Schleife genannt wird. Wenngleich wahr ist. Tun Sie etwas. Was wollen wir damit tun? Wir wollen nach einer Aktion fragen, wird Eingang sein. Welche Art von Aktion möchten Sie ergreifen? Dann können wir sagen, wenn die Aktion in einer Liste von Drell ist oder eine Einzahlung oder ich weiß nicht, warum ich das geschrieben habe, dann. Tun Sie etwas. Also, dann können wir sagen, wenn Aktion gleich Auszahlung ist, wird Betrag sein, welche Art von Betrag fällig wir Eingabe wollen. Wie viel willst du mitnehmen? Und dann können wir tun Konto Punkt Auszahlung der Betrag. Und ich mache mir keine Sorgen über die Typisierung, weil wir es hier drin tun. Nein, nicht da, hier drin. Und hier. Dann können wir etwas anderes sagen, weil die Aktion entweder Auszahlung oder Einzahlung sein wird. Wenn das wird eine Einzahlung sein, wie viel wollen Sie sagen, nicht Takeout, aber setzen Sie in und Konto Punkt Auszahlung wird berücksichtigt Punkt Einzahlung d, z der Betrag. Und dann hier unten können wir „Drucken“ sagen. Ihr Guthaben ist Kontostand. Jetzt müssen wir dies instanziieren, bevor wir in die while-Schleife gelangen , damit wir nicht jedes Mal ein neues Konto erstellen , wenn wir die while-Schleife durchlaufen. Und lasst uns das und das loswerden, und das und das. Und so haben wir jetzt ein Konto Objekt und wir werden entweder Auszahlung oder Einzahlung und dann drucken Sie das Guthaben aus. Mal sehen, wie sich das ergibt. Welche Art von Aktion willst du ergreifen? Sagen wir, ich möchte einzahlen. Wie viel möchte ich einlegen? Nehmen wir an, ich will 13 Dollar einbringen. Mein Guthaben ist jetzt 6350. Das ist richtig. Welche Art von Aktion möchte ich ergreifen? Was ist, wenn ich zurückziehen möchte? Wie viel willst du rausnehmen? Sagen wir 13, 0,5 c. Das gibt uns also sogar 50. Und lassen Sie uns mit Control C aufhören. Oh nein, wir bekommen einen Tastaturunterbrechungsfehler. Und das kommt von dieser Aktionslinie. Lasst uns das versuchen. Versuchen Sie es. Außer. Und wie hieß das? Das wurde als Tastatur-Interrupt-Fehler bezeichnet. Aber nein, es hieß nur Tastatur, Tastatur Interrupt. Und lassen Sie uns das kopieren. Da gehen wir. Und wir werden einfach aus dieser Schleife ausbrechen. Probieren wir das aus. Welche Art von Aktion möchte ich ergreifen? Lassen Sie uns absagen. Es. Einfach für uns beraten, damit wir sogar sagen konnten, dass Druck den Geldautomaten verlässt. Und lasst uns das auf eine neue Linie setzen. Und setzen Sie das auf eine neue Linie. Aufgrund von, aufgrund neuer, lassen Sie uns aufhören. Es sagt Verlassen des ATM und eine anmutig links mit einer Tastatur-Interrupt-Ausnahme. Cool, das kommt ganz schön zusammen. Jetzt ist eine letzte Sache, die wir berücksichtigen müssen, was ist , wenn die Aktion nicht Rückzug oder Einzahlung ist? Lass uns das machen. Welche Art von Aktion möchte ich ergreifen? Sagen Sie, ich will die Bank ausrauben? Es wird nichts tun. Dies ist eine schlechte Benutzererfahrung. Es fragt nur weiter, was ich denke, ist nicht die schlechteste Benutzererfahrung, aber es ist keine gute Benutzererfahrung. Damit wir das zusammenreißen oder zusammenbrechen können. Und wir können etwas anderes sagen. , wenn es sich bei der Aktion nicht um Auszahlung oder Einzahlung Was wollen wir tun, wenn es sich bei der Aktion nicht um Auszahlung oder Einzahlunghandelt? Drucken. Das ist keine gültige Aktion. Versuchen Sie es noch einmal. Jetzt lasst uns das machen. Nehmen wir an, wir wollen rauben und keine gültige Aktion. Versuch es noch einmal, Kaninchen. Ok, was, wenn wir mit Draw wollen? Es ist ein schweres Wort zu tippen. Mit. Raul ohne Platz am Ende. Wie viel möchte ich mitnehmen? Sagen wir, ich will $900 rausnehmen. Mein Guthaben derzeit als minus $849.50. Also, jetzt bin ich in Überziehungen geraten und wenn Sie es wollten, könnten Sie das auf Überziehungskredite und Kredite ausweiten und alle möglichen Dinge kennen. Aber das ist im Wesentlichen das gesamte Projekt auf den Punkt gebracht. Und wenn ich absage, annulliert es anmutig. Es irrscht nicht nur aus. Da steht, dass ich den Geldautomat verlasse. Lassen Sie uns zusammenfassen, wie das aussieht. Wir haben eine Klasse namens Bank. Wenn Sie ein Konto eröffnen, wie viel setzen wir dort standardmäßig ein? $0, ich habe $50,50 Cent. Zu Beginn. Jedes Mal, wenn es eine Transaktion gibt, öffnen wir die Transaktionsdatei dot TXT. Schauen wir uns das mal an. Und es zeigt mir alles hier drin. Das ist großartig. Das ist ein Tun genau das, was ich will. Für jede Transaktion, egal ob es sich um eine Auszahlung oder Einzahlung handelt, werden wir diese Datei nehmen, wir werden sie schreiben und was auch immer diese Transaktionszeichenfolge ist, also zog oder deponiert den Betrag. Tab, Tab, Tab, Tab mit der Balance darin ausgeglichen. Cooler, einfacher Transaktionslogger. Dann haben wir eine Auszahlungsmethode. Wir werden versuchen, das als Float zu werfen. Wenn wir dies nicht als Float werfen können, wird es sagen, dass der Betrag 0 ist. Und wenn der Betrag größer als 0 ist, wird es im Grunde, solange er nicht 0 ist, können wir irgendeine Art von Aktion ergreifen. Wir werden dieses Gleichgewicht automatisch ändern, von dem, was es gerade war. Also öffnete ich mich mit 50,50 und es wird minus den Betrag, der hier reinkommt. Und dann werden wir diesen Betrag und die Rücknahme protokollieren. Schließlich haben wir Kaution und dasselbe. Wir werden versuchen, diesen Betrag als Float zu werfen, damit wir numerische Mathematik darauf machen können. Wenn wir nicht können, wird sagen, dass der Betrag 0 ist. Wenn dieser Betrag ist, wenn diese Zahl in der Tat eine richtige Zahl ist, wenn dieser Betrag eine richtige Zahl ist, können wir dann ändern, dass das Gleichgewicht ausgeglichen werden gleich dem Gleichgewicht plus was auch immer Betrag. Und dann sagten wir in unserem Transaktionslogger, hinterlegt den Betrag. Schließlich erstellen wir ein neues Konto und dann sagten wir zu Fuß bis zum Geldautomaten. Im Wesentlichen ist das, was das hier sagt. Während etwas wahr ist, fragen Sie einfach weiter, fragen Sie weiter und fragen Sie und fragen Sie nach Handeln. Welche Art von Aktion möchten Sie ergreifen? Wenn wir Control gesagt haben, wenn wir abgebrochen haben, erhalten wir einen Tastaturunterbrechungsfehler und wir gehen einfach zu gehen, werden wir aus dieser Schleife brechen. Andernfalls, wenn die Aktion im Auszug oder Einzahlung ist, ergreifen Sie hier Maßnahmen. Und wenn diese Aktion Rückzug ist, können wir sagen, wie viel wollen Sie nehmen und dann entziehen Sie diesen Betrag. Andernfalls, wenn es nicht Auszahlung ist, wissen wir, dass es eine dieser Aussagen sein wird, Auszahlung oder Einzahlung. Wir wissen, dass dies ein Rückzug ist. Also durch Logik der Reduktion, muss dies Ablagerung sein. Dann sagen wir, der Betrag wird eingegeben werden. Wie viel möchten Sie in von zählt Punkt Einzahlung auf den Betrag setzen , der alle seine Bankinterna arbeiten wird. Und dann können wir unseren Saldo-Punkt-Guthaben ausdrucken. Andernfalls, wenn jemand versucht die Bank auszurauben oder etwas anderes mit der Bank zu tun, das er wirklich nicht tun sollte. Wir werden drucken, die keine gültige Aktion ist. Versuchen Sie es noch einmal. Es wird dann diese Schleife noch einmal ausführen und immer wieder gehen, bis Sie den Geldautomaten verlassen. Und das ist wirklich alles, was es für dieses Projekt gibt. Und wir nutzen viele verschiedene Dinge, die wir in Python 301 gelernt haben. Wir verwenden nicht unbedingt alles, wir verwenden keinen Generator, wir verwenden keinen Dekorateur. Obwohl, wenn Sie wollten, könnten Sie einen Weg finden, diese dort hinzuzufügen. Und wenn Sie wollten, könnten Sie wahrscheinlich protokollierte Transaktion in eine Art Dekorateurverwandeln protokollierte Transaktion in eine Art Dekorateur um Auszahlungen und Einzahlungen mit ihnen zu dekorieren , so dass wir es hier nicht explizit schreiben müssen. Das wäre ziemlich cool, wenn du das tun könntest. Und worüber reden wir noch? Pip endet? Wir hätten dies wahrscheinlich in einer PIP-Umgebung tun sollen, aber wissen Sie, wir installieren keine Pakete, also brauchten wir dafür keine PIP-Umgebung und wir brauchten nur reguläre Python auf unseren Computern. Und wir haben keinen Generator benutzt, weil wir keinen Generator benutzen mussten. Generator wäre wirklich gut, wenn wir durchlaufen, wie eine Million verschiedene Kunden in unserer Bank und wir müssen herausfinden, welche Kunden definiert. Das ist also alles, was es zu dieser speziellen Banking-App gibt. Wenn Sie dies nicht ausprobiert haben und Sie sehen einfach direkt durch dieses Video. Bitte gehen Sie weiter und probieren Sie das aus. Nun, das ist wirklich, wirklich wichtig, weil es eine großartige Übung ist, eine Klasse zu verwenden. Vergessen Sie nicht, wenn Sie Fragen haben, können Sie immer die Lerngruppe auf Facebook zu programmieren beitreten. Wir beantworten gerne jede Python Frage, die Sie dort haben. 16. Python 301 Zusammenfassung: Willkommen bei der Python 301 Zusammenfassung. Ich war deine Lehrerin. Du bist übrigens sehr stolzer Lehrer, mein Name ist Caleb Eataly und du kannst mir bei Kilo Tolkien auf Twitter folgen. Oder wenn Sie Codierungs-Tipps und Tricks wollen, können Sie immer Codierung Punkt für Punkt alle auf Instagram folgen. Wenn Sie jemals Hilfe benötigen, gibt es eine kostenlose Support-Gruppe mit Zehntausenden von Mitgliedern, die sich auf Facebook programmieren nennt. Alles, was Sie brauchen, ist ein Facebook-Konto. Es ist absolut kostenlos. Wir verbringen Stunden in ihrer täglichen Pflege, um sicherzustellen, dass es wertvolle Beiträge gibt und es keinen Spam gibt. Es ist also eine gute Gruppe, sich anzuschließen. Wenn du magst. Meine Unterrichtsmethode, vergessen Sie nicht, ich habe mehrere andere Kurse. Schau mich einfach nach oben. Mein Name ist Caleb, groß, schlank, und du kannst sie auf allen möglichen Plattformen finden, einschließlich YouTube. Vielen Dank, dass Sie Python 301 genommen haben. Und wieder, ich war dein Gastgeber und dein Lehrer, Caleb Colleen, und ich hoffe, in der Zukunft mit dir zu arbeiten jetzt, wo du ein fortgeschrittener Python Programmierer bist, ich hoffe, du hattest Spaß und ich sehe dich herum. Tschüss.