ROSS Rheingans-Yoo: Hallo, ich bin Ross. Und das ist ein CS50-Seminar. Es wird Sie von der Programmierung nehmen in C-Programmierung in Python. Python ist eine Skriptsprache. Es ist größtenteils wie C in der Syntax, obwohl einige von den technischen Details wie diese Syntax wird ausgeführt sind etwas anders. Es ist weniger leistungsfähig als C in gewisser Weise. Es ist für weniger ausdrucks wo genau in Ihrem Computer Speicher wird angelegt, wie es wird angelegt, wenn es bekommt Freiheit und diese Art von Dingen. Es ist sinnvoller als C in gewisser Weise, weil es einfacher ist, um in zu programmieren. Die Sprache ist, zu einigen Menschen, mehr intuitiv. Und wirklich, ist das Ziel es schneller zu programmieren und möglicherweise langsamer ausgeführt. Nun, wenn Sie darüber nachdenken, die Zeitdauer, Sie auf Ihrem letzten verbracht Problem Set Schreib Ihren Code gegen die Höhe der Zeit verbringen Sie auf dem letzten Problem set Ausführen Ihres Codes, Sie, dass die Sprache sich vorstellen die doppelt so schnell zu schreiben war, und doppelt so langsam ausgeführt werden kann, vielleicht ist eine Verbesserung gegenüber C in mancher Hinsicht. Sicherlich, wenn Sie versuchen, zu schreiben sind kleine Programme, um kleine Dinge zu tun, Python ist eine nützliche Sprache der Wahl. Und am Ende dieses Seminar, ich hoffe, du wirst in der Lage, das zu machen Wahl in zukünftige Projekte um welche Sprache ist korrekt zu bedienen, nicht der Idee, , dass eine Sprache mehr korrigieren die ganze Zeit. Ein paar Dinge über das, was das Seminar. Dieses Seminar richtet sich nicht bestimmt lernen Sie, Python von Grund auf neu. Python ist sehr ähnlich bis C, und ich gehe davon dass Sie ein CS50 Student bist, oder jemand, mit einem ähnlichen Vertrautheit mit C. Wenn Sie Student sind CS50 rund Problem stellen Sie 6, So haben Sie sehen eine Menge von Dinge in C, gebe ich Ihnen Die Hauptunterschiede, und einige der Dinge, dass machen Python verschiedenen und spezielle und nützliche, Aber ich werde mich nicht für zu gehen was eine Programmiersprache ist und wie man Programme schreiben. Allerdings wird dieses Seminar zu lehren Sie ein Python-Programme zu schreiben wenn Sie einer der wenigen Gruppen. Auch hier werden wir uns, wie sehen Sie implementieren psets-- das sollte 1-6 sein Python-- und geben Hinweise zur offiziellen Dokumentation für die Zukunft. Die andere Sache, die wichtig ist darüber, wie diese Diskussion zugeordnet ist, Dieses Video wird online, mit freundlicher Genehmigung von CS50, so sollten Sie nicht das Gefühl, Sie brauchen, um sich Notizen zu machen. Sie können jederzeit zurückgehen und auf sie später als Referenz. Zusätzlich können die Folien sind ab sofort erhältlich auf dieser Seite, sollte nehmen Sie ein Google-Dokument zu tun. Es ist eine leicht gekürzte Version von dem, was ich bin, die auf dem Bildschirm. Eine sorgfältige Vorbehalt vor Wir springen in, Python 3 ist eine andere Sprache aus Python 2. Sie sehen viel das gleiche; es gibt sehr geringe technische Unterschiede das wird dazu führen, Programme in Python 2 geschrieben nicht in der Lage sein, die ausgeführt werden in der Python 3 Umwelt. Der CS50 Gerät kommt mit Python, wird es standardmäßig verwendet Python 2. Sie können dies überprüfen, Eingabe in der Befehlszeile python --version, die ausgeben soll 2.7.6 auf dem aktuellen Gerät. Versuchen Sie, Python 3, die funktioniert arbeiten in dem Gerät, wenn Python standardmäßig 2.X.Y entweder auf das Gerät oder auf dem eigenen Rechner. Sie sollten Python 3 zu jeder Zeit zu ersetzen in diesem Gespräch, das ich schreibe, Python. Wenn Ihre Maschine Lauf 2 standardmäßig Typ Python 3, um in der Lage sein, tatsächlich folgen und diese Dinge auszuführen. Darüber hinaus werde ich Ihnen zeigen auf nun offiziell Ressourcen. docs.python.org/3--~~V sorgfältige , daß das ein 3 und kein 2-- bietet nützliche Hinweise. Tutorial führt Sie durch viel von der gleichen Dinge dass ich jetzt tue, mit Ausnahme der Textform. Bezugs ist als Referenz für die Sprache, und der Standard Library gibt Sie einige der Erweiterungen mit zusätzlicher Funktionalität. So eine erste Python-Programm. Auf der linken Seite haben wir Standard-C, auf der rechten Seite haben wir Python. Vielleicht haben Sie erkannt haben, dieses Problem, es ist eine der ersten Aufgabe Sätze in CS50, und diese lösen sie mit der gleichen Lösung. Nun, der Grund, die wir sind Mit Blick auf diese Seite an Seite so können wir betrachten syntaktischen Unterschiede. Einer der Elefanten im Zimmer dass Sie vielleicht Recht bemerkt haben von der Fledermaus, ist, dass Python hat keine Hauptfunktion Umhüllung um den Code. So in C, eine Reihe von Schreiben Sie Dateien, sie zu verbinden Sie, und das Programm beginnt mit der Ausführung an diesem Ding namens int main. In Python, schreiben Sie ein Datei, die Sie, die Datei auszuführen, Das Programm beginnt mit der Ausführung am Anfang der Datei. Also, es wird starten an der Spitze der Datei gehen Sie nach unten, bis es etwas anderes zu finden. Wenn es eine Funktionsdefinition findet, es wird nicht tatsächlich auszuführen, dass Code, es wird einfach definieren die Funktion. Aber auch hier, wenn die erste Programm ist n gleich 10 ist, die erste Sache, dass dieses Programm wird tun ist, nehmen Sie diesen Wert von 10 und legen Sie es in eine Variable namens n. Apropos dieser Linie, einer der andere things-- diese sorry-- bedeutet, dass C-Programme, Sie werden sie zu schreiben, Sie werden sie zu machen, die wird rufen einige clang Befehle, und dann wirst du einen Lauf resultierende ausführbare Datei. Python-Programme, können Sie die laufen Text file-- diesem mario.py könnte Diese Datei, die ich gerade gezeigt werden Sie-- Sie diese Datei ausführen und Sie ausführen, und der Inhalt davon erfolgt per der Python-Interpreter. Sie können dies in Ihrem IDE zu tun. Also, wenn ich ein Hallo-Datei, was sich einfach diese Inhalte. Dies ist eigentlich Python 2, nicht Python 3, also nicht Sorgen über die Syntax für den Moment. Aber ich werde auf Python ausführen, hello.py, und es läuft. Ein anderer Weg, dass ich, dass Python verwenden Ich werde nicht mit so viel zu tun in diesem Vortrag, ist, wenn ich nur geben Python, es fällt mir in einer Umgebung, Ich kann es zu füttern Python Zeile für Zeile. Also hier, wenn ich tippen Druckraum "Hallo, Welt". Geben eingeben. Es wird mich spucken, dass die Ergebnisse zurück dass einzelne Zeile unmittelbar. Dies kann nützlich sein. In diesem Vortrag ich werde die Dinge auf den Folien zu tun. Und so hast du Zugriff auf folgen entlang entweder hier, oder schreiben eigentlichen Dateien und dann deren Ausführung. Aber geht zurück auf diese Code, eine andere Sache, dass Sie vielleicht noticed-- gut, es gibt zwei Dinge, die Sie vielleicht Bekanntmachung über diese Blöcke. Der erste, eher banal, ist, dass die Python hat kein Semikolon. Strichpunkte sind überall optional und harmlosen überall. Sie können sie hinzufügen. Es könnte Menschen, die schreiben, machen Python für ein Leben zu kichern an Ihnen hinter dem Rücken, weil sie sind nicht notwendig. Sie sind oft ein Zeichen des Seins über gehalten von C. Die Designer der Sprache das Gefühl, dass es mehr klar, auf diese Weise und dass es nicht notwendig ist, zu erklären, jedes Mal, wenn Sie am Ende einer Zeile. Eine weitere seltsame Sache über diese n es ist nicht eine Art befestigt ist. Eines der Zauberstücke Python-- und ich werde es nennen Magie, aber es gibt sehr Aus technischen Gründen, warum es works-- eine der Zauberstücke Python ist, dass Variablen können erweitert oder verkleinern, um was auch immer Daten enthalten Typen würden Sie wollen, dass sie. Das ist also ein 10. Wenn später auf I dieser zugewiesen n 0,5, wäre es, dass 0,5 zu nehmen. Egal, dass es ein int hier und dort schwimmen, alles, was diese n verwendet wird mehr oder weniger in der Lage sein chug zusammen, wenn es entweder von denen bekommt. Es sei denn, es gibt einige sehr reale Grund, warum es die Daten nicht verwenden können, Typ, n hat derzeit, an welcher Stelle es bekommen eingekeilt und wirft einen Fehler, und diese Art von Dingen. Aber hier, Python nicht wirklich, was es ist, dass ich werde in diesem Stick- Satz, wie, dieses, was Sie wollen? Dieses Ding, dass? Ja, es ist ein bisschen eine Sache. Ich werde es am Ende bleiben. Es wird ein Problem später, wenn jemand, um dieses Ziel zu verwenden möchte kann nicht damit umgehen. Dies ist eines der wichtigsten Unterschiede zwischen Python und C dass macht es einfach, schreib sehr große C-Programme und macht es leichter zu schreiben sehr kleine Python-Programm. Die Syntax ist nicht sehr verschiedene in dem, was sie tut. Es ist leicht unterschiedlich in, wie es ausgedrückt. So ist dies ein sehr, was man Pythonic, Weg, es zu schreiben. für Reihe in Reihe (n), das ist das Zahlenbereich von 0 bis n, inclusive am Boden und exklusiv auf der Oberseite. So ist es von 0 bis n-1 ist, die genau das, was der C-Code tut, außer es ist viel einfacher, bei vielleicht aussehen. Der entsprechende Block nicht durch geschweifte Klammern gesetzt, Stattdessen ist es ausgeschaltet von dieser Vertiefung. So alle diese Zeilen vier Leerzeichen nach rechts, oder wie etwa ein Elefant Breite. Und das sind diejenigen, die sind gehen, um in diesem für geführt werden. Wenn ich mess up der Vertiefung an diesem und I drücken, dass Druck zurück zu der ursprüngliche Vertiefung, dass Druck für Schleife lassen Sie das. Im Gegensatz zu C, wo ich hier eigentlich müssen diesen geschlossenen Klammer zu bewegen. Das bedeutet, dass Sie Fehler nicht bekommen, , die bei Ihnen zu springen, weil Sie setzen eine Klammer in falschen Ort. Es bedeutet, dass Sie Fehler erhalten , die bei Ihnen zu springen, weil Sie rückt eine Linie falsch. Es macht also Vertiefungen super vorsichtig. Hoffentlich haben Sie als Super wurden vorsichtig mit Ihren Vertiefung wie auch immer, und so ist dies nicht, dass viel eher eine Belastung. Aber eine Grundregel für Python, und wir werden ein paar von ihnen haben dass wir durch durchlaufen der Verlauf der Diskussion, wird versuchen, natürliche Syntax bevor sie irgendetwas auf. Also diese Syntax, für diese Nummer in Bereich, ist sehr markant in Bezug auf Stil. Viele Dinge in Python wir werden sehen, mit der Einnahme dieses Formular. Und so, wenn Sie kommen, mit einem neuen Objekt, das Sie glaube, Sie sollten in der Lage zu sein, laufen dies, in diesem Format, stellt sich heraus, es wahrscheinlich unterstützt dieses Format. Wir gehen nicht zu super tief in gehen technische Gründe, warum das ist wahr. Aber es ist eine nützliche Intuition zu haben, wenn Sie nähert Python-Programme, dass dieses Ding ist einfach nur zur Arbeit gehen. Versuch es. Booten Sie das Command Line Interpreter finden, ob es funktioniert, bewegen Sie sich mit Dingen, bevor Sie einmal zu öffnen, Google und sagen: was ist die Syntax für diese besondere Sache? Viele Python konnte man entdecken Sie, indem Sie versuchen. Dies ist, wenn noch mehr ähnliche bis C werden die fors sind. Beachten Sie, dass es gibt keine Klammern. Die Klammern sind, wieder, harmlos, aber nicht notwendig. Gibt es eine Doppelpunkt am Ende ebenso wie die for-Schleifen, und wiederum sind die relativen Blöcke rückt und nicht durch geschweifte Klammern gesetzt. Das andere ist an der ursprünglichen Höhe der Einbuchtung, und seine relevanten Block wieder eingerückt. Diejenigen Arbeit genau so, wie sie in C tun Dies ist tatsächlich sehr ähnlich. Wieder verliert einen Zeichendruck Aus der printf Sie passieren einige Saiten. Es stellt sich heraus Saiten kann entweder off markiert werden durch einzelne oder doppelte Anführungszeichen. Es gibt keinen Unterschied, außer dass innerhalb der einfache Anführungszeichen Sie verwenden können, Anführungszeichen mit Hingabe, anstatt entkommen alle von ihnen. Und im Inneren des doppelten Anführungszeichen, die Sie können einfache Anführungszeichen mit Hingabe verwenden ohne sie zu entkommen. Wenn Sie mischen wollte sie, können Sie sicher schauen Sie sich online, wie das geht. Sie werden bemerken, dass hier, Ich habe in Ende bestanden = diese Sache. Dies ist ein Beispiel eines optionalen Argument, das eines der Dinge ist, dass Python unterstützt, dass macht es sehr nützlich. So Druck tatsächlich hat eine Menge von Argumente, die in der Regel auf die Standard eingestellt Wert, aber hier habe ich beschlossen, die sogenannte Ende überschreiben. Der Grund, dass ich überschreiben Sie es mit einem leeren String ist, dass Druck in Python, die von Standardmäßig druckt eine neue Zeile nach dem, was Sie gesagt, es auch. Also das Hash ist eigentlich los, um drucken Sie eine Hash in einer neuen Zeile. Und wenn ich nicht wollen, dass Hash ausdrucken eine neue Linie, nachdem sie, dann muss ich sagen, werden nicht gedruckt ein. Doch, doch so, das eine letzte Sache, dieses Programm fehlt, dass man ist eine Include an der Spitze. Print ist in Python so dass im Grunde gebacken dass es keine Kopf- oder Modul , dass es nötig ist sind, obwohl, wenn gewünscht , andere Dinge sind in einem Python-Skript, Ich würde es in einer sehr ähnlichen Format aufnehmen zu tun die Worte sind nur etwas anders. Ich erwähnte, dass wir nicht brauchen hier eine Haupt, weil der Python beginnt Ausführen an der Spitze. Wenn ich wollte, um zu wickeln dies in Abhängigkeit, I wäre es wie this-- ich tun würde auf jeden Fall sagen, Funktionsnamen, Argumente könnten hier gehen und wir schicken sehen einige dieser später, Dickdarm, und dann wieder, dieses gesamten Aufrechnung Block ist, was die Betriebs Block für diese Funktion. Das ist also die Definition der Funktion. Und es gibt eine Erklärung, dann nach unten hier, ich rufen Sie die Funktion. Und wieder, das Programm Dolmetscher, beginnend an der Spitze, werden sehen, das ist die Definition. Es wird nicht ausgeführt, bis er diese hier erhalten, und dann ist es wie, oh jetzt können Sie es genannt haben, I glaube, ich sollte ihn auszuführen. Eine Sache, die sehr häufig ist in Python-Dateien zu sehen, insbesondere Python-Dateien, sind für die Öffentlichkeit freigegeben und entwickelte nach-- und entwickelt und gehalten wird, ist etwas, was dieses Formular. Dies ist so weil basically-- Python, an der Spitze beginnen Sie und dann nach unten ausführen, um den Boden, Ich, wenn ich gerade Mario rief hier, dann jedes Mal wenn ich diese Datei enthalten eine andere Datei, weil ich wollte, zu bedienen ist Mario-Funktion, dass andere Datei würde auch diesen Aufruf an Mario darin. Und wenn ich diese Datei lief, es wäre Mario anrufen. So ist es möglich, dass nur ich Dies wollen laufen, wenn ich tatsächlich ausgeführt diese besondere Datei. Und so kann ich dies in einem Wrap Idiom wie dieser, wo ich sage, wenn der Name dieser Ausführung Umwelt ist Haupt-, dann will ich diese Dinge zu tun. Sonst jemand anderes kann use-- beinhalten meine function-- meine Datei, und nur um Zugriff auf diese Funktionen ohne dass die Dinge laufen dass ich in dieser Datei auszuführen. Dies ist wiederum optional aber sehr häufig. Die Dinger sind entirely-- sind genau gleich zwischen C und Python, sicherlich in 3. Ich denke, dass in 2 die Divisionsoperator manchmal gibt Ihnen wieder schwimmt, wenn Sie ints betrieben wird, und entweder Sie wollte, dass oder Sie nicht. Aber plus, minus und Zeiten genau arbeiten wie man erwarten würde, außer über etwas mehr Arten. So können Sie schwimmt durch multiplizieren ints, und diese Art von Dingen. Set funktioniert genauso. Sie können zwei Gleichheitszeichen zu verwenden. inequals-- größer als, kleiner als, diese Art von things-- haben die Bedeutungen, du bist mit ihnen vertraut. Wo C verwendet diese Betreiber, Python verwendet etwas mehr Englisch lesbare Einsen. So anstelle von zwei, Et-Zeichen, die Sie buchstäblich geben Sie das Wort "und", "oder" oder nicht." Wie in Ihrem if-- in Ihrem bedingte Anweisungen, wir bereits gesehen, dass diese Syntax in C entspricht dieser Syntax in Python. Und es gibt nicht viel anders da, mit Ausnahme einer etwas Satzzeichen um die Seiten. Wieder, wobei C würde sonst wenn verwendet Python elif, aber diese sind hauptsächlich Änderungen Oberflächenniveau. Iteration wie diese ist häufig in diesem Idiom in Python geschrieben. Sie können diese Art von Produktion Sache mit einer while-Schleife von außen wenn man wollte, aber Sie sicherlich nicht zu. Und wieder, wenn man wollte die Drucken Sie Elemente in einem Array Sie könnten es tun auf diese Weise. Eine der Spaßsachen über Python obwohl, ist, dass Sie nicht brauchen, um dieses Paradigma zu verwenden, und Sie einen verwenden können etwas mehr elegant ein. Sie sagen, für ein in ary. Also anstatt uns hier und über den Indizes läuft, und dann herausziehen Einzelelementen, Ihnen zu sagen, die für den eigentlich nur laufen über die Elemente selbst. Und dann, was auch immer du tust, innen direkt zu betreiben auf die Elemente, die ziemlich lustig ist. Und wir werden see-- wir verwenden, dass Idiom wieder und wieder wie wir zu Fuß durch Code. Dies ist wiederum ein Beispiel von etwas, dass ich rufen Python Magie, obwohl es sehr technischen Gründen, warum es funktioniert. Und es gibt Dinge, die technischen müssen wahr zu Array um sein dafür, hinter die Kulissen zu arbeiten. Die Sache ist, dass die meisten Arten die Sie erwarten, dass dies funktionieren würde mussten dafür implementiert Sie in der integrierten Sprache. Eine andere Sache, dass es schön wäre, ob dies funktioniert in jeder Sprache, aber es gibt einige Gründe, warum es nicht können, Drucken Sie diese Saite mal diese Zahl. Stellt sich heraus, in Python, tut dies genau was Sie möchten, das einfach nur Spaß ist, und bedeutet, dass wir tatsächlich Verringerung dieses Programm wieder mario.c. Anstatt Iteration viel, können wir nur sagen, ich will etwas Anzahl, Ich möchte die Anzahl der Hash-Werte, und einige Hashes am Ende. Und wieder, verwenden wir dieses Format. Hier sind wir im Vorbeigehen eine Variable auf diese Weise. Auch hier brauchen wir nicht zu sagen welche Art von Variable ist, und das einzige Mal werden wir bekomme Fehler ist während der Laufzeit. Wenn jemand versucht, etwas in übergeben, es dann in die Funktion in Ordnung kommen. Wenn wir hier zu verkeilen, da dies nicht der was Sie können Bereiche erstellen über, Ich werde ein Laufzeitfehler dorthin zu gelangen, und ich muss es zu debuggen diese Weise. Aber in der Zwischenzeit habe ich nicht sehr vorsichtig sein, über das, was wird, wie in der tatsächlichen bestanden in, so lange, Ausführungs es funktioniert alles sehr sauber. Ich konnte sogar machen dieses ein wenig Reinigungsmittel Verwendung einer besonderen eingebauten Funktions auf Saiten, das ist rechtsbündig. Dies ist nur eine nützliche Funktion in der Bibliothek liegen. Es ist in der Dokumentation wenn Sie gehen und schauen für sie. Und ich sage, auch werde ich haben Diese Saite, einige Zahl der Hashes, und ich möchte es-- pad Recht zu rechtfertigen es heraus mit Leerzeichen um diese Länge zu sein. Wiederum ist dies in der Dokumentation, die us-- bringt Ich werde tatsächlich durch klicken these-- Das bringt uns zu unserem zweiten Regel für Python-- Standardbibliothek Funktion Verfahren sind Ihre Freunde. Und es ist oft lohnt sich auf die Suche nach Ich frage mich, wenn es eine Sache, die nur tut dies. Es ist wahrscheinlich. Wenn Sie möchten, dass Pad aus einem String, wenn Sie möchten, gerne die zurücknehmen die Hälfte eines Strings, wenn Sie möchten, gerne durch eine Zeichenfolge zu suchen, wenn Sie möchten, dass ein paar Dinge zu zerschlagen zusammen mit einem String mit Komma zwischen ihnen, Es gibt Standard-Bibliothek Funktionen, dies zu tun. Und es macht Ihnen das Leben einfacher, wenn Sie sie nutzen anstelle von Roll-out alles auf eigene Faust in fünf Zeilen Code hier fünf Zeilen Code hier. Das beginnt wirklich summieren sich auf Echtzeit. Eines der interessantesten Dinge, darüber, wie diese aufgerufen wird. Sie werden feststellen, dass es einen Punkt, was. Ich habe einen Gegenstand auf der linken Seite, und dann rief ich einen Punkt eine Funktion. Dies ist eines der Paradigmen, die Python- verwendet zum Befestigen Methoden-Objekten. Wir werden über das, was reden ist sehr kurz am Ende, aber wissen, dass wir beide arbeiten auf Dinge, indem sie das Ding sagen dot was auch immer, oder telefonisch unter eine Funktion, die statt das Objekt und einige andere Argumente. Das sind also die beiden Möglichkeiten, die Dinge in Python getan. Und ob eine bestimmte Funktionalität implementiert in dieser Art oder dieser Stil ist etwas, dass Sie aussehen soll, bis Sie einen Dreh zu bekommen für die man es wahrscheinlich zu fallen. Es gibt eine mehr oder weniger zusammenhängende Philosophie hinter Python dass Sie meist aufnehmen indem er eine Menge drin. An einem gewissen Punkt, die eine von diesen wird etwas implementiert werden als wird natürlich. Denn jetzt, es ist nur etwas, Sie lernen, wie Sie herausfinden jede einzelne Sache. So Standardbibliothek Funktionen sind Ihre Freunde, und sie lassen Sie die Dinge schreiben, dass nehmen so viel Platz wirklich kurz, wirklich elegant. Und das ist eigentlich wahrscheinlich mehr lesbar, würde ich sagen, als das C-Programm da drüben. Nicht zu vergessen die Tatsache, dass so ist zu erwähnen Kurz Sie eine ganze Elefanten passen in den Raum, dass wir gerettet. Eine andere Sache, das ist eine Implementierung von Mario, der Punkt C, die ich denke, ist ist der kürzeste Sie es bekommen können. Es muss nicht die get int, aber es schwer Codes der Wert 10 auf die gleiche Weise, dass dies tut. Es stellte sich heraus, dass dies eine Uhren in zumin 84 Zeichen, während Python ist 64. Und das ist unendlich mehr lesbar als dieser Müll hier. So Python ist effizienter im Raum. Es ist etwas weniger effizient in der Zeit, aber nicht viel. Listen sind eine wichtige Sache in Python. Wir haben sie nicht gesehen, aber sie arbeiten ähnlich wie Arrays zu tun in C. Also hier, können Sie sie zu erklären, Sie können sie in einer Sache übergeben. Jetzt Plätzen hält ein Array von diesen Dingen. Auch hier haben wir nicht die angegebene Typ, aber wenn wir noch einmal zu versuchen, es zu benutzen, alles, was Sie erwarten würden, arbeiten auf einem Array von ganzen Zahlen funktionieren wird auf ein Feld von Ganzzahlen. Das ist eine Sache, Sie absolut kann nicht tun in C, weil die Speicher es so die Hände auf, aber ist sehr einfach, in Python zu tun. Wenn ich will, dass meine Array, größer zu sein, kann ich anhängen ein Element, um es, und es ist in Ordnung. Was ist los hinter den Kulissen? Der Dolmetscher gehen aus und erhalten eine Erinnerung, und vielleicht wird es ein erhalten wenig zusätzlichen Speicher, so weiß ich nicht, damit ich nicht haben jedesmal realloc. Aber um wie viel mehr haben Speicher braucht es? Dies sind keine Entscheidungen dass Sie zu machen, Das sind Entscheidungen, die die Dolmetscher tun wird. Hier sehen wir, reichen kann nehmen zwei Argumente, aber es ist immer noch umfassend sein von Anfang, so dass wir es 1 hinzuzufügen. Dies ist eine Redewendung, die ein noch ist cleverer Weg, um Dinge wie diese zu schreiben. Es nennt Liste Verständnis, und hier, was wir sagen ist Ich möchte in legte ich im Quadrat für jeden Wert von i in diesem Bereich. Das Ding auf der rechten Seite könnte eine andere sein, Array, und das, was auf der linken Seite zu einem bestimmten Funktion sein, das wäre in i als Variable übernehmen und geben Sie mir einige Ergebnis. Was ich tun werde, ist, Ich werde zu konstruieren ein Array, das alle diese Dinge ist für jeden Wert in diesem Bereich. Und das ist super elegant, super kurz, und es ist ganz klar, was es bedeutet. Dies ist einer der things-- dies wieder, einem von-- sehr Sinnbild für die Gründe, dass Leute wie Python. Wenn Sie Programme wie dieser, dann Python ist eine Sprache, Dich zu lernen. Und wieder gibt es technische Gründe, warum das funktioniert. Aber soweit es uns betrifft, wir mehr oder weniger egal. Also, wenn Sie ausdrucken wollen, Listen, einige der gleichen Idiome sind nützlich. Für i in diesem Bereich konnten wir Index über all die Dinge, und drucken Sie sie alle aus. Und Sie werden hier len angezeigt. Wenn Sie schon immer bekommen habe die Länge des Feldes, das ist sehr einfach in Python, es ist sehr schwer in C. Dies würde genau zu drucken was Sie es erwarten würden. Wir könnten auch, wie wir zuvor gesehen haben, iterieren die Elemente in Array direkt, und dann nur reden sie anstatt mit dem Index zurück in das Array jedes Mal. Und das ist eine Sache, die Sie tun können. So in C, wenn Sie nach etwas fragen, so würde Druck sagen, das ist ein Array von ganzen Zahlen. Das ist definitiv nicht ein String, ich kann nicht ausdrucken. Python mehr oder weniger egal. Es ist wie, ist es eine Möglichkeit, dass ich könnte dies auf einen String zu verwandeln? Ja, das werde ich tun. Und so werde ich nur zu drucken, dass aus. Das bedeutet, dass man Dinge tun, like-- diese sind die meisten der harten Teile Spielbericht von fünfzehn Jahren, geschrieben sehr kurz in Python. Sie werden sehen, dass es ein bisschen von-- hier Ich habe eine ganze Zahl in eine Zeichenfolge gegossen, und ich muss dies manuell tun. Und ich werde hinzufügen an einen anderen String, oder anderweitig Python verwechselt wird. Aber ob, wenn Sie Hinzufügen einer Zeichenfolge in eine ganze Zahl, ich nehme an, ein um eine integer zurück oder eine Zeichenfolge zurück? Aber noch einmal, wenn Sie gerade rufen str auf eine Sache, und es könnte in jeder möglichen Welt in einen String umgewandelt werden, wird es wohl sein, in einen String umgewandelt. Hier sehen wir den Einsatz von verschachtelte Liste Verständnis auf der linken Seite, einige Indexierung, die ist genau so, wie Sie möchten, um sie verwendet werden, und einige Ausdrucken der Dinge. Auch hier haben wir definiert haben einige Funktionen und wir werden sie herabrufen im Haupt, wenn wir tatsächlich bekommen die Datei. Rück funktioniert genau wie Sie möchten von der Arbeit mit C Finden Sie erwarten, Wir können Dinge wie eingestellt this-- hier Liste Verständnis gibt es eine Zuweisung zu einer Variablen, und wir können tatsächlich tun es noch einfacher. Wir brauchen nicht, um die Suche zu schreiben, weil eingebaut, um die Sprache ist, wenn dieses Ding ist in diesem Array. Return true, sonst false zurück. Das ist also der Gesamtheit der Entdeckung. Die Gesamtheit der sort beinhaltet den Aufruf zu sortieren, die ist-- es gibt Implementierungen dies in bestimmten C-Bibliotheken gebaut. Wenn Sie möchten diese gerne Art von rückwärts, Sie können diese optional überschreiben Argument in umgekehrter Richtung mit einer wahren. Und wenn Sie möchten, um zu sortieren mehr würde Strings, das ist integrierte als auch. So ist dies nicht zu sagen, das sind Dinge, die Sie jeden Tag tun müssen, aber die Idee ist, dass diese ist die Philosophie von Python, dass all diese Dinge, die Sie möchten Art tun möchte, sind eingebaut. Und die meisten Standardfunktionen, so Art, Länge, was auch immer, unterstützen die meisten logisch sinnvolle Eingabe. Sie rufen auf einem Array dieselbe len wie Sie an einer Schnur len aufrufen. Sie multiply-- Sie Zeichenfolgen sortieren auf die gleiche Weise Arrays zu sortieren. Die meisten Standardfunktionen dass die Menschen zu bauen, und die meisten Drittanbieter- Bibliotheken, die Menschen zu bauen, weil sie Emulation das Design der Standard-Bibliothek, auf alles, was Sie genannt werden wie, warum dies nicht nur Arbeit, in C. Mehr oder weniger, es wird in Python zu arbeiten weil die Menschen hinter den Figur arbeiten Sie heraus, was ein Ding ist, und dann arbeiten angemessen auf sie. Also noch einmal, technischen Hintergrund, aber es macht unser Leben leichter, da-Programmierer. Also hier ist, Datei E / A-. Datei-I / O hat Lose Kleinigkeiten, die es komplizierter zu machen, und so gibt es Ressourcen Online, aber auf den Punkt gebracht, Öffnen auf eine Datei aufrufen Namen mit einem bestimmten Typ. Also das ist, lesen, lesen und schreiben, schreiben oder anzuhängen. Sie lesen eine bestimmte Anzahl von Zeichen aus und Sie diejenigen, zu drucken, Sie Hallo zu erhalten! Ich meine, wie diese Datei hatten Hallo! In ihm anrufen, um zu lesen, und was Sie zurückbekommen werde ist eine Kette, die alle besitzt der Rest des Arrays, oder der ganze Rest der Datei. Wenn Sie diese später nochmals lesen Anrufs Sie sind am Ende der Datei, und so bekommt man nicht alles und so werden Sie zu schließen. Wieder ist dieses .close anstatt close-Datei, wie es in C betragen Dies ist mehr oder weniger, weil f ein Sache, und Sie möchten, dass für f zu schließen. Aber grundlegende Datei-I / O ist nicht besonders kompliziert. Noch einmal, wenn Sie eine Datei öffnen möchten, wenn Sie möchten, dass eine bestimmte Zeile zu lesen, Sie aus der besonderen bekommen können line-- es Einbauten dafür. Wenn Sie ein Schreib würde Sache, können Sie schreiben. Wenn Sie schreiben, individuelle würde Bisse, können Sie diejenigen zu schreiben. Und wenn Sie möchten, durchlaufen in den Zeilen einer Datei individuell, wie wir in einem Stück aus tat vor ein paar Wochen, können Sie das tun. Auch die meisten Objekte, die Sie möchten gerne in der Lage zu durchlaufen sein Unterstützung Iteration über sie. In Pythons, ist eine Datei, vielleicht eine Sache, Ich möchte für Zeile über die Leitung durchlaufen. Wenn es ein Wörterbuch von Wörtern, und ich war versuchen, diese Einzel erhalten Worte aus, dann innerhalb dieser Schleife Linie es geht zu sein wobei jedes Wort der Reihe nach, und dies wird sich für jede Zeile ausgeführt werden in der Datei bis zum Ende der Datei. Und wieder, wenn ich ausgedruckt jeweils Linie, die Linien mit neuen Linien, so dass ich die Einstellung der Ende Rücken an eine Sache wie diese. Dann würde ich den Inhalt meiner Datei zu erhalten. Die zweite Sache, die funktioniert einige Möglichkeiten, wie Listen, und in gewisser Weise als etwas wesentlich kraftvoller, sind Wörterbücher, die wirklich sind cool zu verwenden, aber im Grunde hash Tabellen in der Verkleidung. Sie erstellen eine mit genau zwei Zeichen, das ist genial wenn man versucht, das Arbeitsgerät Hash-Tabelle für Ihr Problem-Set, Sie wissen viel Schmerz, dass sein kann. Aber die Menschen getan haben, sie und erledigt es so gut, dass Sie nicht zu haben, Sorgen mehr darüber. Dann können Sie die einzelnen Dinge einzufügen. Hash tables-- oder Wörterbücher nicht besonders egal, was Sie in ihnen zu speichern sind. Also, wenn einige Einträge sind Zahlen, und einige Einträge sind Listen, wenn einige Einträge anderen Wörterbüchern, und einige Einträge sind Zeichenfolgen, Python nicht viel Pflege. Auch, wenn Sie gehen hinein erwartet ein String und was du zurückkommst ist ein Feld, das ist Ihr Problem. Und vielleicht ist es Schuld wer fand es Dinge setzen im Wörterbuch, vielleicht war sie. Wenn dass jemand anderes, hoffentlich sie waren auch über das, was erzogene wurde im Wörterbuch gehen und keine Fallstricke zu verlassen damit Sie in den Herbst. Aber die Standard-Funktionen Ihnen zurück brav Dinge. Und sie sagen, diese Renditen Back ein Wörterbuch der Saiten, dann alles, was du gehst um aus der bekommen, ist eine Zeichenfolge. Wenn Sie etwas von diesem zu tun und es Reisen Sie gut, das könnte für Sie sein. Python gibt Ihnen sicher genug Seil, um sich selbst zu hängen, wenn Sie möchten. Jetzt können wir ausdrucken Einzel Elemente der das und das Rendite genau das, was man erwarten würde. Genau das, was man erwarten würde, denke ich, ist eine Phrase, die ich benutze eine Menge, aber das ist mehr oder weniger, wie Python funktioniert. Wenn Sie für eine Sache zu bitten, die nicht es, Python wird werfen einen Fehler und es wird Sie von beenden unabhängig von Programm, das Sie waren in. Es wird tatsächlich ausdrucken Weitere Informationen als das, es wird darauf Sie-- es wird fügen Sie eine Zeile, und so. Und wieder, vielleicht wollen wir Wörterbücher laufen und finden Sie alle Dinge in ihm. Hier sind wir Laufen zwei Dinge zur gleichen Zeit. Und so werden wir es mit einem Schlüssel, Wert zu tun, aber dann drucken Sie alle diese. Und wenn wir wollten cast-- wenn wir tatsächlich lief dies, wir würden ein paar Probleme, da haben an-- als wir gingen in mit David, es könnte nicht add-- wenn wir nicht warf es in einen String ersten, konnten wir nicht, dass die Array hinzufügen von Strings auf einen String. Aber wenn wir es gegossen, um eine String, etwas, erhalten wir wie diese, die vielleicht ist was wir gerne lesen. Und das ist Speller. Wir haben gerade in Sachen gelesen. So können wir in der zu lesen einzelne Wörter als Linien. Wir hacken Sie die letzte Sache, so dass Doppelpunkt minus 1 chomps off die letzte Sache, die wir-- das letzte Zeichen eines Strings. Wir werden sagen. OK, die jeweils einer von denen bekommt in diesem Wörterbuch eingefügt, Zuordnung zu einem Wert von 1. Wir tun nicht besonders egal, dass man, aber es ist nur da, um zu sagen, na ja, diese Sache werde ich im Wörterbuch gestellt. Denn später, was wir sind zu tun ist, wir sind sagen, na ja, wenn es in dem Wörterbuch überhaupt. Auch dies Scheck Mitgliedschaft bis Betriebs Verwendung eines völlig anderen Algorithmus, als es in einer Liste, aber wir nennen es die gleiche Art und Weise, die ist etwas von diesem Python Zuckerguss Dinge, so dass sie leichter zu bedienen. Und wieder, die wir gesehen haben Dinge wie diese vor. Dies ist im Wesentlichen zu finden, oder es ist genau das gleiche Syntax als zu finden, aber wird über eine Betriebs völlig andere Struktur. Und wir wissen nicht besonders zu kümmern. Das sind also die Dinge, die Sie wurden aufgefordert, für die Rechtschreibprüfung zu implementieren. Bei diesem Tempo werden wir bekommen mehr oder weniger alle psets getan. Publikum: So, dass Grundsätzlich kommt gerade zurück als falsch geschrieben, wenn dies nicht der Fall passen etwas im Wörterbuch? ROSS Rheingans-Yoo: Ja, ja. Und so ist dies ein Anpassung eines Problems setzen was fordert Sie auf, genau das zu tun. Publikum: Warum ist die Linie minus 1 gibt es? ROSS Rheingans-Yoo: So wenn Sie laufen sind mehr als eine Datei fordern durch Linien, die Linien sind mit einem Zeilenvorschubzeichen am Ende es-- die minus 1 ist nur für diejenigen, Shop aus. Und dies ist ein besonders flexibles Art der Indizierung in die Dinge. Also, wenn Sie einen String zu haben, und Sie möchten, auch ich bin in Zukunft an Zeichendrei starten und ich werde bis zum Ende zu gehen. 3 Doppelpunkt, dass für Sie tun. Wenn Sie wie sie sind, möchte ich am Start beginnen und gehen bis zum letzten minus 1 Charakter, Doppelpunkt minus 1. Und wenn Sie wollte aus gehen die dritte auf die minus erste, dann würden Sie 3 minus 1 sagen. Außerdem, wenn Sie indizieren möchten in die Dinge zu zählen von der Rückseite, Sie gerade Index mit minus Zahlen. Und da, wo C explodieren würde oder vielleicht füttern Sie andere Speicher Sie nicht haben, Zugang zu, hören, Sie sagen können minus 1 ist der letzte, aber 1 Zeichen in einer Zeichenkette. Module sind version-- sind Analoga zu Bibliotheken in C und sind für eine Menge Dinge. Eine Menge Dinge, die Sie möchten gerne in Python zu tun, Neben einfachen Manipulation von Variablen, Sie wollen in den Haken größeren Bibliotheken mit größeren Schnittstellen und Funktionen für die Interaktion mit anderen Teilen der Welt. sys ist einer von denen, mit einem Bündel von Werkzeugen die nützlich für die Interaktion sind mit dem System selbst und wird es wie import sys importieren. Es gibt noch mehr Unterlagen dass, was man hier zu gehen, oder die Sie auf Google finden konnte, durch googeln Python sys. Sie geben in Kraft. Die erste Verbindung sein wird, Die Dokumentation in Python 2, die zweite Verbindung zu gehen ist die Dokumentation von Python 3. Und wenn wir eine Datei, die sah, schrieb wie this-- Wenn insbesondere sind wir Blick auf die auf Befehlszeilenargumente, wie wir gelernt, sehr zu tun früh in dieser Klasse. Dies ist nicht schwierig. Sie können raus argv, Das ist eines der Dinge, das von sys umgesetzt wird. Es ist nicht auf das integrierte Basis-Paket, aber wieder, die Sie kann sie durch den Import zu verlängern , dass die Funktionalität von sys. Du wirst es sys nennen. was auch immer. Hier gibt es argv. Es gibt tatsächlich keine argc in sys, weil Sie kann sie so leicht durch den Aufruf len. Wir haben dann gedruckt, dass aus, dann sind wir lief auf unserem Terminal echo-args.py. Wir bekommen wieder ein Array, das ist dies das erste Argument. Auch dies ist argv 0, was das ist Name der Sache, die genannt wurde. Wenn wir es genannt mit zusätzlichen Argumente, würden wir solche zurück. Dies ist ein Weg, Befehlszeilenargumente. Wenn Sie Flags, wo Sie drehen möchten bestimmte Dinge, die am oder Override- eine bestimmte Standard, argparse ist dein Freund. Und wieder Ihnen die online zu finden bei python argparse bei Google. Es gibt ein paar von Utility Module, die Sie sich selbst zu finden mit und wieder, wenn Sie zu jeder Zeit zu verbringen der diese Sprache importieren jsons zum Lesen in und aus JSON Dateien, nicht so kompliziert. Sie öffnen eine Datei, json.load nannte Sie auf diese Datei, und Sie etwas zurück zu bekommen. Was ist das Ding? Es ist ein JSON-Objekt. Wo das JSON-Array verfügt, die Python hat Arrays. Wo das JSON hat assoziative Arrays, Pythons Wörterbücher, Streicher, und Zahlen, und so weiter. Sie wollen, dass auskippen Sie eröffnen eine neue Datei, die Sie Dump nennen, und lädt und Deponien, um gehen in und aus Strings. Ebenso Gurke aufgerufen wird grundsätzlich auf die gleiche Schnittstelle. Es ist etwas mehr sinnvoll, wenn Sie Dumping Python-Objekte sind. Also, wenn Sie überhaupt zu retten wollten eine Version des aktuellen Status einer Variable für eine zukünftige laufen des Programms, Gurke ist Pythons Bibliothek für das zu tun. Wenn Sie jede Art von haben Variable, die ausgeschrieben werden können, in wie Wörter und Zeichen und bytes-- wie diesem Wörterbuch, wir aufschreiben, die wir könnte es sich wie zu schreiben wie ein JSON-Objekt, das war buchstäblich diese Zeichen. Und dann wäre es für sehr einfach ein Mensch zu öffnen up-- eröffnen und lesen Sie es. Wenn wir nicht besonders kümmern uns um die Menschen lesen, wir noch effizienter zu verpacken könnte in Formen, die später ausgepackt werden könnte oder das könnte später aufgepumpt werden. Und das spart 80% der Raum, dass Ihre Objekte könnten nehmen, wenn Sie heraus schrieb sie Langschrift. Sie rufen Gurke sehr das gleiche way-- Dump, laden, und dann können Sie Ihre Sachen zu erhalten zurück. Also, wenn Sie sehr das Schreiben kurzen Python-Programme, wollen Staat zu retten, und dann lesen sie später wieder, Dinge wie diese sind Ihre Freunde. Dass man sehr leicht steckt sie als JSON. Die meisten Python-Objekte kann auskippen JSON wenn es irgendeine Hoffnung, dass strukturell sie konnten auf diese Weise dargestellt werden. Dies sind nur die Spitze des Eisberg auf Module, die nützlich sind. So sys, os, Multiprocessing sind Art von grundlegenden Arbeitstiere für die Dinge, wir brauchen, um die Interaktion mit das Dateisystem os., wie os.isfile, os.isdirectory, os.makefile, das sind deine Freunde. Wenn Sie interagieren wollen mit einem bestimmten Dateityp, json, Gurke, csv. Wenn Sie mit Web interagieren wollen Seiten, die urllib für immer http Seiten. bs4-- BeautifulSoup-- es ist eine wunderbare Parser für HTML. Sie führen Sie es auf einer HTML und Sie erhalten diese verschachtelte Array-Objekt jetzt, die Sie beim durchqueren Lookin, mit wie gerade auf der Suche nach wenn ist, in, was fantastisch ist. Es gibt eine Reihe von Pakete für running-- dafür besonders mathy Dinge. Also, wenn Sie sich zu vermehren möchten, umkehren, Transformationsmatrizen, numpy wird von Menschen genutzt auf der ganzen Welt dafür. scipy ist noch nützlicher Werkzeuge in dieser Richtung. sklearn-- maschinelles Lernen, Verarbeitung natürlicher Sprache, super nützlich stuff, bekommt die ganze Zeit in Python implementiert. Und wieder, dauert etwas mehr write-- sorry, dauert etwas länger zu laufen, aber der Grund, dass echte Ingenieure neigen dazu, Verwendung Python ist, weil Sie in der Regel auf Sie blockiert den Code zu schreiben, und nicht als Ihr Computer mit dem Code. Also, wenn Sie gehen, um eine zu schreiben sind Programm, das viele andere Menschen gehen zu verwenden für immer, wie Linux, die Sie könnte es in C schreiben Sie waren werde eine Berechnungsmaschine zu schreiben, Sie könnten in Python zu schreiben, wenn Sie gebraucht um es zu ändern alle paar Monate. Manche Leute würden sie schreiben in C, weil sie so. Also haben wir import sys gesehen als ein Weg, um die Dinge bekommen Modul in Ihrem Programm. Sie können auch als importieren ein Spitzname, wenn Sie möchten. Wieder Multiprocessing ist ein Schmerz, Geben Sie jedes Mal, so importieren mp und dann, wenn Sie verwenden, in dem Programm, Sie sagen mp.process, oder was auch immer. Wenn Sie möchten, import nur eine einzige Sache, so urllib hat ein Ding namens Anfrage, so können Sie einfach importieren, dass. Später werden Sie nicht so rufen Sie es urllib.request, aber genauso Anfrage von selbst. Und Sie können alles importieren aus einem Modul, wenn Sie möchten. Das ist manchmal nicht gut idea-- dies in der Regel nicht eine gute Idee, eigentlich. Weil Sie very-- denn wenn irgendetwas in diesem Modul hat einen Namen, den Sie wollte woanders verwenden in Ihr Programm, das geht nicht. Und es ist nicht immer offensichtlich, , dass das der Fall ist. Um sicherzustellen, dass was Sie taten war sicher, Sie zu öffnen, benötigen das Modul und sehen Sie alle der Namen, die am Ende in sind-- alle Funktionen, alle Variablen dass in diesem Modul zu leben, weil Sie bringen sind alle sie in Ihren lokalen Namensraum. So können die Leute tun. Es wird allgemein empfohlen dass Sie dies nicht tun. Aber die Leute tun dies die ganze die Zeit, weil sie faul und nicht zu tippen mp möchten. nichts, überhaupt. All das Gerede über Module bringen mich um mit einem kurzen Vortrag wie Sie Programme in Python zu entwickeln. Der erste Schritt ist, um zu überprüfen, um zu sehen, wenn jemand anderes hat bereits das getan, oder getan 90% der Sache. Die Chancen stehen sie wahrscheinlich haben, und Sie sollte holen ihr Ding, und führen Sie das. Oder schreiben Sie eine Wrapper um es um es zu einem Zweck anzupassen. Es ist erst danach hat gescheitert, dass Sie dann würde gehen und write-- beginnen darüber nachzudenken, wie würden Sie diese Sache zusammen. Es gibt viele Sachen gibt, ist, und dass eine der nützlichsten Dinge über Python. Wie die Sprache ist elegant, die Sprache ist einfach zu bedienen, sondern auch, weil es ist so elegant und einfach zu bedienen, Menschen benutze es für ein lange Zeit und es gibt eine Menge Sachen, da draußen, dass man nutzen für den eigenen Gebrauch. So letzte Regel von Python ist, jemand, anderes bereits wohl geschrieben ein Modul zum, dass bereits jemand anderes hat wahrscheinlich eine Bibliothek für die geschrieben wird. Bevor Sie versuchen, etwas zu tun, schauen um zu sehen, ob es gewesen ist implementiert. Es ist nicht so schwer. Alle Module, die ich in Aufmachungen vor, vielleicht mit einer Ausnahme, kommen in jeden vorinstalliert Standard-Python-Installation. Und so mit einem Aufruf importieren, was auch immer, Sie haben alle diese Funktionalität an deinen Fingerspitzen. Beginnend zum Abschluss dieser Diskussion, es gibt ein paar Dinge, dass ich als schwarze Kästen verlassen haben und Art beschönigt, und es gibt ein paar weiße liegt, dass ich gesagt, dass aus Gründen der Ehrlichkeit, Ich werde zumindest Punkt hier, auch wenn ich nicht go Super tief in alle von ihnen und deren technische Erläuterungen. Viele der Dinge, dass ich Magie genannt ist das, was andere Leute nennen würde Objekt orientierte Programmierung. So gibt es viele things-- so Variablen sind sehr oft nicht einfache Byte sitzt, Speicher, aber sind sehr kompliziert Objekte, die internen haben Zustand zu Funktionen und viel der verborgenen Variablen, Lose versteckte Funktionen, die lässt man sie biegen Sie in die Saiten, mit dem Sie über sie zu durchlaufen. Und wenn Sie writing-- sind und der Grund dafür, dass sie haben alle diese vielfältigen Funktionen Denn die people-- Die Architekten des language-- gegangen durch und für jeden Standard- Objekt, in der Funktionalität setzen zu sagen, das ist, wie dies wie das wird zu bedienen wenn jemand will, um darüber hinweglaufen. Also alles, dass jemand könnte vielleicht wollen durchlaufen, hat Logik geschrieben manuell, wie du bist soll über das Objekt durchlaufen. Alles, was man sich nur wünschen könnte gedumpten in einen String hat Logik geschrieben. Dies ist die Funktion, die Sie aufrufen, wenn Sie dies in einen String auskippen möchten. Aus diesem Grund können Sie rufen len auf die Dinge, diese Deshalb suchen Sie bei anrufen können, ist dies warum Sie, wenn in alles anrufen aus, die du zu wollen, weil denen alle mit ihnen trägt, das technische Know-how, das zu tun. Diese ist etwas, das ich Super nicht gehen, um in zu gehen. Aber für die Sache in die Liste ist subtil verschieden von C-Stil für Loops, und Sie können alles darüber zu lesen das Internet, wenn Sie daran interessiert sind. Es gibt eine dunkle Seite, um alle dafür, dass ich bereits erwähnt, so gibt es zwei Dinge. Der erste ist, dass dieser die objektorientierte Programmier fügt eine Menge von Overhead- um zufällige Dinge, so dass Sie am Ende up mit viel mehr Speicher; Sie am Ende mit ein wenig mehr Zeit, als Sie sonst der Fall wäre. Die other-- aber desto heimtückische dunkle Seite, dies ist, wenn die Dinge einfach zu handeln wie Sie es wollen , ohne daß Sie denken, super hart ob dies ein int sein bzw. ob es sollte ein float, könnte es sein, dass hier Sie int erzeugen aber hier Sie denken, aber sie sind traurig always--, es könnte sein, dass Sie hier Sie produzieren einen Schwimmer, aber wenn man auf den zweiten Teil zu bekommen des Programms, werden Sie denken, na ja, aber sie werden immer an mir einen int. Und wenn sie es nicht tun, dann ist es möglich, dass Sie irgendwo eingeklemmt, wenn Sie versuchen, dass zu Index verwenden in ein Array, oder was auch immer. So eine der realen nützliche Dinge über C ist es zwingt Sie wirklich denken, hart, bevor Sie any-- machen bevor Sie eine variable bringen ins Leben, wie das, was ist die Art dieser Variablen. Und es ist zu haben, dass Art für alle Zeit. Das ist nicht wahr Python, und in der Tat, Sie can-- wenn Sie gerade sind Art gehen nach Gehör, und Sie haben einige Entscheidungen zu treffen eine Möglichkeit, an einem Ort, und einige Entscheidungen einer Weise in dem anderen Ort, ohne dass genügend Sachen hinter die Szenen in dem anderen Ort, die Dinge richtig zu fangen, können Sie können einige sehr seltsame Fehlermeldungen erhalten. Und kann das Programm laufen zu lassen für eine sehr lange Zeit, weil es tun eine Menge Arbeit zu sagen, gut dieses Ding könnte auf diese Weise zu arbeiten, so werde ich, so zu laufen. Und in der Tat ist die Tatsache, dass es schiebt mitteln durch eine Menge von kleinen Fehlern bedeutet, dass oft, wenn Ein Fehler ist eigentlich schlecht und Sie wirklich wollen, um es zu beheben, es endet Meilen away-- Programms landet Stoppen Meilen entfernt aus, wenn Sie Ihr Fehler war. Und so eine Sache, die wir gerne Programmen zu tun, sometimes-- eine Sache, dass wir gerne Programme zu tun, wenn wir das Debuggen ist nicht laut und nicht sehr schnell, wenn etwas schief geht. Python ist, dass sehr schlecht. Python ist sehr gut bei nicht versagen und Rollforward durch unerwartete Dinge. Das ist also nützlich, wenn Sie schreiben kleiner Programme. Wenn Sie kompliziert Bugs es manchmal dauert eine lange Zeit, sie zu necken. So gibt es eine dunkle Seite, um alle dieser, wie es arbeitet gerade. Es funktioniert genau wie Sie es erwartet. Außer dass, wenn dies nicht der Fall, beendet man up in einem ganz anderen Ort, und versuchen, herauszufinden, wo es war, dass Sie falsch gelaufen ist. Garbage Collection ist-- so eine Sache, werden Sie feststellen, ist, dass eines dieser Dinge, Ich habe in existence-- gebracht Diese Arrays werden diese Wörter Diese Objekte, diese files-- nie freigegeben zu werden. Es gab keinen Anruf an kostenlos in einem der diesem Vortrag. Und das war auf der C-Seite, weil wir bekamen nie in diesen Dingen. Aber in Python-Seite, gibt es kein freies. Die Dinge werden automatisch freigegeben, wenn Python denkt, Sie suchen nicht nach ihnen. Es ist wirklich gut, nicht befreien Dinge, Sie vielleicht noch eventuell sein Blick auf, aber dies bedeutet, dass, wenn Sie wurden werde dieses große Ding zuteilen, und du, oh bist Ich bin mit ihm jetzt getan, ist es schwierig zu sagen, Python , dass Sie mit ihm jetzt getan. Sie können manchmal eingestellt dass variable unübertroffen sein, und dann hoffen, dass irgendwann der Garbage Collector kommt durch und reinigt es aus. Aber noch einmal, du nicht haben die Kontrolle über das. Und einer der Gründe, dass die Menschen zu verwenden C für wirklich leistungskritische Dinge, ist diese Fähigkeit, wirklich wissen, wann Speicher zugewiesen wird und wenn es freigegeben und haben eine Menge Kontrolle über zu sagen, Ich benutze keine Erinnerung mehr als ich brauche. Welches ist etwas, Python ist nicht, dass bei großen. Publikum: Kann ich Ihnen eine Frage stellen? Was hast du damit meine nicht laut? ROSS Rheingans-Yoo: Also, wenn etwas falsch läuft und Sie bei der Fehlersuche sind Modus sehr oft würden Sie möchten Sie Ihr Programm um Ihnen zu sagen wo genau es schief gegangen, und nicht nur leise auf zu laufen. Aber Sie würden eigentlich ist es zu drucken aus allen Arten von Informationen über wie, hier war diese. Dies passierte Wenn Sie drucken a wen--, wenn Sie eine Web-server-- bist ZIELGRUPPE: [unverständlich] ROSS Rheingans-YOO: Ja, wenn Sie laufen einen Web-Server, ist es manchmal schlecht wenn Sie immer Verwerfen Fehler, und du sagst, auch das hat nicht funktioniert. Ich werde aufhören. Ich werde einfach zu ignorieren, es und fahren weiter. Denn dann bekommen Sie Hunderte in kann Fehler und diese nicht sehen können. Es wäre sicherlich sinnvoll sein, zur Fehlersuche jedes Mal, wenn Sie Ihre Web-Server hergestellt ein Fehler, musste man dauerhafte Aufzeichnungen, dass. Vielleicht sogar wollen, dass Sie das Programm zu stoppen, so dass die Datensätze nicht unter die Dinge begraben. Aber noch einmal, das ist im Debugging-Modus. Oft im Produktionsmodus, der Welt ist ein wenig anders. Und in kleinen Skripten, die ich laufen, wo die Sache, die ich zu tun vielleicht nur ein wenig dran, von dem, was ich habe Lust, es zu tun, dann irgendwie durchzusetzen Fehler ist etwas, möchten Sie vielleicht. Und in diesen Fällen durchaus Python wirklich verdient seinen beginnt. Das letzte, was, dass ich nicht sprechen in this--, dass ich nicht darüber reden aber kann wirklich ärgerlich die erste Zeit haben Sie einer dieser Fehler, und die zweiten und dritten und vierten Mal haben Sie einen dieser Fehler. Python habe ich erwähnt, dass es Leerraum verwendet Sie welcher Ebene der Vertiefung zu sagen, und welche Funktionsblock sind Sie in, der zur Behandlung von Tabulatoren und Leerzeichen anders. Also, wenn Sie Register auf vier, und dann die nächste Zeile hat vier Räume, auch wenn sie zeigen, wie das gleiche Menge in Ihrem Editor, Python nicht behandeln sie die gleiche. In der Tat, Python behandelt Registerkarten und Räume wie Öl und Wasser. Sie sind einfach verschiedene Dinge. Es gibt keine besondere Länge, die ein Register ist, so ist es nicht, wie ein Reiter gleich 8 Räume und so würden Sie es umgehen dieser Weg. Wie, wenn sie sagt, was Höhe der weißen Raum Ich bin bei, es ist eigentlich auf der Suche nach einem Muster von Leerzeichen und Tabulatoren. Und so ist der beste Weg, damit umzugehen ist es immer Bereiche sind die ganze Zeit. Und in der Tat, in der Cloud9 IDE und der CS50 IDE, Ihre Tabulatortaste Einsätze vier Räume in statt einer Registerkarte, die super nützlich ist. Obwohl wieder, wenn Sie eine Python geschrieben Programm mit Registerkarten, die in Ordnung sein würde, ist es nur, wenn jemand ging hinein und versuchte zu fügen eine einzige Zeile zu Ihrem Programm, dass hatte vier Räume für jeden Reiter, es wäre zu brechen. Und es wäre in einer Weise zu brechen das ist wirklich nicht sichtbar. Obwohl die tatsächliche Fehler Nachricht, die es wirft hat mit neuen zu tun Einzug hier nicht zu erwarten, oder-- Wenn es um Gedankenstriche im Gespräch und es sieht aus wie es ist falsch, es ist wahrscheinlich, weil gibt es eine Registerkarte-Platzproblem. Sie immer noch ärgerlich debuggen. Die größte ganze in Dieses Gespräch, das ich nicht lernen, weil es wirklich ein komplizierter, subtiler Thema, und notwendig zu einem tun nicht von dem, was wir bisher getan haben, sind ein Konzept namens Tupel. Sie sind dort ähnlich wie die Arrays, die Sie nicht verändern können. Sie bekommen ganz über dem Platz, weil verwendet die sie für viele Dinge sind nützlich dass Arrays sind nicht nützlich. Aber, wenn Sie möchten, um ein Array zu machen, und dann verspreche den Interpreter, dass Sie nie gehen zu wollen, zu modifizieren, dass thing-- in der Tat, wenn Sie ändern möchten, Sie werden eine neue mit dem neuen zu machen Werte im es-- Das sind Tupel. Anstatt Herstellung sie mit eckigen Klammern, Sie sie produzieren mit runden Klammern. Warum Sie diese Dinge zu benutzen, ist ein bisschen eine Frage. . Die einzige Sache, dass ich sagen zu, dass es Ihnen Tupel können als verwenden Indizes für Wörterbücher. Sie können keine Arrays verwenden, wie Indizes für Wörterbücher. Und warum ist, wieder, technische und Ich werde mich nicht in sie ausgeführt werden. Die pset, die ich nicht berührt auf in diesem Vortrag ist pset6. Also hier ist, wie Sie 'd Umsetzung a-- hier wie Sie pset6 in Python zu implementieren würde. Wenn man bedenkt, das Python- Design-Zyklus, das erste, was dass Sie, wenn Sie Schreiben von Programmen ist Check um zu sehen, wenn jemand hat es bereits getan. In der Tat, wenn Sie wollen Apache 50 serve-- tut dies etwa, außer es kommt nicht Standard-Installation auf Linux-Maschinen. Python tut, und die Python- einfache HTTP-Server funktioniert auch. Wenn Sie auf einem Linux-Computer sind überhaupt, oder der Cloud9 IDE außerhalb CS50 und Sie möchten, um diesen Strom zu dienen Verzeichnis in einem bestimmten Port, python-m Simple Port dient, dass. Sie können auch importieren der einfache HTTP-Server und es ist eine Vielzahl von Funktionen hat, wenn Sie sie besonders an, oder ändern Sie es wollen, oder laufen es-- nutzen es um führen Sie Ihr eigenes Server-Dienste. Also das ist, Python auf den Punkt. Und dies war CS50. Vielen Dank.