ROSS RHEINGANS-YOO: Здравейте, аз съм Ross.
И това е CS50 семинар.
Тя ще ви отведе от програмиране в C програмирането в Python.
>> Python е скриптов език.
Това е до голяма степен като C в синтаксиса, въпреки че някои
на техническите подробности колко получава изпълнена, че синтаксиса
са малко по-различен.
Тя е по-мощен от C в някои отношения.
Тя е по-изразителен за къде точно във вашия компютър
памет получава изложени, как той се изложи,
когато тя стане свобода, и тези различни неща.
>> Това е по-полезен от C в някои отношения, защото е по-лесно да програмирате инча
Езикът е, до известна хора, по-интуитивен.
И наистина, като целта е за тя да бъде по-бързо, за да програмирате
и потенциално по-бавно, за да се изпълни.
>> Сега, ако мислите, че за размера на времето
сте прекарали на вашия последен проблем зададете писане
Код си срещу период от време, което прекарвате
в последния си проблем зададете изпълняващата кода си,
бихте си представим, че на езика което беше два пъти по-бързо, за да пиша,
и два пъти по-бавно, за да се изпълни, може да бъде подобрение в сравнение с C в някои отношения.
Разбира се, когато се опитвате да напише малки програми, които да правят малки неща,
Python е полезен език на избор.
>> И в края на тази семинар, се надявам да
да бъде в състояние да направи избор в бъдещи проекти
за кой език е правилно да се използва, а не на идеята
че един език е по- коригира цялото време.
Няколко неща за това, което семинара е.
Този семинар не е предназначена да ви научи Python от нулата.
Python е много сходна до C, и аз съм се предположи
че сте студент CS50, или някой, с подобна познаване C.
>> Ако сте студент CS50 около проблем зададете 6,
Така че сте въвели много неща в C, аз ще ви дам
основните разлики, и някои от нещата,
които правят Python различно и специална и полезна,
но аз няма да отида за какъв език за програмиране е
и как да се пишат програми.
Въпреки това, този семинар ще преподават можете да напиша Python програми
ако сте един от тези няколко групи.
Отново ние ще разгледаме как бихте приложи psets--
че трябва да бъде 1-6 в Python-- и осигуряват указатели
до официална документация за справка в бъдеще.
Другото нещо, което е важно за това как са разпределени тези разговори,
това видео ще бъде онлайн, с любезното съдействие на CS50,
така че не трябва да се чувстват като трябва да си водят бележки.
Винаги можете да се върнете и да погледнем при това по-късно като отправна точка.
Допълнително слайдовете са на разположение в момента
в този сайт, който трябва да вземат ти направя док Google.
Това е малко по-съкратен вариант от това, което аз съм се показва на екрана.
>> Един внимателен протест пред ние скочи, Python 3
е друг език от Python 2.
Те изглеждат много по същия начин; има съвсем незначителни технически различия
че ще доведе програми написан на Python 2
да не бъде в състояние да се изпълни в Python 3 околната среда.
>> Уредът идва с The CS50 Python, по подразбиране той използва Python 2.
Можете да проверите това, като пишете във вашия команден ред
питон --version, която трябва да изведе 2.7.6 по текущата уреда.
Опитайте Python 3, което прави работят в уреда,
ако Python подразбиране 2.X.Y, или по уреда или на вашата собствена машина.
Трябва да замените Python 3 по всяко време в тези приказки, че аз пиша Python.
Ако вашата машина е използвате 2 по подразбиране, тип
Python 3, за да може действително да следват заедно и да изпълни тези неща.
>> Освен това, аз ще ви посоча по време на официални източници в момента.
docs.python.org/3--~~V внимателни че това е 3, а не 2--
има полезни препратки.
Инструкция ще ви преведе през много от същите неща
че правя сега, освен в текстова форма.
Референтен е полезно като справки за езика,
и Standard библиотека дава ви някои от разширения
с допълнителна функционалност.
>> Така че много първата програма Python.
От ляво имаме стандарт C, отдясно, имаме Python.
Може би сте признати този проблем, това е
един от първия проблем залязва в CS50, и те
го решим с помощта на същия разтвор.
Сега, поради причината, че ние сме погледнете в тях рамо до рамо
е за да можем да погледнем синтактични различия.
Един от слоновете в стаята че може би сте забелязали полето
разстояние бухалката, е, че не разполага с Python Основната функция обвиване около кода.
Така че в C, пишете куп файлове, като ги свързват заедно,
и програмата започва изпълняващата в това нещо, наречено инт главната.
>> В Python, пишете картотекирате, изпълнява файла,
програмата започва изпълняващата в горната част на файла.
Така че това ще започне в горната част на файл
отидете надолу, докато се намери нещо друго.
Ако установи, дефиниция на функция, той всъщност няма да се изпълни този код,
то просто ще определи функцията.
Но тук, когато първият програма е п е равно на 10,
първото нещо, което тази програма ще направим, е да се възползвам от тази стойност от 10
и да го настроите в променлива наречена п.
>> Говорейки за тази линия, един от друга things-- sorry-- това
означава, че програмите на С, ще ги напиша,
ще ги направи, което ще позове някои звън команди,
и тогава ще изпълните Получената изпълним.
Python програми, можете да стартирате текст file-- този mario.py мощ
бъде този файл, че аз просто показа you-- ще тече този файл
и ще се изпълни, и съдържанието на това
ще бъде изпълнен от интерпретатора на Питон.
Можете да направите това във вашия IDE.
>> Така че, ако имам файл Здравейте, който просто има това съдържание.
Това всъщност е Python 2, не Python 3, така че не го правят
притеснявате за синтаксиса за сега.
Но аз ще тичам Python, за hello.py, и той работи.
>> Друг начин, по който мога да използвам, че Python Аз няма да се справи с толкова много в този разговор,
е, ако аз просто напишете Python, тя ми падне в една среда, където
Мога да я храня Python ред по ред.
Така че тук, ако напишете в принт пространство "Hello, World".
Въведете влиза.
Тя ще ме плюят, че подкрепят резултатите това лице линия веднага.
>> Това може да бъде полезно.
В този разговор аз ще направя нещата по предметни стъкла.
И така, вие ще бъдете в състояние да следват заедно или тук, или като пишете
действителните файлове и след това да ги изпълнява.
>> Но, да се върна към това код, още нещо
че може да се наложи noticed-- добре, има
две неща, които може да забележите, за тези блокове.
Първият, по-скоро по-банално, е, че питона не изоставаше и запетая.
>> Точка и запетая не са задължителни навсякъде и безвредни навсякъде.
Можете да ги добавите.
То може да накара хората, които пишат Python за един живот кикот по вас
зад гърба ти, защото те не са необходими.
Те често са признак на задържани над от C. Дизайнерите на езика
Чувствам, че това е по-ясно, по този начин и че не е необходимо да се декларират
всеки път, когато в крайна линия.
>> Друго странно нещо за този п е че не разполага тип приложен.
Един от най-вълшебните парчета Python-- и аз отивам да го наричат ​​магия,
но има много технически причини, поради които
works-- един от най- вълшебните парчета на Python
е, че променливи могат да се разширяват или свие до съдържат каквото и данни
видове, които бихте ги да искат.
>> Така че това е 10.
Ако по-късно надолу I определено на тази п 0.5, това ще отнеме, че 0.5.
Без значение, че това е едно цяло число тук и плува там, нещо, което използва този п
ще, повече или по-малко, да може да пъхтене заедно ако стане една от тези.
Освен ако няма някаква реална причина, поради която не може да използва данните
написали, че в момента има п, в този момент той ще получите
заклещва и хвърлят грешка, и тези различни неща.
>> Но тук, Python не ми пука какво
то е, че аз отивам да се придържаме в тази изречение, като, искате това нещо?
Това нещо в това?
Да, това е вид на нещо.
Аз ще го залепите в края.
Това ще бъде проблем по-късно, ако някой, който иска да използва тази цел
не може да се справи.
Това е една от най-големите разлики между Python и C
който го прави лесно да се напиша много големи програми C
и го прави по-лесно да се напише много малък Python програма.
>> The за синтаксис не е много различно от това, което той прави.
Това е малко по-различен в това как тя е изразена.
Така че това е един много, което се нарича Pythonic, начин да го пишете.
за ред в диапазон (п), това е най- поредица от номера от 0 до п,
включително на дъното и изключително на върха.
Така че е от 0 до п-1, което е точно това, кодът C се правят,
освен това е много по-лесно да погледнем може би.
>> Съответният блок е не тръгна с тиранти,
вместо това е тръгна от тази вдлъбнатина.
Така че всички тези линии са четири пространства над надясно,
или като за ширина на слон.
И тези, които са тези, които са ще бъде изпълнена в тази за.
Ако аз обърквам отстъп по този въпрос и аз
бутнете че печатащата обратно оригиналния вдлъбнатина,
че на печат ще остави за контур.
За разлика от C, когато тук аз всъщност трябва да се движат, че затворената скоба наоколо.
>> Това означава, че те не получават грешки че се хвърли върху вас, защото вие
сложи скоба в грешното място.
Това означава, че можете да получите грешки че се хвърли върху вас, защото вие
разчленена линия погрешно.
Така че има вдлъбнатини супер внимателни.
Надяваме се, бяха като супер Внимавай с отстъп или иначе,
и така, че това не е много по-голямо бреме.
>> Но основно правило за Python, и ще имаме няколко от тях
че ще мине през през По време на разговора,
се опитайте естествен синтаксис преди да погледне нещо нагоре.
Така че този синтаксис, за този номер в обхват,
Много е отличителен по отношение на стила.
Много неща в Python ще видим, като тази форма.
>> И така, ако излезе с нов обект, който ви
Мисля, че трябва да бъде в състояние да обхождане това, в този формат,
Оказва се, че вероятно поддържа този формат.
Ние няма да отиде супер дълбоко в техническите причини, поради които е вярно.
>> Но това е полезно да има интуиция когато сте приближава Python програми,
че това нещо е просто ще работят.
Опитай.
Обувка горе командния ред Interpreter, да видим дали тя работи,
продължим с нещата, преди да дори трябва да се отворят Google и да кажа,
какъв е синтаксиса този конкретен нещо?
Много Python бихте могли да открият само като се опита.
>> Това, ако е още по сходен да C тогава Форс са.
Имайте предвид, че няма скоби.
В скоби са отново безобидни, но ненужни.
Има дебелото черво в края точно като за електрически вериги,
и отново, относителните блокове са разчленена, а не тръгна от скоби.
Това останало е в оригинала ниво на вдлъбнатина,
както и съответстващите блок разчленена отново.
Тези, работа точно както правят в C.
>> Това всъщност е много същото.
Отново печат губи един символ на разстояние от ФОРМАТ Минавате някои струни.
Оказва се, струни могат или да бъдат разграфени
от единични кавички или двойни кавички.
Няма разлика, освен, че вътре
на единични кавички можете да използвате двойни кавички с изоставят,
а не да се налага да избягат всички от тях.
И вътре в двойни кавички, вие да използвате единични кавички с изоставят
без да ги избегне.
Ако искате да се смесват тях, вие със сигурност може да
гледам онлайн как се прави това.
>> Ще забележите, че тук, Аз бях приет през край = това нещо.
Това е пример на незадължителен аргумент, който е едно от онези неща
че Python поддържа, че го прави доста полезно.
Така печат всъщност има много аргументи, които обикновено са
настроен на тяхното неизпълнение стойност, но тук съм
реши да замени този, наречен край.
Причината, поради която аз трябва да го замени с празен низ
е, че за печат в Python, от подразбиране, отпечатва нов ред
след което можете да го казал също.
>> Така че този хеш всъщност ще разпечатате хеш на нов ред.
И ако аз не искам хеш да разпечатате нов ред след това, тогава аз трябва да кажа,
не извежда един.
Но, все още е така, едно последно нещо, което тази програма липсва, че човек има е
включва един в горната част.
Print се пече в Python така че основно че няма горен или модул
че трябва да се включват, макар че ако исках
да се включат и други неща в Python скрипт,
Аз ще го направя по много подобен format-- думите са само малко по-различни.
>> Споменах, че ние не се нуждаят от основна тук,
защото питона започва изпълнение на върха.
Ако исках да приключи това във функция, I
ще го направя като this-- I бих казал името дефиниция функция,
аргументи могат да отидат в тук и ние ще виж някои от тези, които по-късно, на дебелото черво,
и след това отново, този Цялата тръгна блок
е това, което е оперативно блокират за тази функция.
Така че това е определението на функцията.
А има и декларация, после надолу тук, мога просто да извикате функцията.
И отново, програмата преводач, започвайки от върха,
Ще видите това е определението.
Тя няма да се изпълни това, докато не стигнем до тук, а след това е като, о
Сега сте го нарича, I Предполагам, че трябва да го изпълни.
>> А нещо, което е много често срещано да се види в Python файлове,
особено Python файлове, които са достъпни за обществеността
и развива по-- и разработени и поддържа, е нещо от този вид.
Това е така, защото basically-- Python, да започнете в горната
и тогава ще се изпълни до дъното, Аз ако аз просто трябваше Mario извика тук,
След всяко време съм включил този файл в друг файл, защото исках да използвам
Mario е функция, която би друг файл също имат този призив да Mario в него.
И когато аз се завтече този файл, тя ще се обади на Марио.
>> Така че това е възможно, че само аз искате да изпълните това, ако аз съм всъщност
Добрата този конкретен файл.
И така, аз да наслагвате това в идиом, подобен на този, когато казвам,
ако името на това изпълнение среда е основна,
След това искам да правя тези неща.
В противен случай някой друг не може use-- включва ми function--
досието ми, и само за да получите достъп до тези функции
без да се налага да тичам нещата че искам да се изпълни в този файл.
Това е, отново, по желание но много често.
>> Тези неща са entirely-- са точно същото между C и Python,
Със сигурност в 3.
Мисля, че в 2, операторът на разделение понякога дава назад, когато плува
можете опериран цели числа, и или което исках, че или не сте.
Но плюс, минус, и времена работи точно като можете да очаквате,
възразява над леко повече видове.
Така че можете да се размножават чрез поплавъци цели числа, както и тези видове неща.
>> набор работи точно същото.
Можете да използвате две равни знаци.
inequals-- по-голямо от, по-малко от тези видове things--
имат значенията, които вие сте запознат с тях.
>> Къде C използва тези оператори, Python използва малко по-English
четими такива.
Така че, вместо две, амперсанди, вие буквално написали думата "и", "или"
или не."
Както във вашия if-- във вашия условни конструкции,
видяхме по-рано, че този синтаксис в C съответства на този синтаксис в Python.
И там не е много по-различно там, с изключение на малко по-
на препинателни знаци около страни.
Отново, където C би останало ако, Python използва Елиф,
но това са най-вече промени на повърхността.
>> Повторение, като това е често писано в тази идиом в Python.
Вие може да произвежда този вид нещо, с линия, докато отвън
ако искаш, но ти със сигурност не е нужно да.
И пак, ако искате на разпечатате елементи в масив от
може да го направи по този начин.
Един от най-забавните неща за Python обаче,
е, че не е нужно За да използвате тази парадигма,
и можете да използвате малко по-елегантен един.
Вие казвате за в ари.
>> Така че, вместо да пътуват тук препълнена индексите,
и след това се изтегля отделни елементи,
ви кажа за да всъщност просто прегазен самите елементи.
И тогава каквото и да правите вътре може да работи директно
за елементите, което е доста забавно.
И ние ще see-- ще използваме отново и отново, че идиом
като ходим чрез код.
>> Това е, отново, пример на нещо, което аз ще
обадете Python магия, въпреки че има много технически причини, поради които тя работи.
И там са технически неща, които трябва да бъде вярно за масив, за
за това да работят зад кулисите.
Работата е там, че повечето видове които можете да очаквате това да работят
са имали тази реализира за сте в вградени езика.
>> Друго нещо, което би било хубаво ако това е работил във всеки език,
но са налице някои от причините, поради които не може, Принтирай тази струнни пъти този номер.
Оказва се, че в Python, това прави точно това, което искате, който е само забавление,
и означава, че ние можем действително намаляване на тази програма, отново mario.c.
Вместо да итерации много, което можем само да кажа, искам някакъв брой на местата,
Искам броя на хешове, и някои хешове в края.
И пак, ние използваме този формат.
>> Ето, ние сме преминаване в променлива този начин.
Отново, ние не трябва да се каже, какъв тип е променлива,
и единственият път, ние ще получите грешки е по време на изпълнение.
Когато някой се опитва да премине в нещо,
тя ще влезе в функцията само глоба.
Ако ние клин тук, защото това не е нещо, което можете да създадете обхвати над,
Ще получите по време на работа грешка там, и аз ще трябва да го трасира по този начин.
Но междувременно, аз нямам да бъдем много внимателни за това,
да се изпраща в, докато в действителната изпълнение всичко работи много чисто.
>> Аз дори може да направи това малко по-чист
с помощта на специално вградена функция на низове, които се Подравняване отдясно.
Това е само една полезна функция разположена около библиотеката.
Това е в документацията ако отидете и потърсете го.
И аз казвам, добре Отивам да имат този низ, някои брой хешове,
и бих искал да оправдае правото it-- подложка то с празни места, за да бъде тази дължина.
>> Отново, това е в документация, която носи us--
Аз всъщност ще кликвате these-- което ни довежда до втората ни норма
за Python-- стандартната библиотека методи функция са вашите приятели.
И това е често за вас да отида търси Чудя
ако има нещо, което просто прави това.
Има вероятно е.
Ако искате да тампон изложени низ, ако искате
искал да се възползвам гърба половината от низ, ако искате
искали да се търси чрез низ, ако бихте искали да смачка няколко неща
заедно с низ със запетаи между тях,
има стандартна библиотека функции за извършване на това.
>> И това прави живота ви по-лесно, ако ги използвате
вместо разточване всичко по своему
в пет реда код тук, пет реда код тук.
Това наистина започва в добавите до реално време.
>> Един от най-интересните неща за това как получава т.нар.
Ще забележите, че има нещо, точка.
Имам някакъв предмет в ляво, и след това се обадих функция една точка.
Това е една от парадигмите, че Python използва за закрепване на методи за обекти.
Ще говорим за това, което този е съвсем накратко в края,
но знам, че и ние може да работи с неща, като взима това нещо казват дот
независимо, или като се обадите функция, която отнема
този обект и някои други аргументи.
>> Така че това са двата начина, по които неща се правят в Python.
И дали конкретна функционалност е реализирана
в този стил или този стил е нещо, което
трябва да погледнете нагоре, докато не получите цаката за които един е вероятно да попаднат в.
Има повече или по-малко сплотено философията зад Python
че можете да абсорбира най-вече вписвайки много в него.
В един момент, който един от тях нещо ще се прилага като
става естествено.
За сега, това е просто нещо можете да научите колкото разбера
всеки отделен нещо.
>> Така стандартната библиотека функции са моите приятели,
и те да ви пиша неща, които заемат много място това наистина скоро,
наистина елегантно.
И всъщност това е може би по- четливи, бих казал, от програмата C
Ето там.
Да не говорим за факта, че е така Накратко може да се побере цяло слон
в пространството, че сме спасени.
>> Друго нещо, това е реализация на Марио, който е точка C, която мисля, че
е най-краткият можете да го получите.
Тя не разполага с GET ср, но тя твърди кодове на стойност 10
по същия начин, че този човек прави.
Оказва се, че това един часовници в най- 84 знака, че Python е 64.
И това е безкрайно по- неразбираем от този боклук тук.
Така че Python е по-ефективно в пространството.
Това е малко по-малко ефективен във времето, но не много.
>> Списъци са важно нещо в Python.
Ние не съм ги виждал, но те работят много като масиви правят в C.
Така че тук, можете да ги декларират, можете да ги премине в нещо.
Сега площади притежава масив от тези неща.
Отново, ние не са декларирани като тип, но ако някога се опита да го използва,
всичко, което можете да очаквате да работят на масив от цели числа
ще работи върху набор от числа.
>> Това е нещо, което сте абсолютно не може
направя в C, понеже памет е толкова ръце,
но е много лесно да се направи в Python.
Ако искам да ми бъде по-голям масив, което мога добавяне на елемент към нея, и това е добре.
>> Какво се случва зад кулисите?
Преводачът ще отидат и да получите някакъв спомен,
и може би това ще получите малко повече памет,
така че аз не съм толкова не е нужно да презаделяне всеки път.
Но колко имат повече памет нужда от нея?
Това не са решения че трябва да се направи,
това са решенията, които най- преводач, ще направи.
>> Тук виждаме гама може отнеме два аргумента,
но тя все още продължава да бъде включено на върха, така че ние да добавите 1 там.
Това е идиом, което е още по- хитър начин да напише такива неща.
Тя се нарича списък с разбиране, и тук това, което казвате,
е Бих искал да пробва аз квадрат за всяка стойност на аз в този диапазон.
Това нещо в дясно може да бъде друг масив, и това нещо в ляво
да бъде определена функция че ще вземе в аз като променлива
и ми даде някои резултат.
>> Това, което ще направя е, Отивам да се изгради
масив, който е всички тези неща за всяка стойност в този диапазон.
И това е супер елегантен, супер кратка, и това е много ясно какво означава това.
Това е една от най- things-- това е отново,
една of-- много емблематичен за съображения, че хора като Python.
Ако искате програмиране по този начин, след това Python
е език може би искате да научите.
>> И пак, има техническа причини защо става това.
Но доколкото ние сме засегнати, ние повече или по-малко не ме интересува.
>> Така че, ако искате да разпечатате списъци, някои от същите идиоми са полезни.
Защото в този диапазон, можехме индекса през всички неща,
и след това да ги отпечатате.
И ще видите Лен тук.
Ако някога сте искали да получите дължината на масива, че е
много лесно в Python, това е много трудно в C.
Това ще отпечата точно това, което бихте го очакваме да.
Бихме могли също така, както сме виждали преди, обхождане на елементите в масив
директно, а след това просто да се говори за тях, а не като индекса
обратно в масива всеки път.
>> И това е нещо, което можеш да направиш.
Така че в C, ако питаш за нещо като този, печат бих казал,
това е масив от цели числа.
Това определено не е по- низ, не мога да го отпечатате.
Python повече или по-малко не се интересува.
Това е като, има ли начин, че аз може да се превърне това в в низ?
Да, аз ще го направя.
И така, аз просто ще отпечатате, че навън.
Това означава, че можете да правят неща like-- тях
са повечето от твърдите части на игра на петнайсет, написани
съвсем накратко в Python.
>> Ще видите, че има малко of-- тук
Аз бях хвърлен цяло число в низ, и аз трябва да направя това ръчно.
И аз отивам да добавите то на друг низ,
или по друг начин Python се обърква.
Но дали, когато сте добавяне на низ в цяло число,
съм предполагам, за да получите цяло число в гърба или низ обратно?
Но отново, ако просто обадете ул по нещо,
и той би могъл по никакъв възможно свят се превръща в низ,
тя вероятно ще бъде превръща в низ.
>> Тук виждаме, използване на вложените списък с разбиране
отляво някои индексиране, което е точно така, както искате да се използва за нея,
а някои отпечатване на нещата.
Отново сме определено някои функции и ние ще ги наричаме надолу
в основната когато ние действително зареждане на файла.
възвръщаемост работи точно както бихте очакваме от работата с C. Намерете,
ние можем да се създаде неща като this-- ето списък с разбиране
има една задача на променлива, и всъщност можем да го направим още по-лесно.
Ние не трябва да напишете търсене, защото вградени в езика
е, ако това нещо е в този масив.
Върнете вярно, друго върне фалшиви.
Така че това е съвкупността от находка.
>> Целият сортиране включва се обадите на сортиране,
които is-- има реализации на това, вградена в някои C библиотеки.
Ако искате тази нещо назад, вие
да пренебрегнете тази опция аргумент в обратната с истинно.
И ако искате да сортирате над струни, която е вградена, както добре.
>> Така че това не е да се каже, те са неща, които трябва да направите, всеки ден,
но Идеята е, че този е философията на Python,
че всички тези неща, който искате нещо като искам да направя са вградени вътре.
И повечето стандартни функции, така подредени, дължина, независимо,
подкрепят най-логично разумно вход.
Ти се обадя Лен на масив еднакви начин ти се обадя Лен на низ.
Можете multiply-- сортирате струни По същия начин можете сортирате масиви.
>> Повечето стандартни функции че хората да градят,
и най-трета страна библиотеки, които хората
изгради, защото те подражават проектирането на стандартната библиотека,
може да се нарече върху всичко, което сте харесват, защо не това просто работа,
в C. Повече или по-малко, тя ще работи в Python
защото хората работят зад фигура какво нещо е, а след това работи
по подходящ начин върху него.
Така че отново, техническа база, но това прави живота ни по-лесно като програмисти.
>> Така че тук е файла I / O. подаде I / O има много малките неща, които го правят сложно,
и така има ресурси онлайн, но по-накратко,
ти се обадя отворено на файл назове с определен тип.
Така че това е четене, четене и пиши, пиши или добавете.
Вие четете определен брой знаци и вие печатат тези,
вие ще получите Hello!
Искам да кажа, като този файл трябваше Hello!
В него се обадя да се чете, и това, което ще се върнем
е низ, който притежава всички на останалата част на масива,
или всички от останалата част от файла.
Ако се обадите прочетете отново, ти си в края на файла,
и така не се получи нищо и затова ще се затвори.
Отново, това е .close вместо близо файл, тъй като това би било в C.
Това е повече или по-малко, защото е е нещо, и искате за е да се затвори.
Но основния файл I / O не е особено сложно.
Отново, ако искате да отворите файл, ако искате да прочетете определен ред,
можете да се измъкнем от специално line-- има вградени модули за това.
Ако искате да напишете нещо, можете да напишете това.
Ако искате да напишете индивидуално ухапвания, можете да напишете тези.
И ако искате да превъртите над линиите на файл
индивидуално, както направихме в парче от преди няколко седмици, което можете да направите, че да.
Отново, повечето обекти, които бихте искал да бъде в състояние да обхождане
подкрепа итерации над тях.
В Питони, даден файл е може би нещо, което Бих искал да обхождане ред по ред.
Ако това беше речника на думи и аз бях
се опитва да получи тези, индивидуално думи, а след това, в рамките на този цикъл,
Онлайн то се случва да бъде всяка дума от своя страна и това
ще се изпълнява за всеки ред в преписката, до края на файла.
И отново, ако имам разпечатан всеки линия, линиите идват с нови линии,
така че аз съм за определяне края обратно към нещо подобно.
Тогава щях да получите съдържанието на досието ми.
>> Второто нещо, което извършва дейност в някои начини, като списъци и в някои отношения
като нещо съществено по-мощен,
са речници, които са наистина готино да се използва, но основно се разискват
маси под прикритие.
Можете създадете с помощта на точно два символа, което е страхотно
ако сте се опитали да приложат хеш-таблица за вашия проблем набор,
Знаете ли, че много болка, която може да бъде.
Но хората са направили го, и го прави толкова добре,
че не е нужно да тревожи за това вече.
>> След това можете да вмъкнете индивидуални неща.
Hash tables-- или речници не особено
интересува това, което съхранявате в тях.
Така че, ако някои записи са числа, и някои записи са списъци,
ако някои записи и други речници, и някои записи са струни,
Python не много грижи.
>> Отново, ако отидете в него очаквах низ и това, което се върна
е масив, това е ваш проблем.
И може би това е по вина на който и да Мислех, че е пускането неща
в речника, може би това беше ти.
Ако това беше някой друго, да се надяваме, че са
добре възпитани за това, което щеше в речника
и не остави никакви клопки за вас да не попаднат в.
>> Но стандартните функции ще ти върна добре възпитани неща.
Така че те казват, че това се връща резервно речник на низове,
тогава всичко ти започваш да се измъкнем от е низ.
Ако го направите някои от това и го пътувания вие нагоре, добре, че може да е от вас.
Python със сигурност ви дава достатъчно въже, за да се мотае, ако искате.
Сега можем да разпечатате индивидуалния елементи на настоящата и това се връща
точно това, което очаквате.
Точно това, което очаквате, предполагам, е фраза, че аз съм с много,
но това е повече или по- по-малко как работи Python.
Ако попитате за нещо, което не е тя, Python ще изхвърля грешка
и тя ще ви откажат от каквото и програмата, сте били вътре.
То всъщност ще отпечата повече информация от тази,
това ще посоча, че ще you-- добавете ред, и така.
>> И, отново, може би искаме да обхождане речници
и да намерят всички неща в него.
Тук ние итерации над две неща едновременно.
И така, ние ще го направя с ключ, стойност, но след това отпечатайте всички от тях.
>> И ако ние искахме да cast-- ако ние действително изтича това,
ние ще имаме някои проблеми, защото on-- когато отидохме в с Дейвид,
тя не може да add-- ако ние не го направи хвърли го в низ от една страна,
не бихме могли да добавим, че масив струни върху низ.
Но ако ние я хвърли към низ, получаваме нещо
като това, което е може би това, което ние бихме искали да прочетете.
>> И това е правопис.
Ние току-що прочетох в нещата.
Така че можем да прочетем в отделни думи като линии.
Ние отсечем последният нещо, така че дебелото черво минус 1
chomps разстояние последното нещо, което we-- последния знак от низ.
Ние ще кажем.
Добре, всеки един от тези получава вмъква в този речник,
картографиране на стойност 1.
Ние не особено грижа за това един,
но това е само там, за да се каже, О, добре, това нещо Ще сложа в речника.
Защото по-късно това, което сме ще направя, е, че сме
ще кажа, добре, ако това е в речника на всички.
>> Отново, това чек за членството е до операционната
използвайки напълно различен алгоритъм, отколкото ще в списък,
но ние го наричаме по същия начин, който е, че някои от Python захарно покритие
неща, така че те са по-лесни за използване.
И пак сме виждали неща като това преди.
Това е в общи линии се намери, или това е точно същия синтаксис
като се намери, но работи в продължение на напълно различна структура.
И ние не ме интересува особено.
Така че тези, които са нещата, които ви са били помолени да приведе в действие за правопис.
С това темпо, ние ще получим повече или по-малко всички psets направили.
>> АУДИТОРИЯ: Така че основно просто се връща
като неправилно изписано ако това не стане съвпада нещо в речника?
ROSS RHEINGANS-YOO: Да, да.
И така, това е Адаптиране на определен проблем
който иска от вас да направите точно това.
>> АУДИТОРИЯ: Защо е линията минус 1 до там?
ROSS RHEINGANS-YOO: Значи когато сте итерации
над даден файл с молба за по линии, линиите
идват с нова линия характер в края на it-- на минус 1
е просто да пазаруват тези, на разстояние.
А това е особено гъвкава начин на индексиране в неща.
Така че, ако имате низ, и искате, добре съм
ще започне в герой три и аз ще отида до края.
3 дебелото черво ще направи това за вас.
Ако сте като, искам да започна в започващ и да преминете към последната минус 1
характер, на дебелото черво минус 1.
И ако искате да отидете от третият в отрицателна посока на първо място,
тогава бих казал, че 3 минус 1.
>> Освен това, ако искате да се индексират в неща, считано от гърба,
просто индекс с минус номера.
И тъй, когато C щеше да експлодира или може би
те храня друга памет, която не е имала достъп до чуете може да се каже минус 1
означава последно 1 знак в низ.
>> Модулите са version-- са аналози на библиотеки в C
и са полезни за много неща.
Много от нещата, които ще обичам да правя в Python,
освен проста манипулиране на променливите,
искате да вмъкнете в по-големи библиотеки с по-голяма
интерфейси и повече възможности за взаимодействие
с други части на света.
Сис е един от тези, с куп инструменти
които са полезни за взаимодействие със самата система
и ще го внесе като внос сис.
>> Има и още документация от че, които можете да отидете тук,
или бихте могли да намерите в Google от Googling Python сис.
Можете да въведете влиза.
Първият линк ще бъде документацията в Python 2,
втората връзка ще е Python документация 3.
>> И ако ние написа файл, който изглеждаше като this-- Ако по-специално, ние сме
гледаш, работещи на командния ред аргументи,
като сме се научили да се справят много в началото на този клас.
Това не е трудно. Можете да се измъкнем argv,
което е едно от онези неща който се реализира от сис.
Това не е вграден към база на пакетите, но отново,
може да го удължи, като се внасят тази функционалност от сис.
Ще го наречем сис.
както и да е.
Тук има argv.
Има действително не argc в сис, защото
може да го получи толкова лесно, като се обадите дъл.
Ние след това отпечатва, че навън, тогава ние изтича на нашия терминал echo-args.py.
Ние се върне масив, който е този първи аргумент.
Отново, това е argv 0, което е най- име на нещо, което беше колнат.
Ако ние го нарича с допълнителен доводи, щяхме да получат тези обратно.
Това е един от начините за получаване на командния ред аргументи.
Ако искате знамена където се обръщат конкретните неща, върху или пренебрегване
конкретен подразбиране argparse е твой приятел.
И пак ще откриете, че онлайн най питон argparse в Google.
>> Има няколко на полезност модули, които ще намериш себе си, използвайки
и отново, ако прекарвате всяко време на този език вносител jsons
за четене и излизат от JSON файлове, а не толкова сложно.
Вие се отвори файл, можете нарича json.load на този файл, и ще получите обратно нещо.
Какво е това нещо?
Това е JSON обект.
Когато това JSON има масив, питона е масиви.
Когато това е JSON асоциативни масиви, Пайтън
речници, струни, и цифри, и така нататък.
Искаш ли да се отърват, че, вие отвори нов файл, ти се обадя сметището,
и товари и сметища за да влиза и излиза от низове.
>> По същия начин, туршия получава нарича в общи линии един и същ интерфейс.
Това е малко по-полезно, ако можете да започнете дъмпинга Python обекти.
Така че, ако някога сте искали да запазите версия на текущото състояние
на променливата за бъдеща тичам на вашата програма,
туршия е Пайтън библиотека за да направим това.
>> Ако имате каквато и да е променлива, която може да бъде изписано
в подобни думи и символи и bytes-- като този речник,
бихме могли да напише, ние може да го запише като
като JSON обект, който е буквално тези герои.
И след това ще бъде много лесно за човек да го отворите up-- отворят
и го прочетете.
Ако не сме особено грижа за хората да го четат,
бихме могли да опаковате още по-ефективно във форми, които биха могли да бъдат по-късно на неопаковани
или които биха могли по-късно да се надува.
И това спестява 80% от пространство, което ви предмети мощ
предприеме, ако ги написа longhand.
>> Наричаш туршия много по същия way-- сметището, натоварване,
и след това можете да си нещата обратно.
Така че, ако се пише много кратки програми на Питон, че
искате да запишете състояние, а след това се чете ги върне по-късно, подобни неща
са вашите приятели.
Че бихте могли много лесно да ги зареже като JSON.
Повечето Python обекти може да изхвърля на JSON
ако има някаква надежда, че в структурно те могат да бъдат представени по този начин.
>> Това са само върхът на айсберг на модули, които са полезни.
Така че сис, OS, многопроцесорна, са нещо като основни работни коне за неща
ние трябва да си взаимодействат с ОС на файловата система.,
като os.isfile, os.isdirectory, os.makefile, това са моите приятели.
Ако искате да си взаимодействат с определен тип файл,
JSON, туршия, CSV.
Ако искате да си взаимодействат с уеб страници, на urllib за получаване на HTTP
страници. bs4-- BeautifulSoup-- това е чудесен анализатор за HTML.
Можете да го ползвате на HTML и вие получи това вложените масив обект сега,
които можете да се пресичат Lookin, с харесват просто търсите
ако, е, в, което е фантастично.
>> Има един куп пакети за running--
за това особено mathy неща.
Така че, ако искате да се размножават, обърнете, трансформиране матрици,
numpy се използва от хора, всички цял свят за това.
scipy е още по-полезен инструменти в тази посока.
sklearn-- обучение машина, обработка на естествен език,
супер полезни неща, получава изпълнява в Python през цялото време.
>> И пак, отнема малко по- вече да write-- съжалявам,
отнема малко по-дълго, за да тичам, но причината, че истинските инженери са склонни
използване Python е така, защото сте склонни да бъдат блокиран от вас писане на код, а
от вашия компютър, работещ с кода.
Така че, ако ти започваш да се напише Програмата, която много други хора
ще използваме завинаги, като Linux, вие
може да го напиша на C. Ако бяхте ще напише изчисляване на двигателя,
можете да пишете в Python, ако е необходимо за да го промените на всеки няколко месеца.
Някои хора биха го пишат в C, защото те са по този начин.
>> Така че сме виждали внос сис като начин за получаване на нещата
за получаване на модул в програмата си.
Можете също така да го импортирате като псевдоним, ако искате.
Отново многопроцесорна е болка за напишете всеки път, така че внасят като т.т.
и след това по всяко време я използват в програмата,
ще кажа mp.process, или това, което имате.
Ако искате внос само едно нещо,
така urllib има нещо, наречено поискване, така че може просто да импортирате това.
По-късно, няма да му се позовават като urllib.request, но само като искане
от само себе си.
>> И вие можете да импортирате всичко от един модул, ако искате.
Това понякога не е добър idea-- това обикновено не е добра идея, всъщност.
Защото ти very-- защото ако нещо в този модул има име, което
Исках да използвам някъде другаде в програмата си, не можеш.
>> И това не винаги е очевидно, че това е така.
За да се уверите, че това, което правиш е в безопасност,
което трябва да се отворят модула и виж всички
за имената, които се озовават в there-- всички функции,
Всички променливи които живеят в този модул,
защото вие ще вкарат всички ги във вашия местен пространство от имена.
>> Така че хората правят това.
Обикновено се препоръчва че вие ​​не направите това.
Но хората правят това всички времето, защото те са
мързелив и не искате да напишете тр.
нищо, никога.
>> Всичко това говори за модули ми донесе около до кратък разговор
за това как можете да изготвят програми в Python.
Първата стъпка е да се провери дали някой друг вече е направил това нещо,
или прави 90% от нещо.
Шансовете са те вероятно имат, и вие трябва да отида да им нещо и тичам, че.
Или напиши обвивка около него да се адаптира към вашата цел.
Това е едва след това има провали, които бихте тогава
отида и write-- започне да мисли за как бихте сложи това нещо заедно.
Има много неща, там, и това е
един от най-полезните неща за Python.
Подобно на езика е елегантен, езика
е лесен за използване, но и защото това е толкова елегантен и лесен за използване,
хората са го използват за дълго време и има много неща,
там, че можете да впрегнат за собствена употреба.
>> Така последното правило на Python е, някой друг е вече вероятно написан
модул за това, някой друг има вече
Вероятно писмено библиотека за това.
Преди да се опитаме да направим нещо, да потърсите за да видите дали това е била предприета.
Това не е толкова трудно.
Всичко от модулите, че аз пригодени преди, може би с изключение на един,
идват с предварително инсталиран във всяка стандартна инсталация Python.
И така, с обаждане до внасят каквото можете
всички от тази функционалност на пръстите си.
>> Започвайки да приключи до Забавление, има няколко неща,
че съм оставил като черни кутии и някак Споменахме,
а има и няколко бели крие, че съм каза, че в името на честността,
Аз ще поне точка тук, дори и ако няма да го направя
отидете супер дълбоко в всички от тях и техните технически обяснения.
>> Много от нещата, че съм нарича магия
е това, което другите хора биха нарекли обектно-ориентирано програмиране.
Така че има много things-- така променливи не са много често
прости байта седят, памет, но са доста сложни
обекти, които имат вътрешна състояние за функции и много
на скрити променливи, много скрит функционалност, която
ви позволява да ги превърне в низове, която ви позволява да превъртите над тях.
И ако сте writing-- и причината, че те
имаме всичко това богата функционалност е така, защото people--
архитектите на language-- са отишли
чрез и за всеки стандарт обект, пробва функционалността
да кажа, че това е начина, това е как това ще се оперира
ако някой иска да превъртите над него.
>> Така че всичко, което някой може вероятно искате да обхождане,
е логиката, написани на ръчно от това как сте
трябвало да обхождане този обект.
Всичко, което бихте могли да искате изхвърлени в низ е логиката писмено.
Това е функцията, която ти се обадя, ако искате да зареже тази изложени в низ.
Ето защо можете да обадете дъл на нещата, това
Ето защо можете да се обадите в, това е Затова можете да се обадите, ако в по всичко
че вие ​​ще искате да, защото тези, които всички са носейки със себе си,
техническото ноу-хау, за да направим това.
>> Това е нещо, което аз съм супер няма да отидат в.
Но за нещо, в списъка е едва доловимо различен от C стил за линии,
и можете да прочетете всичко за това по интернет, ако проявявате интерес.
Има една тъмна страна на всички, на този, който споменах,
така че има две неща.
Първата е, че този обект ориентирани програмиране добавя много режийни
до случайни неща, така че в крайна като се използват много повече памет;
ти свърши с помощта на малко повече време, отколкото бихте друго.
The other-- но колкото повече коварна тъмна страна на този
е, ако нещата просто действат като ги искате да
без да ви се налага да мислите супер трудно за това дали това трябва да бъде едно цяло число
или дали трябва да има по- плувка, може би е, че тук
произвеждате пад, но тук ви мисля, но те ще always-- съжалявам,
тя може да бъде, че тук произвеждате поплавък,
но когато стигнем до втората част на вашата програма, си мислиш,
О, добре, но те ще винаги ми се явят на инт.
И ако това не е така, това е възможно че сте заседнали някъде,
ако се опитате да използвате, че да индексира в масив, или това, което имате.
>> Така че една от реалното полезни неща за C е
той ви принуждава да мислим наистина трудно, преди да направите any--
преди да предявява каквито и променлива в съществуване, като това, което
е от типа на тази променлива.
И то се случва да има този вид за всички времена.
>> Това не е вярно Python, а в действителност, вие
can-- ако сте просто нещо става с ухо,
и можете да направите някои решения един начин на едно място,
и някои решения един начин на друго място
без да се излагат достатъчно неща зад кулисите в друго място
за улов на нещата правилно, може да получите някои много странни грешки.
И програмата може да продължи да работи за много дълго време, защото това е
вършеше много работа, за да се каже, добре това нещо може да работи по този начин,
така че аз отивам да тичам по този начин.
>> И в действителност, че го избутва предаде през много малки грешки
означава, че когато често грешка е всъщност лош
а вие всъщност не искам да го оправя, тя завършва мили away-- програмата
озовава спиране мили от времето, когато сте имали си грешка.
И така, едно нещо, което бихме искали програми за вършене, sometimes-- едно нещо
че ние бихме искали програми да се направи, когато сме отстраняване на грешки
е провали шумно и не успяват много бързо, когато нещо се обърка.
>> Python е много лошо в това.
Python е много добър в не при липса и подвижен напред
чрез неочаквани неща.
Така че това е полезно, когато пишете малки програми.
Когато получите сложно бъгове понякога
отнема много време, за да ги дразни навън.
>> Така че има и тъмна страна за всички това, като просто работи.
Той просто работи, както бихте очаквали да.
Само че, когато това не е така, че в крайна нагоре в напълно различно място
и се опитвам да разбера къде това е, че сте се обърка.
>> Събирането на боклука is-- така едно нещо, което ще забележите
е, че всеки от следните неща Аз бях приведени в existence--
тези масиви, тези речници, тези предмети, те никога няма да се остави files--.
Не е имало обаждане до безплатно в някоя от тези приказки.
И това е на C-напред, защото ние никога не влезе в тези неща.
>> Но в Python страна, там не е безплатна.
Нещата стават автоматично се освобождава, когато Python
мисли, че не сте ги гледаше.
Това е наистина добри неща, които не освобождава може би все още е възможно да се търсят в,
но това означава, че ако сте били ще разпредели тази голяма работа,
и вие сте като, о Аз съм направи с него сега,
това е трудно да се каже Python че сте готови с това сега.
>> Понякога можете да зададете тази променлива да бъде никой,
и след това се надявам, че в крайна сметка боклучарят
идва и да го почиства.
Но отново, не го направите имат контрол над това.
И една от причините, които хората използват C за наистина производителност критични неща,
е тази способност да вижда знаете, когато паметта е разпределена
и, когато е освободен, и имат много контрол над казвайки:
Аз съм с не повече памет, отколкото ми трябва.
Което е нещо, което Python не е толкова чудесно.
АУДИТОРИЯ: Мога ли да ви попитам нещо?
Какво искаш да кажеш с провали шумно?
>> ROSS RHEINGANS-YOO: Така че, ако става нещо нередно
и вие сте в отстраняване на грешки режим, бихте направили много често
Искам си програма, за да ви кажа, къде точно това е объркало,
а не просто тихо спира да тече.
Но ще всъщност това да отпечатате от всички видове информация за
харесват, тук е това.
Това нещо се случи Ако сте отпечатване а wen-- ако показвате уеб server--
>> АУДИТОРИЯ: [недоловим]
>> ROSS RHEINGANS-YOO: Да, ако сте с уеб сървър,
понякога е лошо, ако сте винаги изхвърляне на грешки,
а вие казвате, добре, че не е работа.
Отивам да се спре.
Аз съм просто ще игнорира то и да става.
Защото тогава можете да получите в стотици от тези грешки и да не ги види.
>> Това със сигурност ще бъде полезно за целите на отстраняване на грешки
ако всеки път, когато вашия уеб сървър направи грешка, трябваше трайни записи на това.
Може би дори искате програмата да спре, така че тези записи
Да не се получи погребан под неща.
Но отново, това е в режим на дебъгване.
>> Често в режим на производство, свят е малко по-различна.
И в малки скриптове, които Бягам, когато нещо, което аз казах да се направи
може да бъде само малко разстояние от това, което бих искал да направя,
След това нещо прокарване грешки е нещо, което може да искате.
И в тези случаи, със сигурност Python наистина печели своите започва.
>> Последното нещо, което аз не говоря в this--, че аз не говоря за
но може да бъде наистина вбесяващ първият път имате един от тези грешки,
и втората и третата и четвъртата път имате едно на тези грешки.
Python, споменах че той използва бяло пространство
да ви кажа какво е нивото на отстъп и какво функционален блок сте в,
тя се отнася раздели и пространства по различен начин.
Така че, ако в продължение на четири раздела, а след това следващия ред се състои от четири помещения,
дори ако те се показват като същата сума във вашия редактор,
Python не ги третират по един и същ.
>> В действителност, Python третира раздели и пространства като масло и вода.
Те са просто различни неща.
Няма специално дължина, че раздела е,
така че не е като таб равнява 8 пространства, и така вие ще получите около него
по този начин.
Подобно, когато се казва, това, което ниво на бяло пространство аз съм най-,
тя действително да търси модел на интервали и табулатори.
И така, най-добрият начин да се справят с този е да се използва винаги пространства през цялото време.
>> И в действителност, в Cloud9 IDE и CS50 IDE,
Вашите ключови Tab вложки четири помещения, в вместо
на раздела, който е супер полезно.
Въпреки, че отново, ако е написал Python програма с табове, че ще се оправи,
това е просто, ако някой влезе и се опита да добавите
един ред, за да си програма, която имаше четири пространства за всеки раздел,
може да се счупи.
И може да се счупи по начин, че наистина не се вижда.
Въпреки, че действителната грешка съобщение, че тя хвърля
има нещо общо с новата тире, не се очаква тук,
or-- ако тя говори за тире и изглежда, че не е наред,
това е може би, защото има проблем с таб-пространството.
Те все още вбесяващ да дебъгване.
Най-големият в цяла този разговор, който не го направих
стигнем до, защото това е наистина сложен, изтънчен тема,
и не е необходимо да се направи всеки от нещата, които съм правил досега,
са концепция, наречена кортежи.
Те са там, който много прилича на масиви, че не могат да променят.
Те свикне по цялото място, защото те са полезни за много неща
че масиви не са полезни за.
>> Но ако искате да направите масив, и след това обещавам интерпретатора, че сте
никога няма да искате да промените, че thing-- в действителност, ако искате да се промени,
вие ще направите нова, с новото стойности в it-- това са кортежи.
Вместо да се произвежда тях с квадратни скоби,
можете да ги произвеждат с кръгли скоби.
Защо трябва да използвате тези неща, е малко на един въпрос. ,
Единственото нещо, което аз ще казват за вас, че е
може да се използва като кортежи индексите за речници.
Не можете да използвате като масиви индексите за речници.
И защо е, отново, техническа и Аз няма да се сблъскате с него.
>> The pset, че аз не съм пипал на в този разговор е pset6.
Така че ето как можете По- приложат A-- ето
как бихте приложи pset6 в Python.
Имайки предвид Python цикъла на проектиране, първото нещо,
, което правите, когато сте писане на програми е проверка
за да видите дали някой го направи вече.
>> В действителност, ако искате да serve-- Apache 50
приблизително прави това, освен това не идва
стандартно инсталирана на Linux машини.
Python прави, и Python прост HTTP сървър прави, както добре.
Ако сте някога на Linux машина, или Cloud9 IDE външната страна на CS50
и искате да послужи този ток указател към определен порт,
питон-m SimpleHTTPServer порт служи това.
Можете също да импортирате простата HTTP сървър
и тя има много функции, ако Искате ли да го персонализирате, или да го промените,
или се експлоатират it-- го впрегне да Направи свой собствен сървър услуги.
>> Така че това е Python в орехова черупка.
И това е CS50.
Благодаря.