ROSS RHEINGANS-YOO: Hi, aku Ross. Dan ini adalah seminar CS50. Ini akan membawa Anda dari pemrograman di C untuk pemrograman Python. Python adalah bahasa scripting. Ini sebagian besar seperti C dalam sintaks, meskipun beberapa rincian teknis bagaimana sintaks yang dijalankan yang sedikit berbeda. Hal ini kurang kuat daripada C dalam beberapa cara. Hal ini kurang ekspresif untuk di mana tepatnya di komputer Anda memori akan ditata, bagaimana itu akan ditata, ketika mendapat kebebasan, dan orang-orang macam hal. Ini lebih berguna daripada C dalam beberapa hal, karena lebih mudah untuk program di. Bahasa ini, untuk beberapa orang, lebih intuitif. Dan benar-benar, tujuannya adalah untuk itu menjadi lebih cepat untuk program dan berpotensi lebih lambat untuk mengeksekusi. Sekarang jika Anda berpikir tentang jumlah waktu Anda dihabiskan untuk terakhir Anda Masalah mengatur penulisan kode Anda terhadap jumlah waktu yang Anda habiskan pada masalah terakhir Anda mengatur mengeksekusi kode Anda, Anda akan membayangkan bahwa bahasa yang dua kali lebih cepat untuk menulis, dan dua kali lebih lambat untuk mengeksekusi, mungkin menjadi perbaikan atas C dalam beberapa cara. Tentu saja ketika Anda mencoba untuk menulis program kecil untuk melakukan hal-hal kecil, Python merupakan bahasa yang berguna pilihan. Dan pada akhir ini seminar, saya harap Anda akan dapat membuat pilihan dalam proyek-proyek masa depan tentang bahasa yang benar untuk menggunakan, tidak ide yang satu bahasa lebih memperbaiki sepanjang waktu. Beberapa hal tentang apa seminar ini adalah. Seminar ini tidak dimaksudkan untuk mengajarkan Python dari awal. Python sangat mirip ke C, dan aku mengasumsikan bahwa Anda seorang mahasiswa CS50, atau seseorang dengan keakraban yang sama dengan C. Jika Anda CS50 mahasiswa sekitar masalah set 6, sehingga Anda sudah melihat banyak hal di C, saya akan memberikan perbedaan utama, dan beberapa hal yang membuat Python yang berbeda dan khusus dan berguna, tapi aku tidak akan pergi untuk apa bahasa pemrograman dan bagaimana menulis program. Namun, seminar ini akan mengajarkan Anda untuk menulis program Python jika Anda salah satu dari mereka beberapa kelompok. Sekali lagi kita akan melihat bagaimana Anda akan menerapkan psets-- yang harus 1-6 di Python-- dan memberikan petunjuk dokumentasi resmi untuk referensi di masa mendatang. Hal lain yang penting tentang bagaimana pembicaraan ini ditugaskan, video ini akan online, courtesy of CS50, sehingga Anda tidak harus merasa seperti Anda perlu mengambil catatan. Anda selalu bisa kembali dan melihat di kemudian sebagai referensi. Selain itu slide tersedia sekarang di situs ini, yang harus membawa Anda melakukan doc Google. Ini adalah versi yang sedikit ringkasan dari apa yang saya menunjukkan di layar. Satu peringatan-hati sebelum kita melompat di, Python 3 adalah bahasa yang berbeda dari Python 2. Mereka melihat banyak sama; ada perbedaan teknis sangat sedikit yang akan menyebabkan program ditulis dengan Python 2 tidak dapat dieksekusi di Python 3 lingkungan. The CS50 alat dilengkapi dengan Python, secara default menggunakan python 2. Anda dapat memeriksa ini dengan mengetik di baris perintah Anda python version, yang harus output 2.7.6 pada alat saat ini. Coba Python 3, yang tidak bekerja di alat, jika default Python untuk 2.X.Y, baik pada alat atau pada mesin Anda sendiri. Anda harus mengganti Python 3 kapan saja dalam pembicaraan ini yang saya tulis Python. Jika mesin Anda berjalan 2 secara default, jenis Python 3 agar dapat benar-benar ikuti bersama dan melaksanakan hal-hal ini. Selain itu, saya akan mengarahkan Anda di sumber resmi sekarang. docs.python.org/3--~~V hati bahwa itu adalah 3 dan tidak 2-- memiliki referensi yang berguna. Tutorial akan membawa Anda melalui banyak hal yang sama yang saya lakukan sekarang, kecuali dalam bentuk teks. Referensi berguna sebagai referensi untuk bahasa, dan Perpustakaan Standard memberikan Anda beberapa ekstensi dengan fungsi tambahan. Jadi program Python pertama. Di sebelah kiri kita memiliki standar C, di sebelah kanan, kita memiliki Python. Anda mungkin telah diakui masalah ini, itu salah satu masalah pertama set di CS50, dan ini mengatasinya dengan menggunakan solusi yang sama. Sekarang, alasan bahwa kami melihat sisi ini berdampingan begitu kita dapat melihat perbedaan sintaksis. Salah satu gajah di dalam ruangan Anda mungkin telah memperhatikan hak dari kelelawar, adalah bahwa Python tidak memiliki membungkus fungsi utama di sekitar kode. Jadi di C, Anda menulis sekelompok file, Anda menghubungkan mereka bersama-sama, dan program mulai dijalankan di hal ini disebut int main. Dalam Python, Anda menulis file yang, mengeksekusi file tersebut, program mulai dijalankan di bagian atas file. Jadi itu akan mulai di bagian atas file turun sampai menemukan sesuatu yang lain. Jika menemukan definisi fungsi, itu tidak akan benar-benar melaksanakan kode itu, itu hanya akan mendefinisikan fungsi. Tapi di sini, ketika pertama Program ini n sama dengan 10, hal pertama yang program ini akan lakukan adalah mengambil nilai ini dari 10 dan mengaturnya ke dalam variabel yang disebut n. Berbicara tentang garis, salah satu lainnya things-- sorry-- ini berarti bahwa program C, Anda akan menulis mereka, Anda akan membuat mereka, yang akan memanggil beberapa perintah dentang, dan kemudian Anda akan menjalankan dihasilkan dieksekusi. Program Python, Anda menjalankan teks file-- mario.py ini mungkin menjadi file ini bahwa saya hanya menunjukkan you-- Anda akan menjalankan file yang dan Anda akan mengeksekusi, dan isi itu akan dilaksanakan oleh interpreter Python. Anda dapat melakukan ini di IDE Anda. Jadi jika saya memiliki file Halo, yang hanya memiliki isi ini. Ini sebenarnya Python 2, tidak Python 3, jadi jangan khawatir tentang sintaks untuk saat ini. Tapi aku akan menjalankan Python, pada hello.py, dan berjalan. Cara lain yang dapat saya gunakan Python yang Aku tidak akan berurusan dengan begitu banyak dalam pembicaraan ini, adalah jika saya ketik Python, itu tetes saya ke sebuah lingkungan di mana Aku bisa makan itu baris demi baris Python. Jadi di sini, jika saya ketik ruang cetak 'halo, dunia'. Ketik masuk. Ini akan meludah saya bahwa kembali hasil garis individu segera. Ini mungkin berguna. Dalam pembicaraan ini saya akan melakukan hal-hal pada slide. Dan sehingga Anda akan dapat mengikuti bersama baik di sini, atau dengan menulis file yang sebenarnya dan kemudian mengeksekusi mereka. Tapi, akan kembali ke ini kode, hal lain bahwa Anda mungkin memiliki noticed-- baik, ada dua hal yang Anda mungkin melihat tentang blok ini. Pertama, agak lebih biasa, adalah bahwa Python tidak memiliki akhiran titik koma. Titik koma adalah opsional di mana-mana dan tidak berbahaya di mana-mana. Anda dapat menambahkan mereka. Ini mungkin membuat orang-orang yang menulis Python untuk kekek hidup pada Anda di belakang punggung Anda, karena mereka tidak perlu. Mereka sering tanda yang diadakan selama dari C. Para desainer dari bahasa merasa bahwa itu adalah lebih jelas dengan cara ini dan bahwa itu tidak perlu untuk menyatakan setiap kali Anda mengakhiri garis. Satu hal yang aneh tentang n ini adalah tidak memiliki jenis yang terpasang. Salah satu bagian keajaiban Python-- dan aku akan menyebutnya sihir, tetapi ada sangat alasan teknis mengapa works-- salah satu potongan keajaiban Python adalah bahwa variabel dapat memperluas atau menyusut berisi data apa pun jenis Anda akan ingin mereka. Jadi ini adalah 10. Jika kemudian turun saya ditugaskan untuk ini n 0,5, itu akan mengambil 0,5. Tidak peduli bahwa itu adalah int sini dan mengapung di sana, apa pun yang menggunakan n ini akan, lebih atau kurang, dapat bunyi letusan kecil bersama jika mendapat salah satu dari mereka. Kecuali ada beberapa yang sangat nyata alasan mengapa tidak dapat menggunakan data ketik n saat ini memiliki, di mana titik itu akan mendapatkan terjepit dan melemparkan kesalahan, dan orang-orang macam hal. Tapi di sini, Python tidak benar-benar peduli apa itu adalah bahwa saya akan tetap di ini kalimat, seperti, Anda ingin hal ini? Hal ini dalam? Ya, itu semacam hal. Aku akan tetap pada akhirnya. Ini akan menjadi masalah di kemudian hari, jika seseorang yang ingin menggunakan akhir yang tidak bisa mengatasinya. Ini adalah salah satu utama perbedaan antara Python dan C yang membuatnya mudah untuk menulis program C yang sangat besar dan membuatnya lebih mudah untuk menulis Program Python sangat kecil. Untuk sintaks sangat tidak berbeda dalam apa yang dilakukannya. Ini sedikit berbeda bagaimana itu diungkapkan. Jadi ini adalah sangat, apa yang disebut Pythonic, cara menulis itu. untuk baris di kisaran (n), ini adalah kisaran angka dari 0 sampai n, inklusif di bagian bawah dan eksklusif di atas. Jadi dari 0 sampai n-1, yang merupakan apa kode C adalah melakukan, kecuali itu jauh lebih mudah untuk melihat mungkin. Blok yang relevan tidak berangkat dengan kawat gigi, bukannya itu berangkat oleh lekukan ini. Jadi semua lini ini empat ruang ke kanan, atau seperti tentang lebar gajah. Dan mereka adalah orang-orang yang akan dieksekusi dalam hal ini untuk. Jika saya mengacaukan lekukan ini dan saya mendorong cetak yang kembali ke lekukan asli, cetak yang akan meninggalkan untuk loop. Berbeda dengan C, di mana di sini saya benar-benar harus bergerak yang brace tertutup sekitar. Ini berarti bahwa Anda tidak mendapatkan kesalahan yang melompat keluar pada Anda karena Anda menempatkan penjepit di tempat yang salah. Ini berarti bahwa Anda mendapatkan kesalahan yang melompat keluar pada Anda karena Anda menjorok yang salah jalur. Sehingga membuat lekukan super hati-hati. Mudah-mudahan Anda menjadi super Hati-hati dengan lekukan Anda tetap, dan jadi ini bukan yang lebih dari beban. Tapi aturan dasar untuk Python, dan kami akan memiliki beberapa ini bahwa kita akan pergi melalui melalui jalannya pembicaraan, adalah mencoba sintaks alami sebelum melihat apa-apa. Jadi sintaks ini, untuk nomor ini di kisaran, sangat khas dalam hal gaya. Banyak hal di Python kita akan melihat mengambil formulir ini. Dan jadi jika Anda datang dengan benda baru yang Anda pikir Anda harus dapat iterate atas ini, dalam format ini, ternyata mungkin mendukung format tersebut. Kami tidak akan pergi jauh di Super alasan teknis mengapa itu benar. Tapi itu intuisi berguna untuk memiliki ketika Anda mendekati program Python, bahwa hal ini hanya akan bekerja. Cobalah. Boot Command Line Interpreter, melihat apakah ia bekerja, bergerak dengan hal-hal, sebelum Anda bahkan perlu untuk membuka Google dan berkata, apa sintaks untuk Hal ini khususnya? Banyak Python Anda bisa menemukan hanya dengan mencoba. Ini jika bahkan lebih mirip untuk C maka fors yang. Perhatikan bahwa tidak ada tanda kurung. Kurung, sekali lagi, tidak berbahaya tapi tidak perlu. Ada usus pada akhir seperti untuk loop, dan lagi, blok relatif adalah menjorok daripada berangkat dengan kawat gigi. Lain ini adalah pada aslinya tingkat lekukan, dan blok yang relevan menjorok lagi. Mereka yang bekerja persis seperti yang mereka lakukan di C. Ini sebenarnya sangat banyak yang sama. Sekali lagi, cetak kehilangan satu karakter off dari printf Anda melewati beberapa string. Ternyata string baik dapat ditandai oleh tanda kutip tunggal atau tanda kutip ganda. Tidak ada perbedaan, kecuali dalam yang kutipan yang dapat Anda gunakan tanda kutip ganda dengan meninggalkan, daripada harus melarikan diri semua dari mereka. Dan dalam tanda kutip ganda, Anda dapat menggunakan tanda kutip tunggal dengan meninggalkan tanpa harus melarikan diri mereka. Jika Anda ingin mencampur mereka, Anda pasti bisa mencari secara online bagaimana melakukan hal itu. Anda akan melihat bahwa di sini, Aku sudah melewati pada akhirnya = hal ini. Ini adalah contoh dari opsional argumen, yang merupakan salah satu dari hal-hal bahwa Python mendukung bahwa membuatnya cukup berguna. Jadi cetak sebenarnya memiliki banyak argumen, yang biasanya set ke default nilai, tapi di sini saya sudah memutuskan untuk menimpa satu disebut end. Alasan bahwa saya harus menimpanya dengan string kosong adalah bahwa cetak di Python, oleh default, mencetak baris baru setelah hal yang Anda katakan juga. Jadi hash ini benar-benar akan mencetak hash di baris baru. Dan jika saya tidak ingin hash untuk mencetak baris baru setelah itu, maka saya harus mengatakan tidak mencetak satu. Tapi, namun begitu, satu hal terakhir yang Program ini hilang yang satu memiliki adalah include di bagian atas. Cetak dimasukkan ke Python jadi pada dasarnya bahwa tidak ada header atau modul yang perlu Anda termasuk, meskipun jika ingin untuk memasukkan hal-hal lain dalam naskah Python, Saya akan melakukannya dalam format-- sangat mirip kata-kata yang hanya sedikit berbeda. Saya sebutkan bahwa kita tidak perlu utama di sini, karena Python dimulai mengeksekusi di atas. Jika saya ingin membungkus ini dalam fungsi, saya akan melakukannya seperti this-- Saya akan mengatakan def nama fungsi, argumen mungkin pergi di sini dan kami akan melihat beberapa dari mereka kemudian, usus besar, dan sekali lagi, ini Seluruh berangkat blok adalah apa yang operasional memblokir untuk fungsi itu. Jadi ini adalah definisi dari fungsi. Dan ada deklarasi, lalu turun di sini, saya hanya bisa memanggil fungsi. Dan lagi, program ini interpreter, mulai dari atas, akan melihat ini adalah definisi. Ini tidak akan mengeksekusi ini sampai sampai di sini, dan kemudian itu seperti, oh sekarang Anda sudah menyebutnya, saya kira saya harus melaksanakannya. Sebuah hal yang sangat umum untuk melihat dalam file Python, terutama file Python yang yang dirilis ke publik dan dikembangkan by-- dan dikembangkan dan dipertahankan, adalah sesuatu dari formulir ini. Hal ini terjadi karena basically-- Python, Anda mulai di bagian atas dan kemudian Anda jalankan ke bawah, Saya Mario jika saya hanya punya disebut di sini, maka setiap kali saya termasuk file ini di file lain, karena saya ingin menggunakan adalah fungsi Mario, bahwa file lain akan juga memiliki panggilan ini untuk Mario di dalamnya. Dan ketika aku berlari file tersebut, itu akan memanggil Mario. Jadi itu mungkin bahwa saya hanya ingin menjalankan ini jika saya sudah benar-benar dieksekusi file tertentu ini. Dan jadi saya bisa membungkus ini dalam idiom seperti ini, di mana saya mengatakan, jika nama eksekusi ini lingkungan adalah utama, maka saya ingin melakukan hal-hal ini. Jika tidak orang lain bisa use-- termasuk function-- saya file saya, dan hanya untuk mendapatkan akses ke fungsi-fungsi ini tanpa harus menjalankan hal-hal yang saya ingin mengeksekusi dalam file ini. Ini, sekali lagi, opsional tapi sangat umum. Hal-hal ini adalah entirely-- persis sama antara C dan Python, tentu dalam 3. Saya pikir dalam 2, operator divisi kadang-kadang memberi Anda kembali mengapung saat Anda dioperasikan pada int, dan baik Anda ingin itu atau Anda tidak. Tapi ditambah, dikurangi, dan kali bekerja persis seperti yang Anda harapkan, kecuali lebih sedikit lebih jenis. Jadi Anda bisa kalikan mengapung oleh int, dan orang-orang macam hal. set bekerja persis sama. Anda dapat menggunakan dua tanda sama. inequals-- lebih besar dari, kurang dari, hal-things-- memiliki arti yang Anda akrab dengan mereka. Di mana C menggunakan operator ini, Python menggunakan sedikit lebih Inggris yang dibaca. Jadi bukan dua, ampersands, Anda harfiah mengetikkan kata "dan," "atau," atau tidak." Seperti di if-- Anda di Anda pernyataan bersyarat, kita lihat sebelumnya bahwa sintaks ini di C sesuai dengan sintaks ini di Python. Dan ada tidak banyak berbeda ada, kecuali sedikit tanda baca sekitar sisi. Sekali lagi, di mana C akan lagi jika, Python menggunakan Elif, tapi ini sebagian besar perubahan tingkat permukaan. Iterasi seperti ini sering ditulis dalam idiom ini di Python. Anda dapat memproduksi semacam ini Hal dengan loop sementara di luar jika Anda ingin, tapi Anda tentu tidak perlu. Dan lagi, jika Anda ingin mencetak elemen dalam array Anda mungkin melakukannya dengan cara ini. Salah satu hal yang menyenangkan tentang Python meskipun, adalah bahwa Anda tidak perlu menggunakan paradigma ini, dan Anda dapat menggunakan sedikit lebih elegan satu. Anda mengatakan untuk di ary. Jadi, daripada pergi di sini dan berjalan di atas indeks, dan kemudian menarik keluar elemen individu, Anda memberitahu untuk untuk benar-benar hanya menjalankan lebih dari unsur-unsur itu sendiri. Dan kemudian apa yang Anda lakukan dalam dapat beroperasi secara langsung pada unsur-unsur, yang cukup menyenangkan. Dan kami akan see-- kita akan menggunakan bahwa idiom lagi dan lagi seperti yang kita berjalan melalui kode. Ini, sekali lagi, contoh sesuatu yang aku akan memanggil Python sihir, meskipun ada alasan yang sangat teknis mengapa ia bekerja. Dan ada hal-hal teknis yang harus benar tentang array dalam rangka untuk bekerja di belakang layar. Masalahnya adalah bahwa sebagian besar jenis yang Anda harapkan ini untuk bekerja memiliki ini diterapkan untuk Anda dalam bahasa built-in. Hal lain yang akan menyenangkan jika ini bekerja dalam setiap bahasa, tetapi ada beberapa alasan mengapa hal itu tidak bisa, mencetak string ini kali nomor ini. Ternyata di Python, ini tidak tepat apa yang Anda ingin, yang hanya menyenangkan, dan berarti bahwa kita benar-benar dapat mengurangi program ini, lagi mario.c. Daripada iterasi banyak, kita bisa hanya mengatakan, saya ingin beberapa jumlah ruang, Saya ingin jumlah hash, dan beberapa hash di akhir. Dan lagi, kita menggunakan format ini. Di sini, kita lewat di variabel dengan cara ini. Sekali lagi, kita tidak perlu untuk mengatakan apa jenis variabel itu, dan satu-satunya waktu kita akan mendapatkan kesalahan adalah pada waktu berjalan. Ketika seseorang mencoba untuk lulus sesuatu di, itu akan datang ke fungsi saja. Jika kita baji di sini karena ini bukan hal yang dapat Anda membuat rentang lebih, Aku akan mendapatkan error di sana, dan saya harus men-debug seperti itu. Tapi sementara itu, saya tidak memiliki menjadi sangat berhati-hati tentang apa yang akan berlalu dalam, asalkan dalam aktual eksekusi itu semua bekerja sangat rapi. Aku bahkan bisa membuat ini sedikit lebih bersih menggunakan built-in fungsi tertentu pada string, yang Justify kanan. Ini hanya fungsi yang berguna tergeletak di sekitar perpustakaan. Ini dalam dokumentasi jika Anda pergi dan mencarinya. Dan saya katakan, baik aku akan memiliki string ini, beberapa jumlah hash, dan saya ingin benar membenarkan pad itu-- keluar dengan spasi menjadi panjang ini. Sekali lagi, ini adalah di dokumentasi, yang membawa us-- Aku benar-benar akan mengklik these-- yang membawa kita ke aturan kedua kami untuk Python-- perpustakaan standar metode fungsi adalah teman Anda. Dan itu sering bernilai saat Anda untuk pergi mencari aku bertanya-tanya jika ada hal yang hanya melakukan ini. Mungkin ada. Jika Anda ingin pad keluar string, jika Anda akan ingin mengambil kembali setengah dari string, jika Anda akan ingin mencari melalui string, jika Anda ingin menghancurkan beberapa hal bersama-sama dengan string dengan koma di antara mereka, ada perpustakaan standar fungsi untuk melakukan hal ini. Dan itu membuat hidup Anda lebih mudah jika Anda menggunakan mereka bukannya meluncurkan segala sesuatu pada Anda sendiri dalam lima baris kode di sini, lima baris kode di sini. Yang benar-benar dimulai pada menambahkan hingga real time. Salah satu hal yang menarik tentang bagaimana ini dipanggil. Anda akan melihat bahwa ada hal yang dot. Saya memiliki beberapa objek di sebelah kiri, dan kemudian saya menelepon titik fungsi. Ini adalah salah satu paradigma yang Python menggunakan untuk melampirkan metode untuk objek. Kita akan berbicara tentang apa ini sangat singkat di akhir, tapi tahu bahwa kami berdua bisa beroperasi pada hal dengan mengambil benda mengatakan dot apapun, atau dengan menelepon fungsi yang mengambil bahwa obyek dan beberapa argumen lainnya. Jadi ini adalah cara yang baik hal bisa dilakukan dengan Python. Dan apakah tertentu fungsi diimplementasikan dalam gaya ini atau ini Gaya adalah sesuatu yang Anda harus mencari sampai Anda mendapatkan memahamkan yang satu kemungkinan untuk jatuh ke dalam. Ada kurang lebih kohesif filosofi di balik Python Anda menyerap sebagian besar dengan menulis banyak di dalamnya. Di beberapa titik, yang satu ini sesuatu yang akan dilaksanakan sebagai menjadi alami. Untuk saat ini, itu hanya sesuatu Anda belajar saat Anda mencari tahu setiap hal individu. Perpustakaan sehingga standar fungsi yang teman, dan mereka membiarkan Anda menulis hal-hal yang memakan banyak ruang ini benar-benar tak lama, benar-benar elegan. Dan ini sebenarnya mungkin lebih dibaca, saya akan mengatakan, dari program C di sana. Belum lagi fakta bahwa begitu singkat Anda bisa cocok dengan seluruh gajah dalam ruang yang kita diselamatkan. Hal lain, ini merupakan implementasi dari mario itu dot C, yang saya pikir adalah terpendek Anda bisa mendapatkannya. Itu tidak memiliki mendapatkan int, tapi itu kode keras nilai 10 dengan cara yang sama yang satu ini tidak. Ternyata ini satu jam di di 84 karakter, sedangkan Python adalah 64. Dan ini jauh lebih dibaca dari sampah ini di sini. Jadi Python lebih efisien dalam ruang. Ini sedikit kurang efisien dalam waktu, tetapi tidak banyak. Daftar merupakan hal penting dalam Python. Kami belum melihat mereka, tapi mereka beroperasi seperti array dilakukan di C. Jadi di sini, Anda dapat menyatakan mereka, Anda dapat melewati mereka ke hal. Sekarang kotak memegang array hal-hal ini. Sekali lagi, kami belum dinyatakan sebagai jenis, tetapi jika kita pernah mencoba untuk menggunakannya, apa yang Anda harapkan untuk bekerja pada sebuah array bilangan bulat akan bekerja pada array bilangan bulat. Ini adalah hal yang Anda benar-benar tidak bisa lakukan di C, karena memori itu begitu tangan, tapi sangat mudah dilakukan dengan Python. Jika saya ingin array saya untuk menjadi lebih besar, saya bisa menambahkan elemen untuk itu dan itu baik-baik saja. Apa yang terjadi di balik layar? Penafsir akan pergi dan mendapatkan beberapa memori, dan mungkin itu akan mendapatkan sedikit dari memori tambahan, jadi saya tidak jadi saya tidak memiliki untuk realloc setiap kali. Tapi berapa banyak memiliki lebih memori apakah itu perlu? Ini tidak keputusan Anda harus membuat, ini adalah keputusan bahwa interpreter yang akan dilakukan. Di sini kita melihat berbagai bisa mengambil dua argumen, tapi masih akan menjadi inklusif dari atas sehingga kita tambahkan 1 ada. Ini adalah sebuah ungkapan, yang bahkan lebih cara cerdas untuk menulis hal-hal seperti ini. Ini disebut daftar pemahaman, dan di sini apa yang kami katakan adalah saya ingin dimasukkan ke dalam i kuadrat untuk setiap nilai i dalam kisaran ini. Hal ini di sebelah kanan bisa menjadi lain array, dan hal ini di sebelah kiri menjadi fungsi tertentu yang akan mengambil di i sebagai variabel dan memberi saya beberapa hasil. Apa yang akan saya lakukan adalah, Aku akan membangun array itu semua hal ini untuk setiap nilai dalam kisaran ini. Dan ini super elegan, super pendek, dan itu sangat jelas apa artinya. Ini adalah salah satu things-- ini lagi, satu of-- sangat simbol dari alasan bahwa orang-orang seperti Python. Jika Anda suka pemrograman seperti ini, maka Python adalah bahasa Anda mungkin ingin belajar. Dan lagi, ada teknis alasan mengapa ini bekerja. Tapi sejauh kita prihatin, kita lebih atau kurang tidak peduli. Jadi jika Anda ingin mencetak daftar, beberapa idiom yang sama berguna. Untuk i dalam kisaran ini, kita bisa Indeks melalui semua hal dan kemudian mencetak mereka semua. Dan Anda akan lihat len ​​sini. Jika Anda pernah ingin untuk mendapatkan panjang dari array, yang sangat mudah dengan Python, itu sangat sulit di C. Hal ini akan mencetak persis apa yang Anda harapkan. Kami juga bisa, seperti yang telah kita lihat sebelumnya, iterate atas elemen dalam array langsung, dan kemudian hanya berbicara tentang mereka, daripada memiliki indeks kembali ke array setiap kali. Dan ini adalah hal yang dapat Anda lakukan. Jadi dalam C, jika Anda meminta sesuatu seperti ini, cetak akan mengatakan, itu sebuah array bilangan bulat. Itu jelas bukan tali, saya tidak bisa mencetaknya. Python kurang lebih tidak peduli. Ini seperti, apakah ada cara yang saya bisa mengubahnya ke string? Ya, aku akan melakukannya. Dan jadi saya hanya akan mencetak yang keluar. Ini berarti bahwa Anda dapat melakukan hal-hal like-- ini adalah sebagian besar bagian keras permainan lima belas, ditulis sangat singkat di Python. Anda akan melihat bahwa ada sedikit of-- sini Saya sudah dilemparkan integer ke string, dan saya harus melakukannya secara manual. Dan aku akan menambahkan ke string lain, atau Python jadi bingung. Tapi apakah ketika Anda menambahkan string ke integer, aku kira untuk mendapatkan bilangan bulat kembali atau string kembali? Tetapi sekali lagi, jika Anda hanya memanggil str pada suatu hal, dan itu bisa di kemungkinan dunia dikonversi menjadi string, mungkin akan dikonversi menjadi string. Di sini, kita melihat penggunaan daftar bersarang pemahaman di sebelah kiri, beberapa pengindeksan, yang adalah persis seperti Anda akan digunakan untuk itu, dan beberapa mencetak hal. Sekali lagi, kami telah didefinisikan beberapa fungsi dan kita akan memanggil mereka turun di utama ketika kita benar-benar mendapatkan file. kembali bekerja sama persis seperti Anda akan harapkan dari bekerja dengan C. Cari, kita dapat mengatur hal-hal seperti this-- inilah pemahaman daftar ada tugas untuk variabel, dan kita benar-benar bisa melakukannya lebih mudah. Kami tidak perlu menulis pencarian, karena built-in untuk bahasa adalah jika hal ini dalam array ini. Kembali benar, yang lain kembali palsu. Jadi itulah keseluruhan find. Keseluruhan semacam melibatkan memanggil semacam, yang is-- ada implementasi ini dibangun ke perpustakaan C tertentu. Jika Anda ingin ini semacam mundur, Anda dapat menimpa ini opsional Argumen secara terbalik dengan benar. Dan jika Anda ingin menyortir lebih string, yang built-in juga. Jadi ini bukan untuk mengatakan ini adalah hal-hal yang perlu Anda lakukan setiap hari, tetapi gagasan adalah bahwa ini adalah filsafat Python, bahwa semua hal ini yang Anda akan semacam ingin melakukan yang built-in. Dan sebagian besar fungsi standar, jadi semacam, panjang, apa pun, mendukung input yang paling logis masuk akal. Anda panggilan len pada array yang sama cara Anda sebut len ​​pada string. Anda multiply-- Anda menyortir string dengan cara yang sama Anda menyortir array. Kebanyakan fungsi standar bahwa orang-orang membangun, dan yang paling pihak ketiga perpustakaan yang orang membangun, karena mereka meniru desain perpustakaan standar, dapat meminta segala sesuatu yang Anda seperti, mengapa tidak ini hanya bekerja, di C. Lebih atau kurang, ia akan bekerja dengan Python karena orang bekerja di belakang untuk angka apa hal itu dan kemudian beroperasi tepat di atasnya. Jadi sekali lagi, latar belakang teknis, tetapi membuat hidup kita lebih mudah sebagai programmer. Jadi, inilah file I / O. mengajukan I / O memiliki banyak hal-hal kecil yang membuatnya rumit, dan jadi ada sumber online, tapi secara singkat, Anda menelepon terbuka pada file nama dengan jenis tertentu. Jadi yang membaca, membaca dan menulis, menulis atau menambahkan. Anda membaca sejumlah karakter dan Anda mencetak mereka, Anda akan mendapatkan Hello! Maksudku, seperti file ini memiliki Hello! Di dalamnya, panggilan untuk membaca, dan apa yang Anda akan mendapatkan kembali adalah string yang memiliki semua dari sisa array, atau semua sisa file. Jika Anda panggilan baca lagi, Anda berada di akhir file, dan sehingga Anda tidak mendapatkan apa saja dan sehingga Anda akan menutup. Sekali lagi, ini bukan .close File dekat, karena akan di C. Ini lebih atau kurang karena f adalah hal, dan Anda ingin untuk f untuk menutup. Tapi file dasar I / O tidak sangat rumit. Sekali lagi, jika Anda ingin membuka file, jika Anda ingin membaca baris tertentu, Anda bisa keluar dari tertentu line-- ada built-in untuk itu. Jika Anda ingin menulis hal, Anda bisa menulis ini. Jika Anda ingin menulis individu gigitan, Anda dapat menulis mereka. Dan jika Anda ingin iterate atas baris file individual, seperti yang kita lakukan dalam sepotong dari beberapa minggu yang lalu, Anda bisa melakukan itu untuk. Sekali lagi, sebagian besar benda-benda yang akan Anda ingin dapat iterate atas dukungan iterasi atas mereka. Dalam Piton, file ini mungkin hal yang Saya ingin iterate atas baris demi baris. Jika itu kamus kata-kata dan saya mencoba untuk mendapatkan individu yang kata-kata, kemudian, dalam lingkaran ini, garis itu akan menjadi setiap kata pada gilirannya dan ini akan dieksekusi untuk setiap baris dalam file sampai akhir file. Dan lagi, jika saya dicetak masing-masing line, garis datang dengan baris baru, jadi saya menetapkan akhir kembali ke hal seperti ini. Lalu aku akan mendapatkan isi dari file saya. Hal kedua yang beroperasi di beberapa cara seperti daftar, dan dalam beberapa hal sebagai sesuatu yang substansial lebih bertenaga, adalah kamus, yang benar-benar keren untuk digunakan, tetapi pada dasarnya hash tabel menyamar. Anda membuat satu menggunakan persis dua karakter, yang mengagumkan jika Anda mencoba untuk menerapkan tabel hash untuk set masalah Anda, Anda tahu banyak rasa sakit yang bisa. Tetapi orang-orang telah melakukan itu, dan melakukannya dengan baik, Anda tidak perlu khawatir tentang hal itu lagi. Kemudian Anda dapat memasukkan hal-hal individual. Tables-- hash atau kamus tidak begitu peduli apa yang Anda menyimpan di dalamnya. Jadi jika beberapa entri nomor, dan beberapa entri yang daftar, jika beberapa entri kamus lainnya, dan beberapa entri adalah string, Python tidak terlalu peduli. Sekali lagi, jika Anda pergi ke dalamnya mengharapkan string dan apa yang Anda dapatkan kembali adalah array, itu masalah Anda. Dan mungkin itu kesalahan dari siapa pun pikir itu menempatkan hal-hal dalam kamus, mungkin itu Anda. Jika itu adalah seseorang lain, mudah-mudahan mereka berperilaku baik tentang apa akan di kamus dan tidak meninggalkan perangkap bagi Anda untuk jatuh ke dalam. Tapi fungsi standar akan memberikan kembali hal-hal berperilaku baik. Jadi mereka mengatakan pengembalian ini kembali kamus string, maka segala sesuatu yang Anda akan untuk keluar dari adalah string. Jika Anda melakukan beberapa ini dan itu perjalanan Anda, baik, yang mungkin pada Anda. Python tentu memberikan Anda cukup tali untuk menggantung diri, jika Anda ingin. Sekarang kita dapat mencetak individu unsur ini dan kembali ini persis apa yang Anda harapkan. Persis apa yang Anda harapkan, saya kira, adalah ungkapan yang saya menggunakan banyak, tapi itu lebih atau kurang bagaimana Python bekerja. Jika Anda meminta sesuatu yang tidak itu, Python akan membuang kesalahan dan itu akan berhenti Anda dari program apa pun Anda berada di. Ini benar-benar akan mencetak informasi lebih dari itu, itu akan menunjukkan you-- itu akan tambahkan baris, dan sebagainya. Dan, sekali lagi, mungkin kita ingin untuk iterate atas kamus dan menemukan semua hal di dalamnya. Di sini kita iterasi dua hal pada saat yang sama. Dan jadi kita akan melakukannya dengan kunci, nilai, tapi kemudian mencetak semua ini. Dan jika kita ingin cast-- jika kita benar-benar berlari ini, kita akan memiliki beberapa kesulitan karena on-- ketika kami pergi dengan David, itu tidak bisa add-- jika kita tidak dilemparkan ke string pertama, kita tidak bisa menambahkan array string ke string. Tetapi jika kita dilemparkan ke String, kita mendapatkan sesuatu seperti ini, yang mungkin apa yang kita suka membaca. Dan ini adalah ejaan. Kami hanya membaca dalam hal-hal. Jadi kita dapat membaca di kata-kata individu sebagai garis. Kami memenggal terakhir hal, sehingga usus minus 1 chomps off hal terakhir yang we-- karakter terakhir dari string. Kita akan mengatakan. OK, masing-masing dari mereka mendapat dimasukkan ke dalam kamus ini, pemetaan ke nilai 1. Kami tidak begitu peduli tentang yang satu, tapi itu hanya ada untuk mengatakan, oh well, hal ini saya akan dimasukkan ke dalam kamus. Karena nanti apa yang kita akan lakukan adalah kita akan mengatakan, baik, apakah itu dalam kamus sama sekali. Sekali lagi, cek ini untuk keanggotaan up operasi menggunakan sama sekali berbeda algoritma dari itu akan di daftar, tapi kami menyebutnya dengan cara yang sama, yang adalah sebagian dari lapisan gula Python hal sehingga mereka lebih mudah untuk digunakan. Dan lagi, kita telah melihat hal-hal seperti ini sebelumnya. Hal ini pada dasarnya menemukan, atau itu persis sintaks yang sama sebagai menemukan, tetapi beroperasi selama struktur yang sama sekali berbeda. Dan kita tidak terlalu peduli. Jadi mereka adalah hal-hal yang Anda diminta untuk menerapkan untuk ejaan. Pada tingkat ini, kita akan mendapatkan lebih atau kurang semua psets dilakukan. AUDIENCE: Jadi yang pada dasarnya hanya datang kembali sebagai salah dieja jika tidak mencocokkan sesuatu dalam kamus? ROSS RHEINGANS-YOO: Ya, ya. Dan, ini adalah adaptasi dari masalah ditetapkan yang meminta Anda untuk melakukan hal itu. AUDIENCE: Mengapa garis minus 1 ada? ROSS RHEINGANS-YOO: Jadi ketika Anda iterasi lebih file meminta dengan garis, garis datang dengan karakter baris baru pada akhir itu-- minus 1 hanya untuk berbelanja mereka off. Dan ini adalah sangat fleksibel cara pengindeksan ke hal. Jadi jika Anda memiliki sebuah string, dan Anda ingin, juga aku akan mulai karakter tiga dan aku akan pergi ke akhir. 3 usus akan melakukannya untuk Anda. Jika Anda seperti, saya ingin memulai di mulai dan pergi ke terakhir minus 1 karakter, usus minus 1. Dan jika Anda ingin pergi dari ketiga minus pertama, maka Anda akan mengatakan 3 minus 1. Selain itu, jika Anda ingin Indeks dalam hal menghitung dari belakang, Anda hanya indeks dengan angka dikurangi. Dan karena, di mana C akan meledak atau mungkin makan Anda memori lain yang tidak memiliki akses ke, mendengar Anda dapat mengatakan minus 1 berarti yang terakhir tapi 1 karakter dalam string. Modul version-- adalah analog ke perpustakaan di C dan berguna untuk banyak hal. Banyak hal yang akan suka melakukan dengan Python, selain sederhana manipulasi variabel, Anda ingin menghubungkan ke perpustakaan yang lebih besar dengan yang lebih besar interface dan lebih kemampuan untuk berinteraksi dengan bagian-bagian lain dunia. sys adalah salah satu dengan sekelompok alat yang berguna untuk berinteraksi dengan sistem itu sendiri dan akan mengimpor seperti sys impor. Ada dokumentasi yang lebih dari itu, yang Anda bisa pergi di sini, atau Anda bisa menemukan di Google dengan googling Python sys. Anda mengetik di masukkan. Link pertama akan menjadi dokumentasi Python 2, link kedua akan menjadi Python dokumentasi 3. Dan jika kita menulis file yang tampak seperti this-- Jika khususnya, kami melihat operasi pada argumen baris perintah, seperti kita belajar untuk melakukannya dengan sangat awal di kelas ini. Hal ini tidak sulit. Anda bisa keluar argv, yang merupakan salah satu dari hal-hal yang dilaksanakan oleh sys. Itu tidak built-in ke paket dasar, tapi sekali lagi, Anda dapat memperpanjang dengan mengimpor bahwa fungsi dari sys. Anda akan menyebutnya sys. apapun. Berikut ada argv. Ada sebenarnya tidak ada argc di sys, karena Anda bisa mendapatkannya dengan mudah dengan memanggil len. Kami kemudian cetak yang keluar, maka kita berlari pada echo-args.py terminal kami. Kita kembali array, yang adalah argumen pertama ini. Sekali lagi, ini adalah argv 0, yang merupakan nama dari hal yang dipanggil. Jika kita menyebutnya dengan tambahan argumen, kita akan mendapatkan orang-orang kembali. Ini adalah salah satu cara untuk mendapatkan argumen baris perintah. Jika Anda ingin bendera di mana Anda menghidupkan hal tertentu atau menimpa default tertentu, argparse adalah teman Anda. Dan lagi Anda menemukan online yang di python argparse di Google. Ada beberapa utilitas modul yang Anda menemukan diri Anda menggunakan dan sekali lagi, jika Anda menghabiskan waktu bahasa ini mengimpor jsons untuk membaca dan keluar dari json file, tidak rumit. Anda membuka file, Anda disebut json.load pada file itu dan Anda mendapatkan kembali sesuatu. Apa hal yang? Ini adalah objek json. Dimana json yang memiliki array, Python memiliki array. Dimana json yang memiliki array asosiatif, Python kamus, string, dan angka, dan sebagainya. Anda ingin membuang yang keluar, Anda membuka file baru, Anda menelepon sampah, dan beban dan kesedihan untuk masuk dan keluar dari string. Demikian pula, acar dipanggil di dasarnya antarmuka yang sama. Ini sedikit lebih berguna jika Anda membuang benda Python. Jadi, jika Anda pernah ingin menyimpan versi status dari variabel untuk masa depan menjalankan program Anda, acar adalah Python perpustakaan untuk melakukan hal itu. Jika Anda memiliki semacam variabel yang dapat ditulis dalam kata-kata seperti dan karakter dan bytes-- seperti kamus ini, kita bisa menulis, kita bisa menuliskannya sebagai seperti objek json, yang harfiah karakter ini. Dan maka akan sangat mudah bagi manusia untuk membukanya up-- membuka dan membacanya. Jika kita tidak sangat peduli tentang manusia membacanya, kita bisa paket lebih efisien ke dalam bentuk yang bisa nantinya akan membongkar atau yang bisa nantinya akan meningkat. Dan ini menghemat 80% dari ruang yang Anda mungkin benda mengambil jika Anda menulis mereka keluar tulisan tangan. Anda menelepon acar sangat banyak sama way-- sampah, beban, dan kemudian Anda mendapatkan hal Anda kembali. Jadi jika Anda menulis sangat program Python pendek yang ingin menyelamatkan negara, dan kemudian membaca mereka kembali nanti, hal-hal seperti ini adalah teman. Bahwa Anda bisa sangat mudah membuang mereka sebagai json. Kebanyakan objek Python dapat membuang keluar json yang jika ada harapan bahwa secara struktural mereka bisa diwakili dengan cara itu. Ini hanya ujung gunung es pada modul yang berguna. Jadi sys, os, multiprocessing, yang semacam workhorses dasar untuk hal-hal kita perlu berinteraksi dengan sistem file os., seperti os.isfile, os.isdirectory, os.makefile, ini adalah teman. Jika Anda ingin berinteraksi dengan jenis file tertentu, json, acar, csv. Jika Anda ingin berinteraksi dengan web halaman, urllib untuk mendapatkan http halaman. bs4-- BeautifulSoup-- itu parser indah untuk html. Anda menjalankannya pada html dan Anda mendapatkan objek array bersarang ini sekarang, yang dapat Anda melintasi lebih mencarimu, dengan seperti hanya mencari jika, adalah, dalam, yang fantastis. Ada sekelompok paket untuk running-- untuk melakukan hal-hal terutama Mathy. Jadi jika Anda ingin berkembang biak, membalikkan, mengubah matriks, numpy digunakan oleh orang-orang seluruh dunia untuk itu. scipy bahkan lebih berguna alat ke arah itu. sklearn-- pembelajaran mesin, pengolahan bahasa alami, Super barang berguna, mendapat diimplementasikan di Python sepanjang waktu. Dan lagi, mengambil sedikit lebih lama untuk write-- maaf, Dibutuhkan sedikit lebih lama untuk menjalankan, tapi alasan bahwa insinyur nyata cenderung Penggunaan Python adalah karena Anda cenderung diblokir pada Anda menulis kode, bukan dari komputer Anda menjalankan kode. Jadi jika Anda akan menulis Program, yang banyak orang lain akan menggunakan selamanya, seperti Linux, Anda mungkin menulis dalam C. Jika Anda akan menulis mesin komputasi, Anda mungkin menulis Python jika Anda membutuhkan untuk mengubahnya setiap beberapa bulan. Beberapa orang akan menulis di C karena mereka seperti itu. Jadi kita lihat sys impor sebagai cara untuk mendapatkan hal-hal mendapatkan modul ke dalam program Anda. Anda juga dapat mengimpor sebagai nama panggilan, jika Anda ingin. Lagi multiprocessing adalah rasa sakit untuk setiap kali mengetikkan, sehingga impor sebagai mp dan kemudian kapan saja Anda menggunakannya dalam program ini, Anda akan mengatakan mp.process, atau apa pun. Jika Anda ingin impor hanya satu hal, sehingga urllib memiliki hal yang disebut permintaan, sehingga Anda hanya dapat mengimpor itu. Kemudian, Anda tidak akan memanggil sebagai urllib.request, tetapi hanya sebagai permintaan dengan sendirinya. Dan Anda dapat mengimpor semua dari modul jika Anda ingin. Ini kadang-kadang tidak idea-- baik ini biasanya bukan ide yang baik, benar-benar. Karena Anda very-- karena jika sesuatu dalam modul yang memiliki nama yang Anda ingin menggunakan tempat lain dalam program Anda, Anda tidak bisa. Dan itu tidak selalu jelas bahwa itu yang terjadi. Dalam rangka untuk memastikan bahwa apa yang Anda lakukan adalah aman, Anda perlu membuka modul dan melihat semua dari nama-nama yang berakhir di there-- semua fungsi, semua variabel yang hidup di modul itu, karena Anda membawa semua mereka ke namespace lokal Anda. Jadi orang melakukan hal ini. Hal ini umumnya direkomendasikan bahwa Anda tidak melakukan hal ini. Tetapi orang-orang melakukan hal ini semua waktu karena mereka malas dan tidak ingin mengetikkan mp. apa-apa, pernah. Semua pembicaraan tentang modul membawa saya sekitar untuk pembicaraan singkat pada bagaimana Anda merancang program dengan Python. Langkah pertama adalah untuk memeriksa untuk melihat apakah orang lain telah melakukan hal tersebut, atau dilakukan 90% dari hal tersebut. Kemungkinan mereka mungkin memiliki, dan Anda harus pergi mendapatkan hal mereka dan menjalankan itu. Atau menulis pembungkus di sekitarnya untuk disesuaikan dengan tujuan Anda. Ini hanya setelah yang memiliki gagal yang sebaiknya Anda kemudian terus dan write-- mulai memikirkan bagaimana Anda akan menempatkan hal ini bersama-sama. Ada banyak hal di luar sana, dan itu salah satu yang paling berguna hal tentang Python. Seperti bahasa adalah elegan, bahasa mudah digunakan, tetapi juga karena itu begitu elegan dan mudah digunakan, orang telah menggunakannya untuk lama waktu dan ada banyak hal di luar sana bahwa Anda dapat memanfaatkan untuk Anda gunakan sendiri. Jadi aturan terakhir dari Python, seseorang lain telah mungkin ditulis modul untuk itu, orang lain memiliki sudah mungkin ditulis perpustakaan untuk itu. Sebelum Anda mencoba untuk melakukan sesuatu, melihat untuk melihat apakah itu sudah dilaksanakan. Ini tidak sulit. Semua modul yang saya memasang sebelumnya, dengan mungkin satu pengecualian, datang pra-instal di setiap instalasi Python standar. Dan dengan panggilan untuk mengimpor apa pun, Anda memiliki semua fungsi yang di ujung jari Anda. Mulai membungkus ini bicara, ada beberapa hal bahwa saya telah meninggalkan sebagai kotak hitam dan semacam dipoles, dan ada beberapa putih terletak bahwa saya telah diberitahu bahwa demi kejujuran, Aku akan setidaknya titik di di sini, bahkan jika saya tidak akan pergi Super jauh ke semua dari mereka dan penjelasan teknis mereka. Banyak hal-hal yang bahwa saya telah disebut sihir adalah apa yang akan memanggil orang lain pemrograman berorientasi objek. Jadi ada banyak things-- sehingga variabel yang sangat sering tidak byte sederhana duduk di, memori, tetapi sangat rumit objek yang memiliki internal yang negara tentang fungsi dan banyak variabel tersembunyi, banyak fungsi tersembunyi, yang memungkinkan Anda mengubahnya menjadi string, yang memungkinkan Anda iterate atas mereka. Dan jika Anda writing-- dan alasan bahwa mereka memiliki semua fungsionalitas yang kaya ini karena people-- arsitek dari language-- telah pergi melalui dan untuk setiap standar objek, dimasukkan ke dalam fungsi mengatakan ini adalah bagaimana hal ini bagaimana ini akan beroperasi jika seseorang ingin iterate di atasnya. Jadi segala sesuatu yang seseorang mungkin mungkin ingin iterate atas, telah ditulis dalam logika manual pada bagaimana Anda seharusnya iterate atas objek. Segala sesuatu yang Anda mungkin mungkin ingin dibuang ke string telah logika tertulis. Ini adalah fungsi yang Anda menelepon jika Anda ingin membuang ini untuk string. Inilah sebabnya mengapa Anda bisa memanggil len pada hal-hal, ini adalah mengapa Anda dapat memanggil dalam, ini mengapa Anda dapat menghubungi jika di atas segalanya yang Anda ingin, karena mereka semua membawa dengan mereka, pengetahuan teknis bagaimana melakukan hal itu. Ini adalah sesuatu yang saya Super tidak akan masuk ke dalam. Tapi untuk hal dalam daftar adalah halus berbeda dari gaya C untuk loop, dan Anda dapat membaca semua tentang hal itu pada internet jika Anda tertarik. Ada sisi gelap untuk semua ini, yang saya sebutkan, jadi ada dua hal. Yang pertama adalah bahwa berorientasi obyek ini pemrograman menambahkan banyak overhead untuk hal-hal acak, sehingga Anda berakhir dengan menggunakan lebih banyak memori; Anda akhirnya menggunakan sedikit lebih waktu dari yang Anda lakukan sebaliknya. The other-- tetapi lebih sisi gelap berbahaya untuk ini adalah, jika hal-hal hanya bertindak seperti Anda ingin mereka tanpa Anda harus berpikir super keras apakah ini harus menjadi int atau apakah harus ada float, itu mungkin bahwa di sini Anda menghasilkan int tapi di sini Anda berpikir, tapi mereka akan always-- maaf, mungkin bahwa di sini Anda menghasilkan pelampung, tetapi ketika Anda sampai ke bagian kedua program Anda, Anda berpikir, oh baik, tetapi mereka akan selalu melewati saya sebuah int. Dan jika mereka tidak, itu mungkin Anda terjepit di suatu tempat, jika Anda mencoba untuk menggunakannya untuk indeks ke dalam sebuah array, atau apa pun. Jadi salah satu yang nyata hal berguna tentang C adalah memaksa Anda untuk berpikir benar-benar keras sebelum Anda membuat any-- sebelum Anda membawa variabel apa saja menjadi ada, seperti apa adalah jenis variabel ini. Dan itu akan memiliki jenis untuk semua waktu. Ini tidak benar Python, dan pada kenyataannya, Anda can-- jika Anda hanya semacam pergi oleh telinga, dan Anda membuat beberapa keputusan salah satu cara di satu tempat, dan beberapa keputusan salah satu cara di tempat lain tanpa menempatkan barang-barang yang cukup di belakang adegan di tempat lain untuk menangkap hal-hal dengan benar, Anda bisa mendapatkan beberapa kesalahan yang sangat aneh. Dan program ini dapat tetap berjalan untuk waktu yang sangat lama, karena itu melakukan banyak pekerjaan untuk mengatakan, baik Hal ini bisa beroperasi dengan cara ini, jadi saya akan menjalankan seperti itu. Dan pada kenyataannya, fakta bahwa itu mendorong maju melalui banyak kesalahan kecil Artinya, sering ketika kesalahan sebenarnya buruk dan Anda benar-benar ingin memperbaikinya, itu berakhir mil away-- program akhirnya menghentikan mil jauhnya dari ketika Anda memiliki kesalahan Anda. Dan satu hal yang kami ingin program yang harus dilakukan, sometimes-- satu hal bahwa kita ingin program yang harus dilakukan ketika kita sedang debugging adalah gagal keras dan gagal sangat cepat ketika sesuatu berjalan salah. Python sangat buruk pada saat itu. Python sangat baik tidak gagal dan bergulir ke depan melalui hal-hal tak terduga. Jadi ini berguna ketika Anda sedang menulis program kecil. Ketika Anda mendapatkan rumit bug kadang-kadang memakan waktu lama untuk menggoda mereka. Jadi ada sisi gelap untuk semua ini, seperti itu hanya bekerja. Hanya bekerja seperti yang Anda harapkan untuk. Kecuali bahwa ketika tidak, Anda berakhir di tempat yang sama sekali berbeda dan mencoba untuk mencari tahu di mana itu adalah bahwa Anda salah. Pengumpulan sampah is-- sehingga satu hal yang Anda akan melihat adalah bahwa hal-hal ini yang Aku sudah dibawa ke existence-- array ini, kamus ini, ini benda, ini files-- pernah mendapatkan dibebaskan. Tidak ada panggilan untuk bebas dalam pembicaraan ini. Dan yang berada di C-side, karena kita tidak pernah masuk ke hal-hal. Namun dalam Python-sisi, tidak ada gratis. Hal mendapatkan secara otomatis dibebaskan ketika Python berpikir Anda tidak melihat mereka. Ini benar-benar baik tidak membebaskan hal-hal yang Anda mungkin masih mungkin akan melihat, tetapi ini berarti bahwa jika Anda akan mengalokasikan hal besar ini, dan Anda seperti, oh Aku sudah selesai dengan sekarang, sulit untuk mengatakan Python bahwa Anda selesai dengan sekarang. Anda kadang-kadang dapat mengatur variabel yang menjadi tidak ada, dan kemudian berharap bahwa akhirnya pengumpul sampah datang melalui dan membersihkan itu. Tapi sekali lagi, Anda tidak memiliki kontrol atas itu. Dan salah satu alasan yang digunakan orang C untuk benar-benar kinerja hal penting, adalah kemampuan untuk benar-benar tahu kapan memori dialokasikan dan ketika itu dibebaskan, dan memiliki banyak kontrol atas mengatakan, Saya tidak menggunakan memori lebih dari yang saya butuhkan. Yang merupakan sesuatu yang Python tidak terlalu bagus di. AUDIENCE: Dapatkah saya mengajukan pertanyaan? Apa yang Anda maksud dengan gagal keras? ROSS RHEINGANS-YOO: Jadi jika sesuatu yang salah dan Anda berada di debugging modus, Anda akan sangat sering ingin program Anda untuk memberitahu Anda di mana tepatnya itu beres, dan tidak hanya diam-diam berhenti berjalan. Tapi akan Anda benar-benar untuk mencetak segala macam informasi tentang seperti, di sini adalah ini. Hal ini terjadi Jika Anda mencetak sebuah wen-- jika Anda menjalankan server-- web AUDIENCE: [tidak terdengar] ROSS RHEINGANS-YOO: Ya, jika Anda menjalankan server web, kadang-kadang buruk jika Anda selalu membuang kesalahan, dan kau mengatakan, baik yang tidak bekerja. Aku akan berhenti. Aku hanya akan mengabaikan dan terus terjadi. Karena Anda bisa mendapatkan ratusan kesalahan ini dan tidak melihat mereka. Ini tentu akan berguna untuk tujuan debugging jika setiap kali server web Anda membuat kesalahan, Anda memiliki catatan tahan lama dari itu. Mungkin Anda bahkan ingin program untuk berhenti, sehingga catatan-catatan tidak terkubur di bawah hal. Tapi sekali lagi, itu dalam mode debugging. Seringkali dalam modus produksi, dunia adalah sedikit berbeda. Dan di skrip kecil yang aku berjalan, dimana hal yang saya katakan untuk melakukan mungkin hanya sedikit off dari apa yang saya ingin untuk melakukan, maka semacam mendorong melalui kesalahan adalah sesuatu yang Anda mungkin ingin. Dan dalam kasus-kasus, tentu Python benar-benar mendapatkan dimulai nya. Hal terakhir yang saya tidak berbicara di this-- bahwa saya tidak berbicara tentang tapi dapat benar-benar menyebalkan yang pertama kali Anda memiliki salah satu dari kesalahan ini, dan yang kedua dan ketiga dan keempat kali Anda memiliki satu kesalahan ini. Python, saya sebutkan bahwa ia menggunakan ruang putih untuk memberitahu Anda apa tingkat lekukan dan apa blok fungsional Anda berada di, memperlakukan tab dan spasi berbeda. Jadi jika Anda tab selama empat, dan kemudian baris berikutnya memiliki empat ruang, bahkan jika mereka muncul sebagai jumlah yang sama dalam editor Anda, Python tidak memperlakukan mereka sama. Bahkan, Python memperlakukan tab dan ruang seperti minyak dan air. Mereka adalah hal-hal hanya berbeda. Tidak ada tertentu panjang yang tab adalah, sehingga tidak seperti tab sama 8 ruang, dan sehingga Anda akan mendapatkan sekitar itu lewat situ. Seperti, ketika ia mengatakan, apa yang tingkat ruang putih aku di, itu sebenarnya mencari pola ruang dan tab. Dan, cara terbaik untuk menangani hal ini adalah untuk selalu menggunakan spasi sepanjang waktu. Dan pada kenyataannya, di Cloud9 IDE dan CS50 IDE, menyisipkan tombol Tab Anda empat ruang di sebaliknya dari tab, yang super berguna. Meskipun lagi, jika Anda menulis Python Program dengan tab yang akan baik-baik saja, itu hanya jika seseorang masuk dan mencoba untuk menambahkan satu baris untuk program Anda yang memiliki empat ruang untuk setiap tab, itu akan hancur. Dan itu akan istirahat di jalan yang benar-benar tidak terlihat. Meskipun kesalahan yang sebenarnya pesan yang melempar hubungannya dengan baru indent tidak diharapkan di sini, or-- jika berbicara tentang indentasi dan sepertinya itu salah, itu mungkin karena ada masalah tab-ruang. Mereka masih menyebalkan untuk debug. Seluruh terbesar di bicara ini, yang saya tidak mendapatkan karena itu benar-benar a, topik halus yang rumit, dan tidak perlu untuk melakukan hal yang telah kita lakukan sejauh ini, adalah sebuah konsep yang disebut tupel. Mereka ada banyak seperti array bahwa Anda tidak dapat memodifikasi. Mereka terbiasa seluruh tempat karena mereka berguna untuk banyak hal bahwa array tidak berguna untuk. Tetapi jika Anda ingin membuat sebuah array, dan kemudian berjanji penafsir yang Anda tidak akan pernah ingin memodifikasi yang thing-- pada kenyataannya, jika Anda ingin memodifikasi, Anda akan membuat yang baru dengan yang baru nilai dalam itu-- mereka adalah tupel. Daripada memproduksi mereka dengan tanda kurung persegi, Anda menghasilkan mereka dengan kurung bulat. Mengapa Anda akan menggunakan hal-hal ini, adalah sedikit pertanyaan. . Satu-satunya hal yang saya akan katakan tentang itu adalah Anda dapat menggunakan tupel sebagai indeks untuk kamus. Anda tidak dapat menggunakan array sebagai indeks untuk kamus. Dan mengapa, lagi, teknis dan Aku tidak akan lari ke dalamnya. The pset bahwa saya belum menyentuh di dalam pembicaraan ini pset6. Jadi di sini adalah bagaimana Anda 'd menerapkan a-- inilah bagaimana Anda akan menerapkan pset6 di Python. Mengingat Python siklus desain, hal pertama yang Anda lakukan ketika Anda program menulis adalah cek untuk melihat apakah ada orang yang melakukannya sudah. Bahkan, jika Anda ingin untuk serve-- Apache 50 melakukan sekitar ini, kecuali itu tidak datang standar diinstal pada mesin Linux. Python tidak, dan Python http server sederhana tidak juga. Jika Anda pernah pada mesin Linux, atau Cloud9 IDE luar CS50 dan Anda ingin untuk melayani arus ini direktori ke port tertentu, python-m SimpleHTTPServer pelabuhan menyajikan itu. Anda juga dapat mengimpor server http sederhana dan itu punya banyak fungsi jika Anda ingin menyesuaikannya, atau mengubahnya, atau dijalankan itu-- memanfaatkan itu untuk menjalankan layanan server Anda sendiri. Jadi itulah Python singkatnya. Dan ini telah CS50. Terima kasih.