ROSS RHEINGANS-YOO: Hi, Saya Ross. Dan ini adalah satu seminar CS50. Ia akan membawa anda dari program dalam C untuk pengaturcaraan Python. Python adalah bahasa skrip. Ia adalah sebahagian besarnya seperti C dalam sintaks, walaupun sesetengah butir-butir teknikal bagaimana sintaks yang mendapat dilaksanakan yang sedikit berbeza. Ia adalah kurang berkuasa daripada C dalam beberapa cara. Ia adalah kurang ekspresif untuk di mana sebenarnya dalam komputer anda memori mendapat dibentangkan, bagaimana ia akan dibentangkan, apabila ia mendapat kebebasan, dan orang macam perkara. Ia lebih berguna daripada C dalam beberapa cara, kerana lebih mudah untuk program dalam. Bahasa ini adalah, untuk beberapa orang, lebih intuitif. Dan benar-benar, matlamatnya adalah untuk ia menjadi lebih cepat untuk program dan berpotensi lebih perlahan untuk melaksanakan. Sekarang jika anda berfikir tentang jumlah masa anda dibelanjakan untuk yang terakhir masalah menetapkan secara bertulis kod anda terhadap jumlah masa yang anda menghabiskan pada masalah terakhir anda menetapkan melaksanakan kod anda, anda akan membayangkan bahawa bahasa yang merupakan dua kali lebih cepat untuk menulis, dan dua kali lebih lambat untuk melaksanakan, mungkin menjadi satu peningkatan berbanding C dalam beberapa cara. Sudah tentu apabila anda cuba untuk menulis program kecil untuk melakukan perkara-perkara kecil, Python adalah bahasa berguna pilihan. Dan pada akhir ini seminar, saya berharap anda akan dapat membuat pilihan dalam projek akan datang kira-kira yang bahasa adalah betul untuk digunakan, bukan idea yang yang satu bahasa yang lebih membetulkan semua masa. Beberapa perkara tentang apa seminar itu. Seminar ini tidak bertujuan untuk mengajar anda Python dari awal. Python adalah hampir sama kepada C, dan saya menganggap bahawa anda seorang pelajar CS50, atau seseorang dengan kebiasaan yang sama dengan C. Jika anda seorang pelajar CS50 atasi masalah menetapkan 6, supaya anda telah melihat banyak perkara-perkara dalam C, saya akan memberikan anda perbezaan utama, dan beberapa perkara yang membuat Python yang berbeza dan khas dan berguna, tetapi saya tidak akan pergi untuk apa bahasa pengaturcaraan adalah dan bagaimana untuk menulis program. Walau bagaimanapun, seminar ini akan mengajar anda untuk menulis program Python jika anda salah seorang daripada orang-orang kumpulan. Sekali lagi kita akan melihat bagaimana anda akan melaksanakan psets-- yang perlu 1-6 dalam Python-- dan memberi petunjuk dokumentasi rasmi untuk rujukan masa depan. Perkara lain yang penting tentang bagaimana ceramah ini diberikan, video ini akan menjadi dalam talian, ihsan CS50, jadi anda tidak perlu berasa seperti anda perlu mengambil nota. Anda sentiasa boleh pergi ke belakang dan melihat di kemudian sebagai rujukan. Selain itu slaid yang ada sekarang di laman web ini, yang sepatutnya membawa anda melakukan doc Google. Ia adalah satu versi yang sedikit dipendekkan apa yang saya menunjukkan pada skrin. Satu kaveat berhati-hati sebelum kita melompat, Python 3 adalah bahasa yang berbeza daripada Python 2. Mereka kelihatan banyak yang sama; disana ada perbezaan teknikal yang sangat sedikit yang akan menyebabkan program ditulis dalam Python 2 tidak dapat dilaksanakan dalam persekitaran Python 3. Perkakas CS50 datang dengan Python, secara lalai ia menggunakan Python 2. Anda boleh menyemak ini dengan menaip dalam baris arahan anda --version python, yang sepatutnya output 2.7.6 perkakas semasa. Cuba Python 3, yang tidak bekerja dalam perkakas, jika Python ingkarnya 2.X.Y, sama ada pada perkakas atau pada mesin anda sendiri. Anda perlu menggantikan Python 3 bila-bila masa dalam ceramah ini yang saya tulis Python. Jika mesin anda berjalan 2 secara lalai, jenis Python 3 untuk dapat benar-benar ikut bersama-sama dan melaksanakan perkara-perkara ini. Selain itu, saya akan menunjukkan anda pada sumber-sumber rasmi sekarang. docs.python.org/3--~~V-hati bahawa itu adalah satu 3 dan bukan 2-- mempunyai rujukan yang berguna. Tutorial akan membawa anda melalui banyak perkara yang sama yang saya lakukan sekarang, kecuali dalam bentuk teks. Rujukan adalah berguna sebagai rujukan untuk bahasa, dan Perpustakaan Standard memberikan anda beberapa sambungan dengan fungsi tambahan. Jadi program Python yang pertama. Di sebelah kiri kita mempunyai standard C, di sebelah kanan, kita ada Python. Anda mungkin telah diiktiraf masalah ini, ia salah satu masalah pertama set dalam CS50, dan ini menyelesaikannya menggunakan penyelesaian yang sama. Sekarang, sebab-sebab yang kami menyaksikan bahagian ini menyebelah begitu kita boleh melihat perbezaan sintaksis. Salah satu gajah di dalam bilik yang anda mungkin perasan betul off kelawar, adalah bahawa Python tidak mempunyai pembalut Fungsi utama sekitar kod. Jadi, dalam C, anda menulis sekumpulan fail, anda menghubungkan mereka bersama-sama, dan program bermula melaksanakan pada perkara ini dipanggil int utama. Dalam Python, anda menulis fail anda, melaksanakan fail, program bermula melaksanakan di bahagian atas fail. Jadi ia akan mula di bahagian atas fail pergi ke bawah sehingga ia mencari sesuatu yang lain. Jika ia mendapati definisi fungsi, ia tidak akan benar-benar melaksanakan kod itu, ia hanya akan menentukan fungsi. Tetapi di sini, apabila pertama program adalah n sama dengan 10, perkara pertama yang program ini akan lakukan ialah mengambil nilai ini daripada 10 dan menetapkan ia ke dalam pembolehubah yang dipanggil n. Bercakap talian itu, salah satu daripada lain things-- sorry-- ini bermakna bahawa program C, anda akan menulis mereka, anda akan membuat mereka yang akan sembah beberapa arahan dilafaz, dan kemudian anda akan menjalankan menyebabkan laku. Program Python, anda menjalankan teks file-- mario.py ini mungkin menjadi fail ini bahawa saya hanya menunjukkan atasmu, anda akan menjalankan fail yang dan anda akan melaksanakan, dan kandungan ia akan dilaksanakan oleh penterjemah Python. Anda boleh melakukan ini dalam IDE anda. Jadi, jika saya mempunyai fail Hello, yang hanya mempunyai kandungan ini. Ini sebenarnya Python 2, tidak Python 3, maka janganlah kamu bimbang tentang sintaks buat masa ini. Tetapi saya akan menjalankan Python, pada hello.py, dan ia berjalan. Cara lain yang boleh saya gunakan Python yang Saya tidak akan berurusan dengan begitu banyak dalam ceramah ini, jika saya hanya menaip Python, ia jatuh aku ke dalam persekitaran di mana Saya boleh memberi makan Python baris demi baris. Jadi di sini, jika saya menaip ruang cetak 'hello, dunia'. Jenis masuk. Ia akan meludah saya bahawa menyokong keputusan bahawa garis individu serta-merta. Ini mungkin berguna. Dalam ceramah ini, saya akan melakukan perkara-perkara pada slaid. Dan supaya anda akan dapat mengikuti bersama-sama sama ada di sini, atau dengan menulis fail sebenar dan kemudian melaksanakan mereka. Tetapi, akan kembali kepada ini kod, satu lagi perkara bahawa anda mungkin mempunyai noticed-- baik, ada dua perkara yang anda mungkin notis mengenai blok-blok. Yang pertama, dan bukan yang lebih biasa, adalah bahawa Python tidak mempunyai koma bertitik trailing. Koma bertitik adalah pilihan di mana-mana dan tidak merbahaya mana-mana. Anda boleh menambah mereka. Ia mungkin membuat orang yang menulis Python untuk kekek hidup pada anda di belakang anda, kerana mereka tidak perlu. Mereka sering tanda yang diadakan selama dari C. pereka bahasa merasakan bahawa ia adalah lebih jelas cara ini dan bahawa ia tidak perlu untuk mengisytiharkan setiap kali anda menamatkan satu barisan. Satu lagi perkara pelik tentang n ini adalah ia tidak mempunyai jenis yang dilampirkan. Salah satu bahagian keajaiban Python-- dan saya akan memanggilnya sihir, tetapi ada sangat sebab-sebab teknikal mengapa ia works-- salah satu daripada keping keajaiban Python ialah pembolehubah boleh mengembangkan atau menguncup kepada apa sahaja yang mengandungi data jenis yang anda mahu mereka. Jadi ini adalah satu 10. Jika kemudian ke saya ditugaskan untuk ini n 0.5, ia akan mengambil masa yang 0.5. Tidak kira bahawa itu int sini dan terapung di sana, apa-apa yang menggunakan n ini akan, lebih kurang, dapat bunyi letusan kecil bersama-sama jika ia menjadi salah seorang daripada mereka. Kecuali ada beberapa yang amat nyata sebab mengapa ia tidak boleh menggunakan data menaip yang n kini mempunyai, di mana titik ia akan mendapat desak dan membuang kesilapan, dan orang-orang macam perkara. Tetapi di sini, Python tidak benar-benar peduli apa ia adalah bahawa saya akan melekat dalam ini ayat, seperti, anda mahu perkara ini? Ini perkara dalam itu? Ya, ia adalah jenis perkara yang. Saya akan melekat pada akhirnya. Ia akan menjadi masalah di kemudian hari, jika seseorang yang mahu menggunakan hujung yang tidak boleh mengendalikan. Ini adalah salah satu yang utama perbezaan antara Python dan C yang menjadikan ia mudah untuk menulis program yang sangat besar C dan menjadikannya lebih mudah untuk menulis program Python yang sangat kecil. Secara sintaks tidak begitu yang berbeza dalam apa yang dilakukan. Ia sedikit berbeza dalam bagaimana ia dinyatakan. Jadi ini adalah sangat, apa yang dipanggil Pythonic, cara menulis. untuk baris dalam julat (n), ini adalah julat nombor dari 0 hingga n, termasuk di bahagian bawah dan eksklusif di atas. Jadi ia adalah dari 0 ke n-1, iaitu apa kod C yang dilakukan, kecuali ia lebih mudah untuk melihat mungkin. Blok berkaitan adalah tidak ditolak oleh penyokong gigi, sebaliknya ia ditolak oleh lekukan ini. Jadi semua ayat-ayat ini adalah empat ruang ke kanan, atau seperti mengenai lebar gajah. Dan orang-orang adalah orang-orang yang akan dilaksanakan dalam ini untuk. Jika saya merosakkan lekukan pada ini dan saya menolak cetak yang kembali ke lekukan asal, cetak yang akan meninggalkan untuk gelung. Berbeza dengan C, di mana di sini saya sebenarnya perlu bergerak yang bersedia tertutup sekitar. Ini bermakna bahawa anda tidak mendapat ralat yang melompat keluar pada anda kerana anda meletakkan dua gol di tempat yang salah. Ia tidak bermakna bahawa anda mendapat ralat yang melompat keluar pada anda kerana anda dilekukan yang salah talian. Jadi ia membuatkan lekuk super-hati. Mudah-mudahan anda menjadi super berhati-hati dengan lekukan anda anyway, dan sebagainya ini tidak begitu lebih banyak daripada beban. Tetapi peraturan asas untuk Python, dan kami akan mempunyai beberapa ini bahawa kita akan melalui melalui semasa ceramah tersebut, yang cuba sintaks semula jadi sebelum melihat apa-apa sehingga. Jadi sintaks ini, untuk nombor ini dalam rangkaian, adalah sangat berbeza dari segi gaya. Banyak perkara dalam Python kita akan melihat mengambil borang ini. Dan jadi jika anda datang dengan objek baru yang anda fikir anda akan dapat melelar ini, dalam format ini, ternyata ia mungkin menyokong format tersebut. Kami tidak akan pergi super mendalam dalam sebab teknikal mengapa yang benar. Tetapi ia adalah satu gerak hati berguna untuk mempunyai apabila anda menghampiri program Python, bahawa perkara ini hanya akan bekerja. Cuba ia. Boot Talian Perintah Interpreter, melihat jika ia berfungsi, bergerak dengan perkara-perkara, sebelum anda perlu untuk membuka Google dan berkata, apa yang sintaks untuk ini perkara tertentu? Banyak Python anda boleh menemui hanya dengan mencuba. Ini jika adalah lebih sama kepada C maka fors berada. Ambil perhatian bahawa tidak ada kurungan. Kurungan, sekali lagi, tidak berbahaya tetapi tidak perlu. Terdapat kolon pada akhir sama seperti untuk gelung, dan sekali lagi, blok relatif adalah tersusun dan bukannya ditolak oleh penyokong gigi. Lagi ini adalah pada yang asal Tahap lekukan, dan blok relevan dilekukan lagi. Mereka kerja betul-betul seperti yang mereka lakukan dalam C. Ini sebenarnya adalah lebih kurang sama. Sekali lagi, cetak kehilangan satu watak kira printf Anda lulus beberapa tali. Ternyata tali sama ada boleh ditandakan off oleh petikan tunggal atau petikan berganda. Tidak ada perbezaan, kecuali di dalam yang petikan tunggal anda boleh menggunakan tanda petik dengan meninggalkan, daripada harus melarikan diri semua daripada mereka. Dan di dalam tanda petik, anda boleh menggunakan tanda petikan tunggal dengan meninggalkan tanpa perlu melepaskan diri mereka. Jika anda mahu untuk campuran mereka, anda boleh pasti melihat dalam talian bagaimana untuk berbuat demikian. Anda akan melihat bahawa di sini, Saya telah diluluskan pada akhir = perkara ini. Ini adalah satu contoh pilihan hujah, yang merupakan salah satu daripada perkara-perkara yang Python menyokong bahawa menjadikan ia agak berguna. Jadi cetak sebenarnya mempunyai banyak hujah-hujah, yang biasanya menetapkan kepada default mereka nilai, tetapi di sini saya telah memutuskan untuk mengatasi yang bernama akhir. Sebab yang saya perlu mengatasinya dengan rentetan kosong adalah bahawa cetak dalam Python, oleh lalai, mencetak baris baru selepas perkara yang anda memberitahu juga. Jadi hash ini sebenarnya akan mencetak hash dalam garis baru. Dan jika saya tidak mahu hash untuk mencetak baris baru selepas itu, maka saya katakan tidak mencetak satu. Tetapi, namun begitu, satu perkara terakhir yang program ini hilang seseorang itu adalah yang termasuk di bahagian atas. Cetak dibakar ke dalam Python jadi pada dasarnya bahawa tidak ada header atau modul bahawa anda perlu untuk termasuk, walaupun begitu, jika mahu untuk memasukkan perkara-perkara lain dalam skrip Python, Saya akan melakukannya dalam format-- yang hampir sama kata-kata yang hanya sedikit berbeza. Saya nyatakan bahawa kita tidak perlu utama di sini, kerana Python bermula melaksanakan di bahagian atas. Jika saya mahu untuk membalut ini dalam satu majlis, saya akan melakukannya seperti saya this-- akan berkata def nama fungsi, hujah-hujah yang mungkin pergi di sini dan kami akan melihat beberapa orang-orang kemudian, kolon, dan sekali lagi, ini keseluruhan menolak blok adalah apa yang operasi menghalang untuk fungsi itu. Jadi ini adalah definisi fungsi. Dan ada perisytiharan, kemudian turun di sini, saya hanya boleh memanggil fungsi. Dan sekali lagi, program ini jurubahasa, bermula di bahagian atas, akan melihat ini adalah takrif. Ia tidak akan melaksanakan ini sehingga ia tiba di sini, dan kemudian ia seperti, oh kini anda telah memanggilnya, saya rasa saya perlu melaksanakannya. Satu perkara yang sangat biasa untuk melihat dalam fail Python, terutama fail Python yang dilepaskan kepada orang ramai dan dibangunkan oleh- dan maju dan dikekalkan, adalah sesuatu borang ini. Ini basically-- demikian kerana Python, anda mula di bahagian atas dan kemudian anda melaksanakan turun ke bawah, Saya jika saya hanya mempunyai Mario dipanggil di sini, kemudian bila-bila masa saya termasuk fail ini dalam fail lain, kerana saya mahu menggunakan adalah fungsi Mario, fail lain akan juga mempunyai panggilan ini kepada Mario di dalamnya. Dan apabila saya berlari fail itu, akan dipanggil Mario. Jadi ada kemungkinan bahawa saya hanya mahu menjalankan ini jika saya telah benar-benar dilaksanakan fail ini tertentu. Oleh itu, saya boleh balut ini dalam simpulan bahasa seperti ini, di mana saya berkata, jika nama pelaksanaan ini alam sekitar adalah utama, maka saya ingin melakukan semua ini. Jika tidak orang lain boleh use-- termasuk function-- saya fail saya, dan hanya untuk mendapatkan akses kepada fungsi-fungsi ini tanpa perlu menjalankan perkara-perkara yang saya ingin melaksanakan dalam fail ini. Ini adalah, sekali lagi, pilihan tetapi sangat umum. Perkara-perkara ini adalah entirely-- sama antara C dan Python, pasti dalam 3. Saya rasa dalam 2, pengendali bahagian ini kadang-kadang memberikan anda kembali terapung apabila anda dibedah ints, dan sama ada anda mahu atau anda tidak. Tetapi campur, tolak, dan masa bekerja betul-betul seperti yang anda harapkan, kecuali atas lebih sedikit jenis. Jadi, anda boleh membiak terapung oleh ints, dan orang-orang macam perkara. set berfungsi sama. Anda boleh menggunakan dua tanda-tanda yang sama. inequals-- lebih besar daripada kurang, daripada, ini macam things-- mempunyai erti yang anda sudah biasa dengan mereka. Di mana C menggunakan operator ini, Python menggunakan lebih sedikit Bahasa Inggeris orang-orang yang boleh dibaca. Jadi, daripada dua, ampersands, anda literal taip perkataan "dan", "atau," atau tidak." Seperti dalam jika- anda dalam anda kenyataan bersyarat, yang kita lihat sebelum ini bahawa sintaks ini dalam C sepadan dengan sintaks ini dalam Python. Dan ada tidak banyak berbeza di sana, kecuali untuk sedikit tanda baca di bahagian sisi. Sekali lagi, di mana C akan lagi jika, Python menggunakan elif, tetapi ini adalah kebanyakannya perubahan paras permukaan. Lelaran seperti ini sering ditulis dalam simpulan bahasa ini dalam Python. Anda boleh mengeluarkan seperti ini perkara dengan gelung sementara di luar jika anda mahu, tetapi anda sudah tentu tidak perlu. Dan sekali lagi, jika anda mahu mencetak elemen dalam array anda mungkin melakukannya dengan cara ini. Salah satu perkara yang menyeronokkan tentang Python walaupun, adalah bahawa anda tidak perlu menggunakan paradigma ini, dan anda boleh menggunakan salah sedikit lebih elegan. Anda mengatakan yang di ary. Jadi, daripada pergi di sini dan berjalan ke atas indeks, dan kemudian menarik keluar unsur-unsur individu, anda memberitahu untuk untuk benar-benar hanya menjalankan lebih unsur-unsur sendiri. Dan kemudian apa sahaja yang anda lakukan dalam boleh beroperasi secara langsung pada unsur-unsur, yang cukup menyeronokkan. Dan kita akan see-- kami akan menggunakan simpulan bahasa itu berulang kali seperti yang kita berjalan melalui kod. Ini adalah, sekali lagi, contoh sesuatu yang saya akan memanggil Python sihir, walaupun terdapat sebab-sebab yang teknikal kenapa ia berfungsi. Dan ada perkara teknikal yang perlu benar mengenai lokasi untuk untuk ini untuk bekerja di belakang tabir. Masalahnya ialah bahawa kebanyakan jenis yang anda harapkan ini untuk bekerja mempunyai ini dilaksanakan untuk anda dalam bahasa yang terbina dalam. Satu lagi perkara yang ia akan lebih baik jika ini bekerja pada setiap bahasa, tetapi terdapat beberapa sebab mengapa ia tidak boleh, mencetak rentetan ini kali nombor ini. Rupa-rupanya dalam Python, ini tidak betul-betul apa yang anda akan suka, yang hanya menyeronokkan, dan bermakna bahawa kita boleh sebenarnya mengurangkan program ini, sekali lagi mario.c. Daripada iterating banyak, kita boleh katakan, saya mahu beberapa beberapa ruang, Saya hendak jumlah Hash, dan beberapa cincangan pada akhir. Dan sekali lagi, kami menggunakan format ini. Di sini, kita lulus dalam pembolehubah dengan cara ini. Sekali lagi, kita tidak perlu untuk mengatakan apa jenis pembolehubah ia adalah, dan satu-satunya masa kita akan mendapat ralat pada masa jangka. Apabila seseorang cuba untuk lulus sesuatu, ia akan datang ke majlis itu dengan baik. Jika kita baji di sini kerana ini bukan satu- perkara yang anda boleh membuat julat ke atas, Saya akan mendapat kesilapan runtime sana, dan saya akan mempunyai untuk debug dengan cara itu. Tetapi dalam pada itu, saya tidak mempunyai berhati-hati tentang apa yang mendapat diluluskan pada, selagi dalam sebenar pelaksanaan semuanya berfungsi dengan bersih. Saya juga boleh membuat ini pembersih sedikit menggunakan fungsi terbina khususnya pada tali, yang Justify kanan. Ini hanyalah satu fungsi yang berguna terletak di sekeliling perpustakaan. Ada dalam dokumentasi jika anda pergi dan mencarinya. Dan saya berkata, baik saya akan mempunyai rentetan ini, ada beberapa Hash, dan saya ingin untuk membenarkan hak pad kitab itu ia keluar dengan ruang untuk menjadi panjang ini. Sekali lagi, ini adalah dalam dokumentasi, yang membawa us-- Saya benar-benar akan klik melalui these-- yang membawa kita kepada peraturan kedua kami untuk Python-- perpustakaan standard kaedah fungsi adalah rakan anda. Dan ia sering bernilai manakala anda pergi mencari Saya tertanya-tanya jika ada satu perkara yang hanya melakukan ini. Ada mungkin. Jika anda ingin pad daripada tali, jika anda lebih ingin mengambil belakang separuh daripada tali, jika anda lebih suka mencari melalui tali, jika anda ingin untuk menghancurkan beberapa perkara bersama-sama dengan tali dengan koma di antara mereka, terdapat perpustakaan standard fungsi untuk melakukan ini. Dan ia membuatkan hidup anda lebih mudah jika anda menggunakan mereka bukannya melancarkan segala-galanya sendiri dalam lima baris kod sini, lima baris kod di sini. Yang benar-benar bermula pada menambah sehingga masa sebenar. Salah satu perkara yang menarik bagaimana ia mendapat dipanggil. Anda akan melihat bahawa ada satu perkara yang titik. Saya mempunyai beberapa objek di sebelah kiri, dan kemudian saya dipanggil titik fungsi. Ini adalah salah satu paradigma yang Python menggunakan untuk melampirkan kaedah untuk objek. Kami akan bercakap tentang apa yang ini adalah sangat ringkas pada akhirnya, tetapi tahu bahawa kami boleh beroperasi pada perkara dengan mengambil yang dot Perkara berkata apa sahaja, atau dengan menghubungi fungsi yang mengambil bahawa objek dan beberapa hujah-hujah lain. Jadi ini adalah kedua-dua cara yang kerja dilaksanakan dalam Python. Dan sama ada yang tertentu fungsi dilaksanakan dalam gaya ini atau ini gaya adalah sesuatu yang anda harus melihat ke atas sehingga anda mendapat hang yang mana satu ia mungkin jatuh ke dalam. Ada lebih kurang padu Falsafah di sebalik Python yang menyerap kebanyakannya dengan menulis banyak di dalamnya. Pada satu ketika, yang salah satu daripada sesuatu yang akan dilaksanakan sebagai menjadi semula jadi. Buat masa ini, ia hanya sesuatu anda belajar kerana anda memikirkan setiap perkara individu. Perpustakaan supaya standard fungsi adalah rakan-rakan anda, dan mereka membolehkan anda menulis perkara-perkara yang mengambil ruang sebanyak ini benar-benar tidak lama lagi, benar-benar elegan. Dan ini sebenarnya mungkin lebih dibaca, saya berkata, daripada program C di sana. Belum lagi fakta bahawa begitu singkat anda boleh muat gajah keseluruhan dalam ruang yang kami telah disimpan. Satu lagi perkara, ini adalah pelaksanaan yang mario itulah titik C, yang saya fikir adalah yang paling singkat anda boleh mendapatkannya. Ia tidak perlu mendapatkan int, tetapi ia Kod keras nilai 10 cara yang sama yang satu ini tidak. Ternyata bahawa ini satu jam sekurang- 84 aksara, sedangkan Python adalah 64. Dan ini adalah tak terhingga lebih boleh dibaca daripada sampah ini di sini. Jadi Python adalah lebih cekap di angkasa. Ia sedikit kurang cekap dalam masa, tetapi tidak banyak. Senarai ini adalah satu perkara yang penting dalam Python. Kami tidak pernah melihat mereka, tetapi mereka beroperasi sama seperti tatasusunan lakukan pada C. Jadi di sini, anda boleh mengisytiharkan mereka, anda boleh lulus mereka ke dalam perkara seperti ini. Sekarang dataran memegang pelbagai perkara-perkara ini. Sekali lagi, kami tidak diisytiharkan sebagai jenis, tetapi jika kita pernah cuba untuk menggunakannya, apa-apa yang anda harapkan untuk bekerja di pelbagai integer akan bekerja pada pelbagai integer. Ini adalah suatu perkara yang anda benar-benar tidak boleh lakukan dalam C, kerana memori ia begitu tangan ke atas, tetapi adalah sangat mudah untuk dilakukan dalam Python. Jika saya mahu pelbagai saya untuk menjadi lebih besar, saya boleh menambah unsur kepadanya dan ia adalah baik. Apa yang berlaku di belakang tabir? Jurubahasa itu akan pergi keluar dan mendapatkan beberapa ingatan, dan mungkin ia akan mendapat sedikit memori tambahan, jadi saya tidak jadi saya tidak mempunyai untuk realloc setiap masa. Tetapi berapa banyak mempunyai lebih banyak memori yang ia perlukan? Ini bukan keputusan yang perlu anda buat, ini adalah keputusan bahawa jurubahasa akan lakukan. Di sini kita melihat pelbagai boleh mengambil dua hujah, tetapi ia masih akan menjadi inklusif teratas supaya kita tambah 1 di sana. Ini adalah satu simpulan bahasa, yang merupakan lebih cara bijak untuk menulis perkara-perkara seperti ini. Ia dipanggil senarai kefahaman, dan di sini apa yang kita katakan yang saya ingin dimasukkan ke dalam i kuasa dua untuk setiap nilai i dalam julat ini. Ini perkara di sebelah kanan boleh menjadi satu lagi pelbagai, dan perkara ini di sebelah kiri menjadi apa-apa fungsi tertentu yang akan mengambil di i sebagai pembolehubah dan memberikan saya beberapa keputusan. Apa yang saya akan lakukan ialah, Saya akan membina pelbagai itu sahaja perkara-perkara ini bagi setiap nilai dalam julat ini. Dan ini adalah super elegan, super pendek, dan ia sangat jelas apa yang dimaksudkan. Ini adalah salah satu daripada things-- ini sekali lagi, salah satu daripada- sangat lambang yang sebab-sebab yang orang-orang seperti Python. Jika anda suka pengaturcaraan seperti ini, maka Python adalah bahasa yang anda mungkin suka untuk belajar. Dan sekali lagi, terdapat teknikal sebab-sebab mengapa ini berfungsi. Tetapi sejauh yang kami bimbang, kita lebih kurang tidak peduli. Jadi jika anda ingin mencetak senarai, beberapa simpulan bahasa yang sama adalah berguna. I dalam julat ini, kita boleh indeks melalui semua perkara dan kemudian mencetak mereka semua keluar. Dan anda akan lihat len ​​sini. Jika anda pernah mahu untuk mendapatkan panjang array, itu sangat mudah dalam Python, ia sangat sukar dalam C. Ini akan mencetak tepat apa yang anda harapkan kepada. Kami juga boleh, seperti yang kita lihat sebelum ini, melelar lebih elemen dalam array secara langsung, dan kemudian hanya bercakap tentang mereka, dan bukannya mempunyai indeks kembali ke dalam array setiap masa. Dan ini adalah satu perkara yang boleh anda lakukan. Jadi, dalam C, jika anda meminta sesuatu seperti ini, cetak akan berkata, itulah pelbagai integer. Yang pasti bukan tali, saya tidak boleh mencetaknya. Python lebih kurang tidak peduli. Ia seperti, ada cara yang saya boleh bertukar ini masuk ke rentetan? Ya, saya akan berbuat demikian. Oleh itu, saya hanya akan mencetak yang keluar. Ini bermakna bahawa anda boleh melakukan perkara-perkara like-- ini di kebanyakan bahagian keras permainan lima belas, yang ditulis secara ringkas dalam Python. Anda akan melihat bahawa ada sedikit daripada- sini Saya telah membuang integer ke tali, dan saya perlu melakukannya secara manual. Dan saya akan menambah kepada rentetan lain, atau sebaliknya Python mendapat keliru. Tetapi sama ada semasa anda berada menambah rentetan kepada integer, aku rasa untuk mendapatkan integer belakang atau rentetan kembali? Tetapi sekali lagi, jika anda hanya memanggil str pada sesuatu perkara, dan ia boleh dalam mana-mana mungkin dunia ditukar kepada rentetan, ia mungkin akan menjadi ditukar kepada rentetan. Di sini, kita dapat melihat penggunaan senarai bersarang kefahaman di sebelah kiri, beberapa pengindeksan, yang betul-betul seperti yang anda akan dapat digunakan untuk ia, dan beberapa mencetak perkara. Sekali lagi, kami telah ditakrifkan beberapa fungsi dan kita akan memanggil mereka turun di utama apabila kita benar-benar mendapatkan fail. kembali berfungsi sama seperti anda akan harapkan daripada bekerja dengan C. Cari, kita boleh menyediakan perkara-perkara seperti this-- inilah senarai kefahaman ada tugasan untuk berubah-ubah, dan kita sebenarnya boleh melakukannya lebih mudah. Kami tidak perlu menulis carian, kerana terbina dalam untuk bahasa adalah jika perkara ini adalah dalam pelbagai ini. Kembali benar, lain kembali palsu. Jadi itulah keseluruhan daripada find. Keseluruhan daripada jenis melibatkan memanggil jenis, yang is-- terdapat pelaksanaan ini dibina ke dalam perpustakaan C tertentu. Jika anda lebih suka ini jenis ke belakang, anda boleh mengatasi ini pilihan hujah secara terbalik dengan benar. Dan jika anda mahu untuk menyelesaikan lebih tali, yang dibina-dalam juga. Jadi ini bukan untuk mengatakan ini adalah perkara-perkara yang perlu anda lakukan setiap hari, tetapi idea adalah bahawa ini adalah falsafah Python, bahawa semua perkara ini yang anda sedang semacam mahu lakukan adalah terbina dalam. Dan fungsi yang paling standard, supaya jenis, panjang, apa sahaja, menyokong input yang paling logik yang waras. Anda memanggil len pada pelbagai yang sama cara yang anda memanggil len pada tali. Anda multiply-- anda menyusun rentetan cara yang sama anda menyusun tatasusunan. Kebanyakan fungsi standard bahawa orang-orang membina, dan pihak ketiga paling perpustakaan yang orang membina, kerana mereka mencontohi reka bentuk perpustakaan standard, boleh dipanggil pada semua yang anda berada seperti, mengapa tidak ini hanya berfungsi, dalam C. Lebih atau kurang, ia akan bekerja dalam Python kerana orang bekerja di belakang kepada angka apa perkara yang ada dan kemudian beroperasi sewajarnya di atasnya. Jadi sekali lagi, latar belakang teknikal, tetapi ia menjadikan kehidupan kita lebih mudah sebagai pengaturcara. Jadi di sini adalah fail I / O. memfailkan I / O mempunyai banyak perkara-perkara kecil yang membuat ia rumit, dan sebagainya terdapat sumber-sumber dalam talian, tetapi secara ringkas, anda memanggil terbuka pada fail menamakan dengan jenis tertentu. Jadi yang yang membaca, membaca dan menulis, menulis atau menambah. Anda membaca sebilangan Watak dan anda mencetak mereka, anda akan mendapat Hello! Maksud saya, seperti fail ini telah Hello! Di dalamnya, hendaklah membaca, dan apa yang anda akan kembali adalah rentetan yang mempunyai semua negara lain di array, atau negara lain di fail. Jika anda memanggil membaca sekali lagi, anda berada pada akhir fail, dan supaya anda tidak mendapat apa-apa dan jadi anda akan ditutup. Sekali lagi, ini adalah .close daripada tutup fail, kerana ia akan berada dalam C. Ini adalah lebih atau kurang kerana f adalah perkara, dan anda ingin untuk f untuk menutup. Tetapi fail asas I / O tidak terutamanya rumit. Sekali lagi, jika anda ingin membuka fail, jika anda akan suka membaca garis tertentu, anda boleh keluar dari tertentu garis ini-- ada dibina-in untuk itu. Jika anda lebih suka untuk menulis perkara, anda boleh menulis ini. Jika anda lebih suka untuk menulis individu gigitan, anda boleh menulis mereka. Dan jika anda mahu untuk melelar atas garis fail secara berasingan, seperti yang kita lakukan dalam sekeping dari beberapa minggu yang lalu, anda boleh berbuat demikian kepada. Sekali lagi, kebanyakan objek yang anda hendak ingin dapat untuk melelar iterating sokongan ke atas mereka. Dalam Pythons, fail adalah mungkin perkara yang Saya ingin untuk melelar baris demi baris. Jika ia adalah kamus yang kata-kata dan saya cuba untuk mendapatkan orang-orang individu kata-kata keluar, maka, dalam masa gelung ini, line ia akan menjadi setiap perkataan seterusnya dan ini akan dilaksanakan untuk setiap baris dalam fail sehingga akhir fail. Dan sekali lagi, jika saya dicetak setiap garis, garis datang dengan garis baru, jadi saya menetapkan akhirnya belakang untuk satu perkara yang seperti ini. Kemudian saya mendapatkan kandungan fail saya. Perkara kedua yang beroperasi di beberapa cara seperti senarai, dan dalam beberapa cara sebagai sesuatu yang ketara lebih kuat, adalah kamus, yang benar-benar sejuk untuk digunakan tetapi pada dasarnya hash jadual dalam menyamar. Anda membuat satu dengan menggunakan tepat dua watak, yang menggerunkan jika anda cuba untuk melaksanakan jadual hash untuk set masalah anda, anda tahu sakit banyak yang boleh. Tetapi orang-orang telah melakukan , dan melakukannya dengan baik, bahawa anda tidak perlu bimbang mengenainya lagi. Kemudian anda boleh memasukkan perkara individu. Tables-- Hash atau kamus tidak terutamanya peduli apa yang anda menyimpan di dalamnya. Jadi, jika beberapa entri adalah nombor, dan beberapa entri adalah senarai, jika beberapa entri adalah kamus yang lain, dan beberapa entri adalah rentetan, Python tidak menjaga banyak. Sekali lagi, jika anda pergi ke dalamnya menjangkakan rentetan dan apa yang anda kembali adalah pelbagai, itulah masalah anda. Dan mungkin ia salah sesiapa fikir ia telah meletakkan sesuatu di dalam kamus, mungkin itu adalah anda. Jika itu adalah seseorang lagi, mudah-mudahan mereka berkelakuan baik tentang apa yang yang berlaku dalam kamus dan tidak meninggalkan apa-apa kesulitan untuk anda jatuh ke dalam. Tetapi fungsi standard akan memberikan anda kembali perkara yang berkelakuan baik. Supaya mereka berkata pulangan ini menyokong kamus yang tali, maka segala-galanya yang anda akan untuk keluar dari adalah rentetan. Jika anda melakukan ini dan ia dengan lawatan-lawatan kamu, baik, yang mungkin pada anda. Python tentunya memberikan anda cukup tali untuk menggantung diri anda, jika anda suka. Sekarang kita boleh mencetak individu unsur-unsur ini dan pulangan ini apa yang anda harapkan. Tepat sekali apa yang anda harapkan, saya rasa, adalah frasa yang saya menggunakan banyak, tetapi itu lebih kurang bagaimana Python berfungsi. Jika anda bertanya kepada sesuatu yang tidak ia, Python akan membuang kesilapan dan ia akan berhenti anda daripada apa jua program yang anda berada dalam. Ia benar-benar akan mencetak maklumat lebih daripada itu, ia akan menunjukkan atasmu, IA AKAN menambah baris, dan sebagainya. Dan, sekali lagi, mungkin kita mahu untuk melelar kamus dan mendapati semua barangan di dalamnya. Di sini kita iterating lebih dua perkara pada masa yang sama. Dan dengan itu kita akan buat dengan kunci, nilai, tetapi kemudian mencetak semua ini. Dan jika kita mahu cast-- jika kita benar-benar berlari ini, kita akan mempunyai beberapa masalah kerana pada-- apabila kita pergi kepada Daud; ia tidak boleh add-- jika kita tidak melemparkannya kepada rentetan pertama, kita tidak boleh menambah pelbagai yang tali ke tali. Tetapi jika kita melemparkannya kepada tali, kita mendapatkan sesuatu seperti ini, yang mungkin apa yang kita akan suka membaca. Dan ini adalah ejaan. Kita hanya membaca dalam sesuatu. Oleh itu, kita boleh membaca dalam perkataan individu sebagai baris. Kami memenggal terakhir perkara, supaya kolon tolak 1 Chomp off perkara terakhir yang we-- aksara terakhir rentetan. Kami akan katakan. OK, setiap seorang daripada mereka mendapat dimasukkan ke dalam kamus ini, pemetaan untuk nilai 1. Kami tidak terutamanya mengambil berat tentang yang satu, tetapi ia hanya di sana untuk berkata, oh baik, Perkara ini saya akan dimasukkan ke dalam kamus. Kerana kemudian apa yang kita akan lakukan ialah kami akan berkata, dengan baik, jika ia dalam kamus sama sekali. Sekali lagi, semak ini untuk keahlian terpulang operasi menggunakan yang sama sekali berbeza algoritma daripada ia akan dalam senarai, tetapi kita panggil dengan cara yang sama, yang adalah sebahagian daripada bahawa lapisan Python gula perkara-perkara supaya mereka lebih mudah untuk digunakan. Dan sekali lagi, kita telah melihat perkara seperti ini sebelum ini. Ini pada dasarnya mencari, atau ia betul-betul sintaks yang sama seperti mencari, tetapi beroperasi lebih struktur yang berbeza. Dan kita tidak terutamanya mengambil berat. Jadi mereka adalah perkara yang anda telah diminta untuk melaksanakan untuk ejaan. Pada kadar ini, kita akan mendapat lebih kurang semua psets dilakukan. PENONTON: Supaya pada dasarnya hanya datang kembali sebagai salah dieja jika tidak sepadan sesuatu dalam kamus? ROSS RHEINGANS-YOO: Ya, ya. Dan sebagainya, ini adalah satu penyesuaian masalah menetapkan yang meminta anda untuk melakukan perkara tersebut. PENONTON: Kenapa garis tolak 1 di sana? ROSS RHEINGANS-YOO: Jadi apabila anda iterating atas fail yang meminta oleh garis-garis, garis datang dengan watak baris baru pada akhir kitab itu 1 tolak hanya untuk membeli-belah orang-orang di luar. Dan ini adalah fleksibel terutamanya cara mengindeks ke dalam sesuatu. Jadi jika anda mempunyai rentetan, dan anda ingin, baik saya akan bermula pada watak tiga dan saya akan pergi ke akhir. 3 kolon akan melakukannya untuk anda. Jika anda seperti, saya ingin memulakan di bermula dan pergi ke tolak 1 lalu watak, kolon tolak 1. Dan jika anda mahu untuk pergi dari ketiga untuk tolak pertama, maka anda akan mengatakan 3 tolak 1. Selain itu, jika anda mahu kepada indeks kepada perkara-perkara mengira dari belakang, anda hanya indeks dalam dengan nombor tolak. Dan kerana, di mana C akan meletup atau mungkin memberi makan kepada kamu memori lain yang anda tidak mempunyai akses kepada, mendengar anda boleh mengatakan tolak 1 ertinya lepas tetapi 1 watak dalam rentetan. Modul version-- adalah analog kepada perpustakaan dalam C dan berguna untuk banyak perkara. Banyak perkara yang hendak suka untuk Python, selain mudah manipulasi pembolehubah, anda mahu menyambung ke dalam perpustakaan yang lebih besar dengan yang lebih besar antara muka dan banyak lagi keupayaan untuk berinteraksi dengan bahagian-bahagian lain di dunia. sys adalah salah satu dengan sekumpulan alat yang berguna untuk berinteraksi dengan sistem itu sendiri dan akan mengimportnya seperti sys import. Ada lagi dokumentasi daripada itu, yang anda boleh pergi di sini, atau anda boleh mencari di Google dengan Googling Python sys. Anda menaip masuk. Pautan pertama akan menjadi dokumentasi dalam Python 2, laluan kedua akan menjadi dokumentasi Python 3. Dan jika kita menulis daripada fail yang kelihatan seperti this-- Jika khususnya, kami melihat beroperasi pada hujah baris arahan, seperti yang kita belajar untuk melakukan yang awal dalam kelas ini. Ini tidak sukar. Anda boleh keluar argv, yang merupakan salah satu daripada perkara-perkara yang dilaksanakan oleh sys. Ia tidak terbina dalam untuk pakej asas, tetapi sekali lagi, anda boleh melanjutkannya dengan mengimport bahawa fungsi dari sys. Anda akan memanggilnya sys. apa-apa sahajalah. Di sini ada argv. Ada sebenarnya tidak argc dalam sys, kerana anda boleh mendapatkannya dengan mudah dengan menghubungi len. Kami kemudian dicetak yang keluar, maka kita berlari echo-args.py terminal kami. Kita kembali pelbagai, yang hujah pertama ini. Sekali lagi, ini adalah argv 0, yang merupakan menamakan benda itu yang mendapat dipanggil. Jika kita memanggilnya dengan tambahan hujah, kita akan kembali orang-orang. Ini adalah salah satu cara untuk mendapatkan hujah baris arahan. Jika anda mahu bendera di mana anda menghidupkan perkara tertentu pada atau mengatasi kegagalan tertentu, argparse adalah rakan anda. Dan sekali lagi anda mencari dalam talian yang di python argparse di Google. Terdapat beberapa utiliti modul yang anda mendapati diri anda menggunakan dan sekali lagi, jika anda menghabiskan masa apa-apa bahasa ini mengimport jsons untuk membaca dalam dan di luar json fail, bukan yang rumit. Anda membuka fail, anda dipanggil json.load dalam fail itu dan anda mendapat kembali apa-apa. Apakah perkara itu? Ia adalah satu objek JSON. Di mana json yang mempunyai array, Python mempunyai tatasusunan. Di mana json yang mempunyai array bersekutu, Python kamus, tali, dan nombor, dan sebagainya. Anda ingin membuang yang keluar, anda membuka fail baru, anda memanggil pembuangan, dan beban dan tempat pembuangan sampah ke masuk dan keluar dari tali. Begitu juga, jeruk mendapat dipanggil pada asasnya antara muka yang sama. Ia adalah sedikit lebih berguna jika anda lambakan objek Python. Jadi, jika anda pernah mahu untuk menyelamatkan versi status semasa pemboleh ubah untuk masa depan yang menjalankan program anda, jeruk adalah Python perpustakaan untuk melakukannya. Jika anda mempunyai apa-apa jenis pembolehubah yang boleh ditulis di dalam kata-kata seperti dan watak-watak dan bytes-- seperti kamus ini, kita boleh menulis, maka kami boleh tulis jawatan sebagai seperti objek JSON, yang literal watak-watak. Dan kemudian ia akan menjadi sangat mudah untuk manusia untuk membukanya up-- membuka dan membacanya. Jika kita tidak terutamanya mengambil berat tentang manusia membacanya, kita boleh pakej yang lebih cekap ke dalam bentuk yang kemudiannya boleh terpadat atau yang boleh kemudian melambung. Dan ini akan menjimatkan 80% daripada ruang yang objek anda mungkin mengambil jika anda menulis mereka keluar tulisan tangan. Anda memanggil jeruk banyak yang sama way-- pembuangan, beban, dan kemudian anda mendapatkan perkara yang anda kembali. Jadi, jika anda menulis sangat program Python pendek yang mahu menyimpan negeri, dan kemudian membaca mereka kembali kemudian, perkara seperti ini adalah rakan anda. Bahawa anda boleh sangat mudah membuang mereka sebagai json. Kebanyakan objek Python boleh membuang keluar json yang jika ada apa-apa harapan bahawa struktur mereka boleh diwakili dengan cara itu. Ini hanya sebahagian kecil daripada bilangan modul yang berguna. Jadi sys, os, multiprocessing, adalah semacam workhorses asas untuk perkara-perkara kita perlu berinteraksi dengan os sistem fail., seperti os.isfile, os.isdirectory, os.makefile, ini adalah rakan-rakan. Jika anda ingin berinteraksi dengan jenis fail tertentu, json, jeruk, csv. Jika anda ingin berinteraksi dengan web muka surat, yang urllib untuk mendapatkan http halaman. bs4-- BeautifulSoup-- ia adalah satu penghurai yang menarik untuk html. Anda berjalan pada satu html dan anda mendapatkan objek pelbagai bersarang ini sekarang, yang anda boleh merentasi lebih lookin, dengan seperti hanya mencari jika, adalah, dalam, yang adalah hebat. Ada sekumpulan pakej untuk running-- untuk berbuat terutamanya perkara Mathy. Jadi jika anda mahu untuk membiak, terbalikkan, mengubah matriks, numpy digunakan oleh orang-orang di seluruh dunia untuk itu. scipy adalah lebih berguna alat ke arah itu. pembelajaran mesin sklearn--, pemprosesan bahasa semula jadi, super barangan berguna, mendapat dilaksanakan dalam Python sepanjang masa. Dan sekali lagi, mengambil sedikit lebih lama untuk write-- maaf, mengambil masa lebih panjang untuk menjalankan, tetapi alasan bahawa jurutera sebenar cenderung penggunaan Python adalah kerana anda cenderung untuk menjadi disekat pada anda menulis kod, dan bukan daripada komputer anda berjalan kod. Jadi jika anda akan menulis Program yang banyak orang lain akan menggunakan selama-lamanya, seperti Linux, anda mungkin menulis dalam C. Sekiranya kamu akan menulis enjin pengiraan, anda mungkin menulis dalam Python jika anda diperlukan untuk mengubahnya setiap beberapa bulan. Sesetengah orang akan menulis dalam C kerana mereka seperti itu. Oleh itu, kita telah lihat sys import sebagai satu cara untuk mendapatkan perkara yang untuk mendapatkan modul ke dalam program anda. Anda juga boleh mengimport sebagai nama panggilan, jika anda suka. Sekali lagi multiprocessing adalah sakit untuk menaip setiap masa, jadi mengimport sebagai mp dan kemudian bila-bila masa anda menggunakannya dalam program ini, anda akan berkata mp.process, atau golongan berada. Jika anda ingin import hanya satu perkara yang tunggal, supaya urllib mempunyai perkara yang dipanggil permintaan, jadi anda hanya boleh mengimport itu. Selepas itu, anda tidak akan sembah sebagai urllib.request, tetapi hanya sebagai permintaan dengan sendirinya. Dan anda boleh mengimport semua dari modul jika anda suka. Ini kadang-kadang tidak idea-- yang baik ini bukan idea yang baik biasanya, sebenarnya. Kerana anda very-- kerana jika apa-apa dalam modul yang mempunyai nama yang anda mahu menggunakan tempat lain dalam program anda, anda tidak boleh. Dan ia tidak sentiasa jelas yang itu berlaku. Dalam usaha untuk memastikan bahawa apa yang anda lakukan adalah selamat, anda perlu membuka modul dan melihat semua daripada nama-nama yang berakhir di dalam there-- semua fungsi, semua pembolehubah yang hidup di dalam modul itu, kerana anda membawa semua mereka ke dalam ruang nama tempatan anda. Jadi orang-orang melakukan ini. Ia biasanya disyorkan bahawa anda tidak melakukan ini. Tetapi orang melakukan ini semua masa kerana mereka malas dan tidak mahu menaip mp. apa-apa, sebelum ini. Semua ini bercakap tentang modul membawa saya sekitar untuk ceramah pendek bagaimana anda mereka bentuk program dalam Python. Langkah pertama adalah untuk menyemak untuk melihat jika orang lain telah melakukan perkara itu, atau dilakukan 90% daripada perkara itu. Kemungkinan mereka mungkin mempunyai, dan anda harus pergi mendapatkan perkara mereka dan menjalankan itu. Atau tulis pembungkus di sekitarnya untuk menyesuaikannya dengan tujuan anda. Ia hanya selepas itu mempunyai gagal bahawa anda akan kemudian pergi pada dan write-- mula berfikir tentang bagaimana anda akan meletakkan perkara ini bersama-sama. Ada banyak barangan di luar sana, dan itulah salah satu yang paling berguna perkara tentang Python. Seperti bahasa adalah elegan, bahasa adalah mudah untuk digunakan, tetapi juga kerana ia begitu elegan dan mudah untuk digunakan, orang telah menggunakannya untuk panjang masa dan ada banyak perkara di luar sana yang anda boleh memanfaatkan untuk kegunaan anda sendiri. Jadi peraturan terakhir Python adalah, seseorang lain telah mungkin ditulis modul untuk itu, orang lain telah pun mungkin ditulis perpustakaan untuk itu. Sebelum anda cuba untuk melakukan perkara yang sama untuk melihat jika ia telah dilaksanakan. Ia bukan yang keras. Semua modul yang saya meletakkan sebelum ini, dengan mungkin satu pengecualian, datang pra-dipasang di setiap pemasangan Python standard. Dan sebagainya dengan panggilan untuk mengimport apa sahaja, anda mempunyai semua fungsi yang di hujung jari anda. Bermula untuk mengakhiri ini bercakap, terdapat beberapa perkara bahawa saya telah ditinggalkan sebagai kotak hitam dan jenis dipoles begitu saja, dan ada putih Beberapa terletak bahawa saya telah diberitahu bahawa demi kejujuran, Saya akan sekurang-kurangnya mata di di sini, walaupun saya tidak akan pergi super jauh ke dalam semua daripada mereka dan penjelasan teknikal mereka. Banyak perkara-perkara bahawa saya telah dipanggil sihir adalah apa yang orang lain akan memanggil pengaturcaraan berorientasikan objek. Jadi terdapat banyak things-- jadi pembolehubah seringkali tidak bytes mudah duduk di, memori, tetapi adalah sangat rumit objek yang mempunyai dalaman negeri tentang fungsi dan banyak pembolehubah tersembunyi, banyak fungsi tersembunyi, yang membolehkan anda menghidupkan mereka ke dalam tali, yang membolehkan anda melelar atas mereka. Dan jika anda writing-- dan alasan bahawa mereka mempunyai semua fungsi ini kaya adalah kerana dan kaum arkitek daripada language-- telah pergi melalui dan bagi setiap standard objek, dimasukkan ke dalam fungsi yang untuk mengatakan ini adalah bagaimana ini bagaimana ini akan beroperasi jika seseorang mahu untuk melelar atasnya. Jadi semuanya bahawa seseorang mungkin mungkin mahu untuk melelar, telah logik ditulis dalam manual pada bagaimana anda sepatutnya melelar atas objek itu. Segala sesuatu yang anda mungkin akan mahu dibuang ke dalam tali telah logik bertulis. Ini adalah fungsi yang anda memanggil jika anda mahu untuk membuang ini kepada rentetan. Inilah sebabnya mengapa anda boleh memanggil len kepada perkara-perkara, ini sebabnya mengapa anda boleh memanggil dalam, ini adalah mengapa anda boleh menghubungi jika dalam pada segala-galanya yang anda akan mahu, kerana mereka semua yang dibawa dengan mereka, pengetahuan teknikal untuk berbuat demikian. Ini adalah sesuatu yang saya super tidak akan pergi ke dalam. Tetapi bagi perkara dalam senarai adalah secara halus berbeza daripada gaya C untuk gelung, dan anda boleh membaca semua tentang bahawa pada internet jika anda berminat. Terdapat bahagian yang gelap kepada semua itu, yang saya nyatakan, jadi ada dua perkara. Yang pertama adalah bahawa objek ini berorientasikan pengaturcaraan menambah banyak overhead kepada perkara-perkara rawak, jadi anda menamatkan dengan menggunakan memori banyak lagi; anda akhirnya menggunakan lebih sedikit masa daripada anda sebaliknya. The other-- tetapi lebih banyak berbahaya sisi gelap ini Iaitu, jika perkara yang hanya bertindak seperti yang anda mahu mereka tanpa anda perlu berfikir super keras sama ada ini harus int atau sama ada perlu ada terapung, ia mungkin bahawa di sini anda menghasilkan int tetapi di sini anda berfikir tetapi mereka akan always-- maaf, ia mungkin bahawa di sini anda menghasilkan apungan, tetapi apabila anda sampai ke bahagian kedua program anda, anda berfikir, oh baik, tetapi mereka akan sentiasa lulus saya int. Dan jika tidak, ia mungkin yang desak di suatu tempat, jika anda cuba untuk menggunakannya untuk indeks ke dalam pelbagai, atau golongan berada. Jadi salah satu sebenar perkara yang berguna tentang C adalah ia memaksa anda untuk berfikir yang benar-benar keras sebelum anda membuat any-- sebelum anda membawa apa-apa ubah wujud, seperti apa yang adalah jenis pembolehubah ini. Dan ia akan mempunyai jenis itu sepanjang masa. Ini tidak benar Python, dan sebenarnya, anda can-- jika anda hanya jenis akan oleh telinga, dan anda membuat beberapa keputusan sehala di satu tempat, dan beberapa keputusan salah cara di tempat yang lain tanpa meletakkan barangan cukup di belakang tabir di tempat yang lain untuk menangkap perkara yang betul, anda boleh mendapatkan beberapa kesilapan yang sangat pelik. Dan program ini boleh terus berjalan untuk masa yang sangat lama, kerana ia melakukan banyak kerja untuk berkata, dengan baik Perkara ini boleh beroperasi dengan cara ini, jadi saya akan berjalan dengan cara itu. Dan sebenarnya, hakikat bahawa ia menolak mengemukakan melalui banyak kesilapan kecil bermakna, kerap apabila kesilapan sebenarnya tidak baik dan anda benar-benar ingin memperbaikinya, ia berakhir batu away-- program berakhir berhenti batu dari masa anda mempunyai ralat anda. Dan supaya satu perkara yang kami ingin program-program yang perlu dilakukan, sometimes-- satu perkara yang kami ingin program yang perlu dilakukan apabila kita debugging adalah gagal dengan kuat dan gagal sangat cepat apabila sesuatu berlaku. Python adalah sangat buruk pada itu. Python adalah sangat baik kerana tidak gagal dan bergolek ke hadapan melalui perkara yang tidak dijangka. Jadi ini adalah berguna untuk apabila anda menulis program kecil. Apabila anda mendapat rumit bug ia kadang-kadang mengambil masa yang lama untuk mengusik mereka keluar. Jadi ada sisi gelap kepada semua ini, seperti ia hanya berfungsi. Ia hanya berfungsi seperti yang anda harapkan kepada. Kecuali apabila ia tidak, anda berakhir di tempat yang sama sekali berbeza dan cuba untuk memikirkan di mana ia adalah bahawa anda tidak kena. Kutipan sampah is-- supaya satu perkara yang anda akan notis ialah mana-mana perkara-perkara ini yang Saya telah dibawa masuk ke dalam existence-- tatasusunan ini, kamus ini, ini objek, ini files-- tidak pernah dibebaskan. Tidak ada panggilan untuk di mana-mana ceramah ini. Dan yang di atas C-sampingan, kerana kita tidak pernah masuk ke dalam perkara-perkara. Tetapi dalam Python-sebelah, tidak ada yang percuma. Perkara mendapatkan secara automatik dibebaskan apabila Python difikirkan anda tidak melihat mereka. Ia benar-benar baik tidak membebaskan perkara-perkara yang anda mungkin masih mungkin dapat melihat, tetapi ini bermakna bahawa jika anda berada akan memperuntukkan perkara ini besar, dan anda seperti, oh Saya selesai dengan sekarang, ia sukar untuk memberitahu Python bahawa anda selesai dengan sekarang. Kadang-kadang anda boleh menetapkan pembolehubah yang menjadi tiada, dan kemudian berharap yang akhirnya pengumpul sampah datang melalui dan membersihkan ia keluar. Tetapi sekali lagi, anda tidak mempunyai kawalan ke atas itu. Dan salah satu daripada sebab-sebab yang digunakan orang C untuk benar-benar Prestasi perkara yang kritikal, adalah keupayaan untuk benar-benar tahu apabila memori diperuntukkan dan apabila ia dibebaskan, dan mempunyai banyak kawalan ke atas dan berkata: Saya tidak menggunakan memori lebih daripada yang saya perlukan. Yang merupakan sesuatu yang Python tidak begitu besar di. PENONTON: Boleh saya tanya satu soalan? Apa yang kamu maksudkan dengan gagal keras? ROSS RHEINGANS-YOO: Jadi, jika sesuatu yang berlaku salah dan anda berada dalam debugging mod, anda akan seringkali mahu program anda untuk memberitahu anda di mana sebenarnya ia pergi salah, dan tidak hanya diam-diam berhenti berjalan. Tetapi anda akan benar-benar untuk mencetak keluar pelbagai maklumat tentang seperti di sini adalah ini. Perkara ini berlaku Jika anda mencetak yang wen-- jika anda menjalankan server-- web PENONTON: [didengar] ROSS RHEINGANS-YOO: Ya, jika anda menjalankan pelayan web, ia kadang-kadang tidak baik jika anda sentiasa membuang kesilapan, dan anda berkata, baik yang tidak berjaya. Saya akan berhenti. Saya hanya akan mengabaikan dan menyimpan berlaku. Kerana anda boleh mendapatkan dalam beratus-ratus kesilapan ini dan tidak melihat mereka. Ia sudah tentu akan berguna untuk tujuan debugging jika setiap kali pelayan web anda membuat kesilapan, anda mempunyai rekod tahan lama daripada itu. Mungkin anda juga mahu rancangan itu untuk berhenti, supaya rekod-rekod tidak mendapatkan dikebumikan di bawah sesuatu. Tetapi sekali lagi, bahawa dalam mod debugging. Selalunya dalam mod pengeluaran, Dunia ini adalah sedikit berbeza. Dan dalam skrip kecil yang saya berjalan, di mana perkara yang saya tersebut untuk melakukan mungkin hanya sedikit off dari apa yang saya mahu ia lakukan, kemudian semacam menolak melalui kesilapan adalah sesuatu yang anda mungkin mahu. Dan dalam kes-kes, sudah tentu Python benar-benar mendapat bermula itu. Perkara terakhir yang saya tidak bercakap dalam this-- bahawa saya tidak bercakap tentang tetapi boleh menjadi benar-benar menyebalkan pertama masa anda mempunyai salah satu kesilapan-kesilapan ini, dan yang kedua dan ketiga dan keempat masa anda mempunyai satu kesilapan-kesilapan ini. Python, saya nyatakan bahawa ia menggunakan ruang putih untuk memberitahu anda tahap lekukan apa dan apa blok fungsi anda berada dalam, ia merawat tab dan ruang berbeza. Jadi, jika anda lebih empat tab, dan kemudian baris berikutnya mempunyai empat ruang, walaupun mereka muncul sebagai Jumlah yang sama dalam editor anda, Python tidak melayan mereka yang sama. Malah, Python merawat tab dan ruang seperti minyak dan air. Mereka adalah perkara-perkara hanya berbeza. Tiada tertentu panjang yang tab adalah, jadi ia tidak seperti tab bersamaan 8 ruang, dan supaya anda akan mendapat di sekitarnya Jalan itu. Seperti, apabila ia berkata, apa yang tahap ruang putih saya di, ia sebenarnya sedang mencari corak ruang dan tab. Dan sebagainya, cara yang terbaik untuk berurusan dengan ini adalah untuk sentiasa menggunakan ruang sepanjang masa. Dan sebenarnya, dalam Cloud9 IDE dan IDE CS50, memasukkan kekunci Tab anda empat ruang di sebaliknya daripada tab, yang super berguna. Walaupun sekali lagi, jika anda menulis Python program dengan tab yang akan menjadi baik, ia hanya jika seseorang masuk dan cuba untuk menambah satu baris untuk program anda yang mempunyai empat ruang untuk setiap tab, ia akan pecah. Dan ia akan memecahkan dengan cara yang yang benar-benar tidak kelihatan. Walaupun ralat sebenar mesej bahawa ia melemparkan mempunyai kaitan dengan yang baru mengengsot tidak dijangka sini, or-- jika ia bercakap tentang inden dan ia kelihatan seperti ia salah, ia mungkin kerana ada masalah tab-ruang. Mereka masih menyebalkan untuk debug. Seluruh terbesar di ceramah ini, yang saya tidak lakukan dapat kerana ia benar-benar yang, topik halus rumit, dan tidak perlu melakukan apa-apa satu perkara yang kita lakukan setakat ini, adalah konsep yang dipanggil tuples. Mereka berada di sana sama seperti tatasusunan bahawa anda tidak boleh mengubah suai. Mereka dapat digunakan di seluruh tempat kerana mereka adalah berguna untuk banyak perkara yang tatasusunan tidak berguna untuk. Tetapi jika anda ingin membuat array, dan kemudian berjanji jurubahasa yang anda tidak pernah akan mahu untuk mengubah suai yang thing-- sebenarnya, jika anda mahu untuk mengubah suai, anda akan membuat yang baru dengan yang baru nilai dalam kitab itu mereka adalah tuples. Daripada menghasilkan mereka dengan tanda kurung siku, anda menghasilkan mereka dengan kurungan bulat. Mengapa anda akan menggunakan perkara-perkara ini, adalah sedikit soalan. . Satu-satunya perkara yang saya akan kata tentang yang anda boleh menggunakan tuples sebagai indeks kamus. Anda tidak boleh menggunakan tatasusunan sebagai indeks kamus. Dan mengapa, sekali lagi, teknikal dan Saya tidak akan lari ke dalamnya. The pset bahawa saya telah tidak disentuh di dalam ceramah ini adalah pset6. Jadi di sini adalah bagaimana anda 'd melaksanakan a-- sini bagaimana anda akan melaksanakan pset6 dalam Python. Mengingat Python kitaran reka bentuk, perkara pertama yang anda lakukan apabila anda program bertulis adalah daftar untuk melihat jika seseorang selesai ia sudah. Malah, jika anda mahu untuk serve-- Apache 50 tidak kira-kira ini, kecuali ia tidak datang standard yang dipasang pada mesin Linux. Python tidak, dan Python pelayan http mudah tidak juga. Jika anda pernah pada mesin Linux, atau di luar Cloud9 IDE CS50 dan anda ingin untuk berkhidmat semasa ini direktori ke port tertentu, python-m SimpleHTTPServer port servis yang. Anda juga boleh mengimport pelayan http mudah dan ia mendapat banyak fungsi jika anda mahu untuk menyesuaikan, atau mengubahnya, atau dikendalikan kitab itu memanfaatkan kepada menjalankan perkhidmatan pelayan anda sendiri. Jadi itulah Python secara ringkas. Dan ini telah menjadi CS50. Terima kasih.