1 00:00:00,000 --> 00:00:05,426 2 00:00:05,426 --> 00:00:06,800 ROSS RHEINGANS-YOO: Hi, aku Ross. 3 00:00:06,800 --> 00:00:08,570 Dan ini adalah seminar CS50. 4 00:00:08,570 --> 00:00:12,100 Ini akan membawa Anda dari pemrograman di C untuk pemrograman Python. 5 00:00:12,100 --> 00:00:15,120 >> Python adalah bahasa scripting. 6 00:00:15,120 --> 00:00:17,870 Ini sebagian besar seperti C dalam sintaks, meskipun beberapa 7 00:00:17,870 --> 00:00:20,390 rincian teknis bagaimana sintaks yang dijalankan 8 00:00:20,390 --> 00:00:22,240 yang sedikit berbeda. 9 00:00:22,240 --> 00:00:24,780 Hal ini kurang kuat daripada C dalam beberapa cara. 10 00:00:24,780 --> 00:00:28,130 Hal ini kurang ekspresif untuk di mana tepatnya di komputer Anda 11 00:00:28,130 --> 00:00:30,030 memori akan ditata, bagaimana itu akan ditata, 12 00:00:30,030 --> 00:00:32,030 ketika mendapat kebebasan, dan orang-orang macam hal. 13 00:00:32,030 --> 00:00:36,150 >> Ini lebih berguna daripada C dalam beberapa hal, karena lebih mudah untuk program di. 14 00:00:36,150 --> 00:00:39,920 Bahasa ini, untuk beberapa orang, lebih intuitif. 15 00:00:39,920 --> 00:00:44,820 Dan benar-benar, tujuannya adalah untuk itu menjadi lebih cepat untuk program 16 00:00:44,820 --> 00:00:46,490 dan berpotensi lebih lambat untuk mengeksekusi. 17 00:00:46,490 --> 00:00:48,198 >> Sekarang jika Anda berpikir tentang jumlah waktu 18 00:00:48,198 --> 00:00:50,514 Anda dihabiskan untuk terakhir Anda Masalah mengatur penulisan 19 00:00:50,514 --> 00:00:52,430 kode Anda terhadap jumlah waktu yang Anda habiskan 20 00:00:52,430 --> 00:00:55,310 pada masalah terakhir Anda mengatur mengeksekusi kode Anda, 21 00:00:55,310 --> 00:00:58,300 Anda akan membayangkan bahwa bahasa yang dua kali lebih cepat untuk menulis, 22 00:00:58,300 --> 00:01:02,170 dan dua kali lebih lambat untuk mengeksekusi, mungkin menjadi perbaikan atas C dalam beberapa cara. 23 00:01:02,170 --> 00:01:05,730 Tentu saja ketika Anda mencoba untuk menulis program kecil untuk melakukan hal-hal kecil, 24 00:01:05,730 --> 00:01:08,520 Python merupakan bahasa yang berguna pilihan. 25 00:01:08,520 --> 00:01:10,620 >> Dan pada akhir ini seminar, saya harap Anda akan 26 00:01:10,620 --> 00:01:12,950 dapat membuat pilihan dalam proyek-proyek masa depan 27 00:01:12,950 --> 00:01:17,710 tentang bahasa yang benar untuk menggunakan, tidak ide 28 00:01:17,710 --> 00:01:21,405 yang satu bahasa lebih memperbaiki sepanjang waktu. 29 00:01:21,405 --> 00:01:23,030 Beberapa hal tentang apa seminar ini adalah. 30 00:01:23,030 --> 00:01:25,910 Seminar ini tidak dimaksudkan untuk mengajarkan Python dari awal. 31 00:01:25,910 --> 00:01:28,310 Python sangat mirip ke C, dan aku mengasumsikan 32 00:01:28,310 --> 00:01:34,056 bahwa Anda seorang mahasiswa CS50, atau seseorang dengan keakraban yang sama dengan C. 33 00:01:34,056 --> 00:01:36,700 >> Jika Anda CS50 mahasiswa sekitar masalah set 6, 34 00:01:36,700 --> 00:01:38,866 sehingga Anda sudah melihat banyak hal di C, saya akan memberikan 35 00:01:38,866 --> 00:01:40,740 perbedaan utama, dan beberapa hal 36 00:01:40,740 --> 00:01:42,840 yang membuat Python yang berbeda dan khusus dan berguna, 37 00:01:42,840 --> 00:01:45,256 tapi aku tidak akan pergi untuk apa bahasa pemrograman 38 00:01:45,256 --> 00:01:46,920 dan bagaimana menulis program. 39 00:01:46,920 --> 00:01:49,820 Namun, seminar ini akan mengajarkan Anda untuk menulis program Python 40 00:01:49,820 --> 00:01:52,310 jika Anda salah satu dari mereka beberapa kelompok. 41 00:01:52,310 --> 00:01:54,820 Sekali lagi kita akan melihat bagaimana Anda akan menerapkan psets-- 42 00:01:54,820 --> 00:01:57,550 yang harus 1-6 di Python-- dan memberikan petunjuk 43 00:01:57,550 --> 00:02:00,322 dokumentasi resmi untuk referensi di masa mendatang. 44 00:02:00,322 --> 00:02:03,030 Hal lain yang penting tentang bagaimana pembicaraan ini ditugaskan, 45 00:02:03,030 --> 00:02:05,360 video ini akan online, courtesy of CS50, 46 00:02:05,360 --> 00:02:07,550 sehingga Anda tidak harus merasa seperti Anda perlu mengambil catatan. 47 00:02:07,550 --> 00:02:11,180 Anda selalu bisa kembali dan melihat di kemudian sebagai referensi. 48 00:02:11,180 --> 00:02:13,340 Selain itu slide tersedia sekarang 49 00:02:13,340 --> 00:02:16,480 di situs ini, yang harus membawa Anda melakukan doc Google. 50 00:02:16,480 --> 00:02:21,010 Ini adalah versi yang sedikit ringkasan dari apa yang saya menunjukkan di layar. 51 00:02:21,010 --> 00:02:24,850 >> Satu peringatan-hati sebelum kita melompat di, Python 3 52 00:02:24,850 --> 00:02:26,700 adalah bahasa yang berbeda dari Python 2. 53 00:02:26,700 --> 00:02:30,020 Mereka melihat banyak sama; ada perbedaan teknis sangat sedikit 54 00:02:30,020 --> 00:02:32,530 yang akan menyebabkan program ditulis dengan Python 2 55 00:02:32,530 --> 00:02:37,140 tidak dapat dieksekusi di Python 3 lingkungan. 56 00:02:37,140 --> 00:02:41,969 >> The CS50 alat dilengkapi dengan Python, secara default menggunakan python 2. 57 00:02:41,969 --> 00:02:44,010 Anda dapat memeriksa ini dengan mengetik di baris perintah Anda 58 00:02:44,010 --> 00:02:51,310 python version, yang harus output 2.7.6 pada alat saat ini. 59 00:02:51,310 --> 00:02:53,580 Coba Python 3, yang tidak bekerja di alat, 60 00:02:53,580 --> 00:02:58,500 jika default Python untuk 2.X.Y, baik pada alat atau pada mesin Anda sendiri. 61 00:02:58,500 --> 00:03:03,730 Anda harus mengganti Python 3 kapan saja dalam pembicaraan ini yang saya tulis Python. 62 00:03:03,730 --> 00:03:05,760 Jika mesin Anda berjalan 2 secara default, jenis 63 00:03:05,760 --> 00:03:09,770 Python 3 agar dapat benar-benar ikuti bersama dan melaksanakan hal-hal ini. 64 00:03:09,770 --> 00:03:12,280 >> Selain itu, saya akan mengarahkan Anda di sumber resmi sekarang. 65 00:03:12,280 --> 00:03:16,082 docs.python.org/3--~~V hati bahwa itu adalah 3 dan tidak 2-- 66 00:03:16,082 --> 00:03:17,030 memiliki referensi yang berguna. 67 00:03:17,030 --> 00:03:19,280 Tutorial akan membawa Anda melalui banyak hal yang sama 68 00:03:19,280 --> 00:03:21,460 yang saya lakukan sekarang, kecuali dalam bentuk teks. 69 00:03:21,460 --> 00:03:23,725 Referensi berguna sebagai referensi untuk bahasa, 70 00:03:23,725 --> 00:03:26,100 dan Perpustakaan Standard memberikan Anda beberapa ekstensi 71 00:03:26,100 --> 00:03:27,770 dengan fungsi tambahan. 72 00:03:27,770 --> 00:03:31,300 >> Jadi program Python pertama. 73 00:03:31,300 --> 00:03:34,410 Di sebelah kiri kita memiliki standar C, di sebelah kanan, kita memiliki Python. 74 00:03:34,410 --> 00:03:36,780 Anda mungkin telah diakui masalah ini, itu 75 00:03:36,780 --> 00:03:40,760 salah satu masalah pertama set di CS50, dan ini 76 00:03:40,760 --> 00:03:42,677 mengatasinya dengan menggunakan solusi yang sama. 77 00:03:42,677 --> 00:03:45,010 Sekarang, alasan bahwa kami melihat sisi ini berdampingan 78 00:03:45,010 --> 00:03:46,830 begitu kita dapat melihat perbedaan sintaksis. 79 00:03:46,830 --> 00:03:49,580 Salah satu gajah di dalam ruangan Anda mungkin telah memperhatikan hak 80 00:03:49,580 --> 00:03:56,350 dari kelelawar, adalah bahwa Python tidak memiliki membungkus fungsi utama di sekitar kode. 81 00:03:56,350 --> 00:03:59,170 Jadi di C, Anda menulis sekelompok file, Anda menghubungkan mereka bersama-sama, 82 00:03:59,170 --> 00:04:02,590 dan program mulai dijalankan di hal ini disebut int main. 83 00:04:02,590 --> 00:04:04,930 >> Dalam Python, Anda menulis file yang, mengeksekusi file tersebut, 84 00:04:04,930 --> 00:04:07,882 program mulai dijalankan di bagian atas file. 85 00:04:07,882 --> 00:04:09,590 Jadi itu akan mulai di bagian atas file 86 00:04:09,590 --> 00:04:11,280 turun sampai menemukan sesuatu yang lain. 87 00:04:11,280 --> 00:04:14,440 Jika menemukan definisi fungsi, itu tidak akan benar-benar melaksanakan kode itu, 88 00:04:14,440 --> 00:04:15,940 itu hanya akan mendefinisikan fungsi. 89 00:04:15,940 --> 00:04:18,459 Tapi di sini, ketika pertama Program ini n sama dengan 10, 90 00:04:18,459 --> 00:04:21,273 hal pertama yang program ini akan lakukan adalah mengambil nilai ini dari 10 91 00:04:21,273 --> 00:04:24,120 dan mengaturnya ke dalam variabel yang disebut n. 92 00:04:24,120 --> 00:04:27,690 >> Berbicara tentang garis, salah satu lainnya things-- sorry-- ini 93 00:04:27,690 --> 00:04:31,040 berarti bahwa program C, Anda akan menulis mereka, 94 00:04:31,040 --> 00:04:34,899 Anda akan membuat mereka, yang akan memanggil beberapa perintah dentang, 95 00:04:34,899 --> 00:04:36,690 dan kemudian Anda akan menjalankan dihasilkan dieksekusi. 96 00:04:36,690 --> 00:04:41,030 Program Python, Anda menjalankan teks file-- mario.py ini mungkin 97 00:04:41,030 --> 00:04:44,900 menjadi file ini bahwa saya hanya menunjukkan you-- Anda akan menjalankan file yang 98 00:04:44,900 --> 00:04:47,450 dan Anda akan mengeksekusi, dan isi itu 99 00:04:47,450 --> 00:04:50,390 akan dilaksanakan oleh interpreter Python. 100 00:04:50,390 --> 00:04:52,470 Anda dapat melakukan ini di IDE Anda. 101 00:04:52,470 --> 00:05:02,260 >> Jadi jika saya memiliki file Halo, yang hanya memiliki isi ini. 102 00:05:02,260 --> 00:05:04,840 Ini sebenarnya Python 2, tidak Python 3, jadi jangan 103 00:05:04,840 --> 00:05:06,600 khawatir tentang sintaks untuk saat ini. 104 00:05:06,600 --> 00:05:14,230 Tapi aku akan menjalankan Python, pada hello.py, dan berjalan. 105 00:05:14,230 --> 00:05:18,890 >> Cara lain yang dapat saya gunakan Python yang Aku tidak akan berurusan dengan begitu banyak dalam pembicaraan ini, 106 00:05:18,890 --> 00:05:21,840 adalah jika saya ketik Python, itu tetes saya ke sebuah lingkungan di mana 107 00:05:21,840 --> 00:05:24,370 Aku bisa makan itu baris demi baris Python. 108 00:05:24,370 --> 00:05:31,260 Jadi di sini, jika saya ketik ruang cetak 'halo, dunia'. 109 00:05:31,260 --> 00:05:32,360 Ketik masuk. 110 00:05:32,360 --> 00:05:37,430 Ini akan meludah saya bahwa kembali hasil garis individu segera. 111 00:05:37,430 --> 00:05:38,470 >> Ini mungkin berguna. 112 00:05:38,470 --> 00:05:40,700 Dalam pembicaraan ini saya akan melakukan hal-hal pada slide. 113 00:05:40,700 --> 00:05:43,940 Dan sehingga Anda akan dapat mengikuti bersama baik di sini, atau dengan menulis 114 00:05:43,940 --> 00:05:45,725 file yang sebenarnya dan kemudian mengeksekusi mereka. 115 00:05:45,725 --> 00:05:48,340 116 00:05:48,340 --> 00:05:50,995 >> Tapi, akan kembali ke ini kode, hal lain 117 00:05:50,995 --> 00:05:53,230 bahwa Anda mungkin memiliki noticed-- baik, ada 118 00:05:53,230 --> 00:05:55,980 dua hal yang Anda mungkin melihat tentang blok ini. 119 00:05:55,980 --> 00:05:59,280 Pertama, agak lebih biasa, adalah bahwa Python tidak memiliki akhiran titik koma. 120 00:05:59,280 --> 00:06:02,630 >> Titik koma adalah opsional di mana-mana dan tidak berbahaya di mana-mana. 121 00:06:02,630 --> 00:06:03,722 Anda dapat menambahkan mereka. 122 00:06:03,722 --> 00:06:06,430 Ini mungkin membuat orang-orang yang menulis Python untuk kekek hidup pada Anda 123 00:06:06,430 --> 00:06:08,860 di belakang punggung Anda, karena mereka tidak perlu. 124 00:06:08,860 --> 00:06:13,497 Mereka sering tanda yang diadakan selama dari C. Para desainer dari bahasa 125 00:06:13,497 --> 00:06:16,580 merasa bahwa itu adalah lebih jelas dengan cara ini dan bahwa itu tidak perlu untuk menyatakan 126 00:06:16,580 --> 00:06:18,700 setiap kali Anda mengakhiri garis. 127 00:06:18,700 --> 00:06:21,799 >> Satu hal yang aneh tentang n ini adalah tidak memiliki jenis yang terpasang. 128 00:06:21,799 --> 00:06:24,590 Salah satu bagian keajaiban Python-- dan aku akan menyebutnya sihir, 129 00:06:24,590 --> 00:06:26,381 tetapi ada sangat alasan teknis mengapa 130 00:06:26,381 --> 00:06:28,560 works-- salah satu potongan keajaiban Python 131 00:06:28,560 --> 00:06:32,700 adalah bahwa variabel dapat memperluas atau menyusut berisi data apa pun 132 00:06:32,700 --> 00:06:34,530 jenis Anda akan ingin mereka. 133 00:06:34,530 --> 00:06:35,580 >> Jadi ini adalah 10. 134 00:06:35,580 --> 00:06:40,060 Jika kemudian turun saya ditugaskan untuk ini n 0,5, itu akan mengambil 0,5. 135 00:06:40,060 --> 00:06:43,770 Tidak peduli bahwa itu adalah int sini dan mengapung di sana, apa pun yang menggunakan n ini 136 00:06:43,770 --> 00:06:47,057 akan, lebih atau kurang, dapat bunyi letusan kecil bersama jika mendapat salah satu dari mereka. 137 00:06:47,057 --> 00:06:49,640 Kecuali ada beberapa yang sangat nyata alasan mengapa tidak dapat menggunakan data 138 00:06:49,640 --> 00:06:52,170 ketik n saat ini memiliki, di mana titik itu akan mendapatkan 139 00:06:52,170 --> 00:06:54,490 terjepit dan melemparkan kesalahan, dan orang-orang macam hal. 140 00:06:54,490 --> 00:06:57,050 >> Tapi di sini, Python tidak benar-benar peduli apa 141 00:06:57,050 --> 00:06:59,140 itu adalah bahwa saya akan tetap di ini kalimat, seperti, Anda ingin hal ini? 142 00:06:59,140 --> 00:06:59,840 Hal ini dalam? 143 00:06:59,840 --> 00:07:00,640 Ya, itu semacam hal. 144 00:07:00,640 --> 00:07:01,810 Aku akan tetap pada akhirnya. 145 00:07:01,810 --> 00:07:04,740 Ini akan menjadi masalah di kemudian hari, jika seseorang yang ingin menggunakan akhir yang 146 00:07:04,740 --> 00:07:05,710 tidak bisa mengatasinya. 147 00:07:05,710 --> 00:07:08,500 Ini adalah salah satu utama perbedaan antara Python dan C 148 00:07:08,500 --> 00:07:10,790 yang membuatnya mudah untuk menulis program C yang sangat besar 149 00:07:10,790 --> 00:07:15,120 dan membuatnya lebih mudah untuk menulis Program Python sangat kecil. 150 00:07:15,120 --> 00:07:19,564 >> Untuk sintaks sangat tidak berbeda dalam apa yang dilakukannya. 151 00:07:19,564 --> 00:07:21,480 Ini sedikit berbeda bagaimana itu diungkapkan. 152 00:07:21,480 --> 00:07:25,370 Jadi ini adalah sangat, apa yang disebut Pythonic, cara menulis itu. 153 00:07:25,370 --> 00:07:28,969 untuk baris di kisaran (n), ini adalah kisaran angka dari 0 sampai n, 154 00:07:28,969 --> 00:07:31,010 inklusif di bagian bawah dan eksklusif di atas. 155 00:07:31,010 --> 00:07:34,790 Jadi dari 0 sampai n-1, yang merupakan apa kode C adalah melakukan, 156 00:07:34,790 --> 00:07:38,690 kecuali itu jauh lebih mudah untuk melihat mungkin. 157 00:07:38,690 --> 00:07:42,710 >> Blok yang relevan tidak berangkat dengan kawat gigi, 158 00:07:42,710 --> 00:07:44,540 bukannya itu berangkat oleh lekukan ini. 159 00:07:44,540 --> 00:07:47,580 Jadi semua lini ini empat ruang ke kanan, 160 00:07:47,580 --> 00:07:50,410 atau seperti tentang lebar gajah. 161 00:07:50,410 --> 00:07:54,570 Dan mereka adalah orang-orang yang akan dieksekusi dalam hal ini untuk. 162 00:07:54,570 --> 00:07:57,020 Jika saya mengacaukan lekukan ini dan saya 163 00:07:57,020 --> 00:08:01,420 mendorong cetak yang kembali ke lekukan asli, 164 00:08:01,420 --> 00:08:04,320 cetak yang akan meninggalkan untuk loop. 165 00:08:04,320 --> 00:08:08,560 Berbeda dengan C, di mana di sini saya benar-benar harus bergerak yang brace tertutup sekitar. 166 00:08:08,560 --> 00:08:11,820 >> Ini berarti bahwa Anda tidak mendapatkan kesalahan yang melompat keluar pada Anda karena Anda 167 00:08:11,820 --> 00:08:13,580 menempatkan penjepit di tempat yang salah. 168 00:08:13,580 --> 00:08:16,460 Ini berarti bahwa Anda mendapatkan kesalahan yang melompat keluar pada Anda karena Anda 169 00:08:16,460 --> 00:08:17,620 menjorok yang salah jalur. 170 00:08:17,620 --> 00:08:19,290 Sehingga membuat lekukan super hati-hati. 171 00:08:19,290 --> 00:08:22,123 Mudah-mudahan Anda menjadi super Hati-hati dengan lekukan Anda tetap, 172 00:08:22,123 --> 00:08:25,300 dan jadi ini bukan yang lebih dari beban. 173 00:08:25,300 --> 00:08:28,762 >> Tapi aturan dasar untuk Python, dan kami akan memiliki beberapa ini 174 00:08:28,762 --> 00:08:30,970 bahwa kita akan pergi melalui melalui jalannya pembicaraan, 175 00:08:30,970 --> 00:08:33,840 adalah mencoba sintaks alami sebelum melihat apa-apa. 176 00:08:33,840 --> 00:08:37,610 Jadi sintaks ini, untuk nomor ini di kisaran, 177 00:08:37,610 --> 00:08:41,460 sangat khas dalam hal gaya. 178 00:08:41,460 --> 00:08:45,260 Banyak hal di Python kita akan melihat mengambil formulir ini. 179 00:08:45,260 --> 00:08:47,420 >> Dan jadi jika Anda datang dengan benda baru yang Anda 180 00:08:47,420 --> 00:08:50,870 pikir Anda harus dapat iterate atas ini, dalam format ini, 181 00:08:50,870 --> 00:08:53,720 ternyata mungkin mendukung format tersebut. 182 00:08:53,720 --> 00:08:56,990 Kami tidak akan pergi jauh di Super alasan teknis mengapa itu benar. 183 00:08:56,990 --> 00:09:00,167 >> Tapi itu intuisi berguna untuk memiliki ketika Anda mendekati program Python, 184 00:09:00,167 --> 00:09:01,750 bahwa hal ini hanya akan bekerja. 185 00:09:01,750 --> 00:09:03,020 Cobalah. 186 00:09:03,020 --> 00:09:06,480 Boot Command Line Interpreter, melihat apakah ia bekerja, 187 00:09:06,480 --> 00:09:09,827 bergerak dengan hal-hal, sebelum Anda bahkan perlu untuk membuka Google dan berkata, 188 00:09:09,827 --> 00:09:11,660 apa sintaks untuk Hal ini khususnya? 189 00:09:11,660 --> 00:09:14,740 Banyak Python Anda bisa menemukan hanya dengan mencoba. 190 00:09:14,740 --> 00:09:19,005 >> Ini jika bahkan lebih mirip untuk C maka fors yang. 191 00:09:19,005 --> 00:09:20,380 Perhatikan bahwa tidak ada tanda kurung. 192 00:09:20,380 --> 00:09:23,490 Kurung, sekali lagi, tidak berbahaya tapi tidak perlu. 193 00:09:23,490 --> 00:09:25,750 Ada usus pada akhir seperti untuk loop, 194 00:09:25,750 --> 00:09:30,800 dan lagi, blok relatif adalah menjorok daripada berangkat dengan kawat gigi. 195 00:09:30,800 --> 00:09:33,080 Lain ini adalah pada aslinya tingkat lekukan, 196 00:09:33,080 --> 00:09:35,930 dan blok yang relevan menjorok lagi. 197 00:09:35,930 --> 00:09:41,720 Mereka yang bekerja persis seperti yang mereka lakukan di C. 198 00:09:41,720 --> 00:09:44,520 >> Ini sebenarnya sangat banyak yang sama. 199 00:09:44,520 --> 00:09:49,430 Sekali lagi, cetak kehilangan satu karakter off dari printf Anda melewati beberapa string. 200 00:09:49,430 --> 00:09:51,520 Ternyata string baik dapat ditandai 201 00:09:51,520 --> 00:09:53,562 oleh tanda kutip tunggal atau tanda kutip ganda. 202 00:09:53,562 --> 00:09:55,270 Tidak ada perbedaan, kecuali dalam yang 203 00:09:55,270 --> 00:09:57,722 kutipan yang dapat Anda gunakan tanda kutip ganda dengan meninggalkan, 204 00:09:57,722 --> 00:09:59,430 daripada harus melarikan diri semua dari mereka. 205 00:09:59,430 --> 00:10:01,480 Dan dalam tanda kutip ganda, Anda dapat menggunakan tanda kutip tunggal dengan meninggalkan 206 00:10:01,480 --> 00:10:02,420 tanpa harus melarikan diri mereka. 207 00:10:02,420 --> 00:10:04,253 Jika Anda ingin mencampur mereka, Anda pasti bisa 208 00:10:04,253 --> 00:10:06,100 mencari secara online bagaimana melakukan hal itu. 209 00:10:06,100 --> 00:10:09,581 >> Anda akan melihat bahwa di sini, Aku sudah melewati pada akhirnya = hal ini. 210 00:10:09,581 --> 00:10:12,580 Ini adalah contoh dari opsional argumen, yang merupakan salah satu dari hal-hal 211 00:10:12,580 --> 00:10:14,990 bahwa Python mendukung bahwa membuatnya cukup berguna. 212 00:10:14,990 --> 00:10:18,240 Jadi cetak sebenarnya memiliki banyak argumen, yang biasanya 213 00:10:18,240 --> 00:10:20,140 set ke default nilai, tapi di sini saya sudah 214 00:10:20,140 --> 00:10:21,924 memutuskan untuk menimpa satu disebut end. 215 00:10:21,924 --> 00:10:24,340 Alasan bahwa saya harus menimpanya dengan string kosong 216 00:10:24,340 --> 00:10:26,756 adalah bahwa cetak di Python, oleh default, mencetak baris baru 217 00:10:26,756 --> 00:10:28,630 setelah hal yang Anda katakan juga. 218 00:10:28,630 --> 00:10:31,462 >> Jadi hash ini benar-benar akan mencetak hash di baris baru. 219 00:10:31,462 --> 00:10:34,670 Dan jika saya tidak ingin hash untuk mencetak baris baru setelah itu, maka saya harus mengatakan 220 00:10:34,670 --> 00:10:35,340 tidak mencetak satu. 221 00:10:35,340 --> 00:10:37,980 222 00:10:37,980 --> 00:10:43,690 Tapi, namun begitu, satu hal terakhir yang Program ini hilang yang satu memiliki adalah 223 00:10:43,690 --> 00:10:44,960 include di bagian atas. 224 00:10:44,960 --> 00:10:48,120 Cetak dimasukkan ke Python jadi pada dasarnya bahwa tidak ada header atau modul 225 00:10:48,120 --> 00:10:49,869 yang perlu Anda termasuk, meskipun jika ingin 226 00:10:49,869 --> 00:10:52,029 untuk memasukkan hal-hal lain dalam naskah Python, 227 00:10:52,029 --> 00:10:55,320 Saya akan melakukannya dalam format-- sangat mirip kata-kata yang hanya sedikit berbeda. 228 00:10:55,320 --> 00:10:58,840 229 00:10:58,840 --> 00:11:01,360 >> Saya sebutkan bahwa kita tidak perlu utama di sini, 230 00:11:01,360 --> 00:11:03,372 karena Python dimulai mengeksekusi di atas. 231 00:11:03,372 --> 00:11:05,080 Jika saya ingin membungkus ini dalam fungsi, saya 232 00:11:05,080 --> 00:11:07,667 akan melakukannya seperti this-- Saya akan mengatakan def nama fungsi, 233 00:11:07,667 --> 00:11:10,500 argumen mungkin pergi di sini dan kami akan melihat beberapa dari mereka kemudian, usus besar, 234 00:11:10,500 --> 00:11:13,040 dan sekali lagi, ini Seluruh berangkat blok 235 00:11:13,040 --> 00:11:16,810 adalah apa yang operasional memblokir untuk fungsi itu. 236 00:11:16,810 --> 00:11:18,560 Jadi ini adalah definisi dari fungsi. 237 00:11:18,560 --> 00:11:21,587 Dan ada deklarasi, lalu turun di sini, saya hanya bisa memanggil fungsi. 238 00:11:21,587 --> 00:11:23,920 Dan lagi, program ini interpreter, mulai dari atas, 239 00:11:23,920 --> 00:11:25,280 akan melihat ini adalah definisi. 240 00:11:25,280 --> 00:11:27,960 Ini tidak akan mengeksekusi ini sampai sampai di sini, dan kemudian itu seperti, oh 241 00:11:27,960 --> 00:11:30,860 sekarang Anda sudah menyebutnya, saya kira saya harus melaksanakannya. 242 00:11:30,860 --> 00:11:33,850 >> Sebuah hal yang sangat umum untuk melihat dalam file Python, 243 00:11:33,850 --> 00:11:36,700 terutama file Python yang yang dirilis ke publik 244 00:11:36,700 --> 00:11:41,650 dan dikembangkan by-- dan dikembangkan dan dipertahankan, adalah sesuatu dari formulir ini. 245 00:11:41,650 --> 00:11:44,540 Hal ini terjadi karena basically-- Python, Anda mulai di bagian atas 246 00:11:44,540 --> 00:11:50,310 dan kemudian Anda jalankan ke bawah, Saya Mario jika saya hanya punya disebut di sini, 247 00:11:50,310 --> 00:11:54,190 maka setiap kali saya termasuk file ini di file lain, karena saya ingin menggunakan 248 00:11:54,190 --> 00:11:58,580 adalah fungsi Mario, bahwa file lain akan juga memiliki panggilan ini untuk Mario di dalamnya. 249 00:11:58,580 --> 00:12:01,000 Dan ketika aku berlari file tersebut, itu akan memanggil Mario. 250 00:12:01,000 --> 00:12:04,520 >> Jadi itu mungkin bahwa saya hanya ingin menjalankan ini jika saya sudah benar-benar 251 00:12:04,520 --> 00:12:07,290 dieksekusi file tertentu ini. 252 00:12:07,290 --> 00:12:11,520 Dan jadi saya bisa membungkus ini dalam idiom seperti ini, di mana saya mengatakan, 253 00:12:11,520 --> 00:12:14,820 jika nama eksekusi ini lingkungan adalah utama, 254 00:12:14,820 --> 00:12:16,200 maka saya ingin melakukan hal-hal ini. 255 00:12:16,200 --> 00:12:18,710 Jika tidak orang lain bisa use-- termasuk function-- saya 256 00:12:18,710 --> 00:12:22,510 file saya, dan hanya untuk mendapatkan akses ke fungsi-fungsi ini 257 00:12:22,510 --> 00:12:25,552 tanpa harus menjalankan hal-hal yang saya ingin mengeksekusi dalam file ini. 258 00:12:25,552 --> 00:12:27,260 Ini, sekali lagi, opsional tapi sangat umum. 259 00:12:27,260 --> 00:12:30,450 260 00:12:30,450 --> 00:12:33,840 >> Hal-hal ini adalah entirely-- persis sama antara C dan Python, 261 00:12:33,840 --> 00:12:35,100 tentu dalam 3. 262 00:12:35,100 --> 00:12:38,610 Saya pikir dalam 2, operator divisi kadang-kadang memberi Anda kembali mengapung saat 263 00:12:38,610 --> 00:12:41,450 Anda dioperasikan pada int, dan baik Anda ingin itu atau Anda tidak. 264 00:12:41,450 --> 00:12:44,777 Tapi ditambah, dikurangi, dan kali bekerja persis seperti yang Anda harapkan, 265 00:12:44,777 --> 00:12:46,110 kecuali lebih sedikit lebih jenis. 266 00:12:46,110 --> 00:12:49,740 Jadi Anda bisa kalikan mengapung oleh int, dan orang-orang macam hal. 267 00:12:49,740 --> 00:12:52,480 >> set bekerja persis sama. 268 00:12:52,480 --> 00:12:54,310 Anda dapat menggunakan dua tanda sama. 269 00:12:54,310 --> 00:12:59,000 inequals-- lebih besar dari, kurang dari, hal-things-- 270 00:12:59,000 --> 00:13:02,580 memiliki arti yang Anda akrab dengan mereka. 271 00:13:02,580 --> 00:13:05,770 >> Di mana C menggunakan operator ini, Python menggunakan sedikit lebih Inggris 272 00:13:05,770 --> 00:13:06,390 yang dibaca. 273 00:13:06,390 --> 00:13:09,348 Jadi bukan dua, ampersands, Anda harfiah mengetikkan kata "dan," "atau," 274 00:13:09,348 --> 00:13:10,740 atau tidak." 275 00:13:10,740 --> 00:13:13,420 Seperti di if-- Anda di Anda pernyataan bersyarat, 276 00:13:13,420 --> 00:13:17,670 kita lihat sebelumnya bahwa sintaks ini di C sesuai dengan sintaks ini di Python. 277 00:13:17,670 --> 00:13:21,010 Dan ada tidak banyak berbeda ada, kecuali sedikit 278 00:13:21,010 --> 00:13:24,780 tanda baca sekitar sisi. 279 00:13:24,780 --> 00:13:28,890 Sekali lagi, di mana C akan lagi jika, Python menggunakan Elif, 280 00:13:28,890 --> 00:13:33,960 tapi ini sebagian besar perubahan tingkat permukaan. 281 00:13:33,960 --> 00:13:38,450 >> Iterasi seperti ini sering ditulis dalam idiom ini di Python. 282 00:13:38,450 --> 00:13:42,350 Anda dapat memproduksi semacam ini Hal dengan loop sementara di luar 283 00:13:42,350 --> 00:13:46,387 jika Anda ingin, tapi Anda tentu tidak perlu. 284 00:13:46,387 --> 00:13:48,970 Dan lagi, jika Anda ingin mencetak elemen dalam array 285 00:13:48,970 --> 00:13:50,560 Anda mungkin melakukannya dengan cara ini. 286 00:13:50,560 --> 00:13:52,927 Salah satu hal yang menyenangkan tentang Python meskipun, 287 00:13:52,927 --> 00:13:54,760 adalah bahwa Anda tidak perlu menggunakan paradigma ini, 288 00:13:54,760 --> 00:13:57,290 dan Anda dapat menggunakan sedikit lebih elegan satu. 289 00:13:57,290 --> 00:13:59,370 Anda mengatakan untuk di ary. 290 00:13:59,370 --> 00:14:02,980 >> Jadi, daripada pergi di sini dan berjalan di atas indeks, 291 00:14:02,980 --> 00:14:05,630 dan kemudian menarik keluar elemen individu, 292 00:14:05,630 --> 00:14:08,644 Anda memberitahu untuk untuk benar-benar hanya menjalankan lebih dari unsur-unsur itu sendiri. 293 00:14:08,644 --> 00:14:11,060 Dan kemudian apa yang Anda lakukan dalam dapat beroperasi secara langsung 294 00:14:11,060 --> 00:14:13,260 pada unsur-unsur, yang cukup menyenangkan. 295 00:14:13,260 --> 00:14:16,710 Dan kami akan see-- kita akan menggunakan bahwa idiom lagi dan lagi 296 00:14:16,710 --> 00:14:18,050 seperti yang kita berjalan melalui kode. 297 00:14:18,050 --> 00:14:20,091 >> Ini, sekali lagi, contoh sesuatu yang aku akan 298 00:14:20,091 --> 00:14:23,300 memanggil Python sihir, meskipun ada alasan yang sangat teknis mengapa ia bekerja. 299 00:14:23,300 --> 00:14:26,340 Dan ada hal-hal teknis yang harus benar tentang array dalam rangka 300 00:14:26,340 --> 00:14:28,340 untuk bekerja di belakang layar. 301 00:14:28,340 --> 00:14:31,390 Masalahnya adalah bahwa sebagian besar jenis yang Anda harapkan ini untuk bekerja 302 00:14:31,390 --> 00:14:36,610 memiliki ini diterapkan untuk Anda dalam bahasa built-in. 303 00:14:36,610 --> 00:14:40,030 >> Hal lain yang akan menyenangkan jika ini bekerja dalam setiap bahasa, 304 00:14:40,030 --> 00:14:45,460 tetapi ada beberapa alasan mengapa hal itu tidak bisa, mencetak string ini kali nomor ini. 305 00:14:45,460 --> 00:14:48,860 Ternyata di Python, ini tidak tepat apa yang Anda ingin, yang hanya menyenangkan, 306 00:14:48,860 --> 00:14:52,840 dan berarti bahwa kita benar-benar dapat mengurangi program ini, lagi mario.c. 307 00:14:52,840 --> 00:14:57,150 Daripada iterasi banyak, kita bisa hanya mengatakan, saya ingin beberapa jumlah ruang, 308 00:14:57,150 --> 00:15:01,120 Saya ingin jumlah hash, dan beberapa hash di akhir. 309 00:15:01,120 --> 00:15:02,640 Dan lagi, kita menggunakan format ini. 310 00:15:02,640 --> 00:15:05,340 >> Di sini, kita lewat di variabel dengan cara ini. 311 00:15:05,340 --> 00:15:08,050 Sekali lagi, kita tidak perlu untuk mengatakan apa jenis variabel itu, 312 00:15:08,050 --> 00:15:11,322 dan satu-satunya waktu kita akan mendapatkan kesalahan adalah pada waktu berjalan. 313 00:15:11,322 --> 00:15:13,030 Ketika seseorang mencoba untuk lulus sesuatu di, 314 00:15:13,030 --> 00:15:14,860 itu akan datang ke fungsi saja. 315 00:15:14,860 --> 00:15:18,240 Jika kita baji di sini karena ini bukan hal yang dapat Anda membuat rentang lebih, 316 00:15:18,240 --> 00:15:22,100 Aku akan mendapatkan error di sana, dan saya harus men-debug seperti itu. 317 00:15:22,100 --> 00:15:25,050 Tapi sementara itu, saya tidak memiliki menjadi sangat berhati-hati tentang apa yang 318 00:15:25,050 --> 00:15:32,800 akan berlalu dalam, asalkan dalam aktual eksekusi itu semua bekerja sangat rapi. 319 00:15:32,800 --> 00:15:35,080 >> Aku bahkan bisa membuat ini sedikit lebih bersih 320 00:15:35,080 --> 00:15:41,770 menggunakan built-in fungsi tertentu pada string, yang Justify kanan. 321 00:15:41,770 --> 00:15:45,250 Ini hanya fungsi yang berguna tergeletak di sekitar perpustakaan. 322 00:15:45,250 --> 00:15:47,660 Ini dalam dokumentasi jika Anda pergi dan mencarinya. 323 00:15:47,660 --> 00:15:51,650 Dan saya katakan, baik aku akan memiliki string ini, beberapa jumlah hash, 324 00:15:51,650 --> 00:15:56,390 dan saya ingin benar membenarkan pad itu-- keluar dengan spasi menjadi panjang ini. 325 00:15:56,390 --> 00:16:00,584 >> Sekali lagi, ini adalah di dokumentasi, yang membawa us-- 326 00:16:00,584 --> 00:16:03,500 Aku benar-benar akan mengklik these-- yang membawa kita ke aturan kedua kami 327 00:16:03,500 --> 00:16:06,990 untuk Python-- perpustakaan standar metode fungsi adalah teman Anda. 328 00:16:06,990 --> 00:16:09,880 Dan itu sering bernilai saat Anda untuk pergi mencari aku bertanya-tanya 329 00:16:09,880 --> 00:16:12,310 jika ada hal yang hanya melakukan ini. 330 00:16:12,310 --> 00:16:13,830 Mungkin ada. 331 00:16:13,830 --> 00:16:15,990 Jika Anda ingin pad keluar string, jika Anda akan 332 00:16:15,990 --> 00:16:17,470 ingin mengambil kembali setengah dari string, jika Anda akan 333 00:16:17,470 --> 00:16:20,370 ingin mencari melalui string, jika Anda ingin menghancurkan beberapa hal 334 00:16:20,370 --> 00:16:22,420 bersama-sama dengan string dengan koma di antara mereka, 335 00:16:22,420 --> 00:16:24,640 ada perpustakaan standar fungsi untuk melakukan hal ini. 336 00:16:24,640 --> 00:16:27,190 >> Dan itu membuat hidup Anda lebih mudah jika Anda menggunakan mereka 337 00:16:27,190 --> 00:16:29,240 bukannya meluncurkan segala sesuatu pada Anda sendiri 338 00:16:29,240 --> 00:16:31,650 dalam lima baris kode di sini, lima baris kode di sini. 339 00:16:31,650 --> 00:16:34,430 Yang benar-benar dimulai pada menambahkan hingga real time. 340 00:16:34,430 --> 00:16:37,430 >> Salah satu hal yang menarik tentang bagaimana ini dipanggil. 341 00:16:37,430 --> 00:16:39,980 Anda akan melihat bahwa ada hal yang dot. 342 00:16:39,980 --> 00:16:43,490 Saya memiliki beberapa objek di sebelah kiri, dan kemudian saya menelepon titik fungsi. 343 00:16:43,490 --> 00:16:49,780 Ini adalah salah satu paradigma yang Python menggunakan untuk melampirkan metode untuk objek. 344 00:16:49,780 --> 00:16:54,410 Kita akan berbicara tentang apa ini sangat singkat di akhir, 345 00:16:54,410 --> 00:16:58,510 tapi tahu bahwa kami berdua bisa beroperasi pada hal dengan mengambil benda mengatakan dot 346 00:16:58,510 --> 00:17:01,690 apapun, atau dengan menelepon fungsi yang mengambil 347 00:17:01,690 --> 00:17:04,339 bahwa obyek dan beberapa argumen lainnya. 348 00:17:04,339 --> 00:17:07,450 >> Jadi ini adalah cara yang baik hal bisa dilakukan dengan Python. 349 00:17:07,450 --> 00:17:09,780 Dan apakah tertentu fungsi diimplementasikan 350 00:17:09,780 --> 00:17:14,230 dalam gaya ini atau ini Gaya adalah sesuatu yang Anda 351 00:17:14,230 --> 00:17:19,990 harus mencari sampai Anda mendapatkan memahamkan yang satu kemungkinan untuk jatuh ke dalam. 352 00:17:19,990 --> 00:17:22,660 Ada kurang lebih kohesif filosofi di balik Python 353 00:17:22,660 --> 00:17:24,930 Anda menyerap sebagian besar dengan menulis banyak di dalamnya. 354 00:17:24,930 --> 00:17:28,190 Di beberapa titik, yang satu ini sesuatu yang akan dilaksanakan sebagai 355 00:17:28,190 --> 00:17:29,470 menjadi alami. 356 00:17:29,470 --> 00:17:32,420 Untuk saat ini, itu hanya sesuatu Anda belajar saat Anda mencari tahu 357 00:17:32,420 --> 00:17:34,140 setiap hal individu. 358 00:17:34,140 --> 00:17:36,420 >> Perpustakaan sehingga standar fungsi yang teman, 359 00:17:36,420 --> 00:17:41,320 dan mereka membiarkan Anda menulis hal-hal yang memakan banyak ruang ini benar-benar tak lama, 360 00:17:41,320 --> 00:17:42,040 benar-benar elegan. 361 00:17:42,040 --> 00:17:45,670 Dan ini sebenarnya mungkin lebih dibaca, saya akan mengatakan, dari program C 362 00:17:45,670 --> 00:17:46,780 di sana. 363 00:17:46,780 --> 00:17:49,730 Belum lagi fakta bahwa begitu singkat Anda bisa cocok dengan seluruh gajah 364 00:17:49,730 --> 00:17:52,250 dalam ruang yang kita diselamatkan. 365 00:17:52,250 --> 00:17:56,270 >> Hal lain, ini merupakan implementasi dari mario itu dot C, yang saya pikir 366 00:17:56,270 --> 00:17:57,890 adalah terpendek Anda bisa mendapatkannya. 367 00:17:57,890 --> 00:18:00,757 Itu tidak memiliki mendapatkan int, tapi itu kode keras nilai 10 368 00:18:00,757 --> 00:18:02,090 dengan cara yang sama yang satu ini tidak. 369 00:18:02,090 --> 00:18:06,080 Ternyata ini satu jam di di 84 karakter, sedangkan Python adalah 64. 370 00:18:06,080 --> 00:18:11,490 Dan ini jauh lebih dibaca dari sampah ini di sini. 371 00:18:11,490 --> 00:18:14,610 Jadi Python lebih efisien dalam ruang. 372 00:18:14,610 --> 00:18:17,260 Ini sedikit kurang efisien dalam waktu, tetapi tidak banyak. 373 00:18:17,260 --> 00:18:18,890 >> Daftar merupakan hal penting dalam Python. 374 00:18:18,890 --> 00:18:21,540 375 00:18:21,540 --> 00:18:24,587 Kami belum melihat mereka, tapi mereka beroperasi seperti array dilakukan di C. 376 00:18:24,587 --> 00:18:27,170 Jadi di sini, Anda dapat menyatakan mereka, Anda dapat melewati mereka ke hal. 377 00:18:27,170 --> 00:18:29,810 Sekarang kotak memegang array hal-hal ini. 378 00:18:29,810 --> 00:18:33,480 Sekali lagi, kami belum dinyatakan sebagai jenis, tetapi jika kita pernah mencoba untuk menggunakannya, 379 00:18:33,480 --> 00:18:36,260 apa yang Anda harapkan untuk bekerja pada sebuah array bilangan bulat 380 00:18:36,260 --> 00:18:40,130 akan bekerja pada array bilangan bulat. 381 00:18:40,130 --> 00:18:42,030 >> Ini adalah hal yang Anda benar-benar tidak bisa 382 00:18:42,030 --> 00:18:47,390 lakukan di C, karena memori itu begitu tangan, 383 00:18:47,390 --> 00:18:48,950 tapi sangat mudah dilakukan dengan Python. 384 00:18:48,950 --> 00:18:55,310 Jika saya ingin array saya untuk menjadi lebih besar, saya bisa menambahkan elemen untuk itu dan itu baik-baik saja. 385 00:18:55,310 --> 00:18:57,150 >> Apa yang terjadi di balik layar? 386 00:18:57,150 --> 00:18:59,150 Penafsir akan pergi dan mendapatkan beberapa memori, 387 00:18:59,150 --> 00:19:00,860 dan mungkin itu akan mendapatkan sedikit dari memori tambahan, 388 00:19:00,860 --> 00:19:03,090 jadi saya tidak jadi saya tidak memiliki untuk realloc setiap kali. 389 00:19:03,090 --> 00:19:04,897 Tapi berapa banyak memiliki lebih memori apakah itu perlu? 390 00:19:04,897 --> 00:19:06,730 Ini tidak keputusan Anda harus membuat, 391 00:19:06,730 --> 00:19:10,540 ini adalah keputusan bahwa interpreter yang akan dilakukan. 392 00:19:10,540 --> 00:19:12,270 >> Di sini kita melihat berbagai bisa mengambil dua argumen, 393 00:19:12,270 --> 00:19:16,430 tapi masih akan menjadi inklusif dari atas sehingga kita tambahkan 1 ada. 394 00:19:16,430 --> 00:19:21,970 Ini adalah sebuah ungkapan, yang bahkan lebih cara cerdas untuk menulis hal-hal seperti ini. 395 00:19:21,970 --> 00:19:25,980 Ini disebut daftar pemahaman, dan di sini apa yang kami katakan 396 00:19:25,980 --> 00:19:32,560 adalah saya ingin dimasukkan ke dalam i kuadrat untuk setiap nilai i dalam kisaran ini. 397 00:19:32,560 --> 00:19:35,770 Hal ini di sebelah kanan bisa menjadi lain array, dan hal ini di sebelah kiri 398 00:19:35,770 --> 00:19:40,740 menjadi fungsi tertentu yang akan mengambil di i sebagai variabel 399 00:19:40,740 --> 00:19:42,250 dan memberi saya beberapa hasil. 400 00:19:42,250 --> 00:19:43,480 >> Apa yang akan saya lakukan adalah, Aku akan membangun 401 00:19:43,480 --> 00:19:46,200 array itu semua hal ini untuk setiap nilai dalam kisaran ini. 402 00:19:46,200 --> 00:19:48,960 403 00:19:48,960 --> 00:19:55,670 Dan ini super elegan, super pendek, dan itu sangat jelas apa artinya. 404 00:19:55,670 --> 00:19:59,190 Ini adalah salah satu things-- ini lagi, 405 00:19:59,190 --> 00:20:03,860 satu of-- sangat simbol dari alasan bahwa orang-orang seperti Python. 406 00:20:03,860 --> 00:20:05,900 Jika Anda suka pemrograman seperti ini, maka Python 407 00:20:05,900 --> 00:20:07,830 adalah bahasa Anda mungkin ingin belajar. 408 00:20:07,830 --> 00:20:10,950 >> Dan lagi, ada teknis alasan mengapa ini bekerja. 409 00:20:10,950 --> 00:20:14,730 Tapi sejauh kita prihatin, kita lebih atau kurang tidak peduli. 410 00:20:14,730 --> 00:20:18,500 >> Jadi jika Anda ingin mencetak daftar, beberapa idiom yang sama berguna. 411 00:20:18,500 --> 00:20:20,940 Untuk i dalam kisaran ini, kita bisa Indeks melalui semua hal 412 00:20:20,940 --> 00:20:23,140 dan kemudian mencetak mereka semua. 413 00:20:23,140 --> 00:20:24,650 Dan Anda akan lihat len ​​sini. 414 00:20:24,650 --> 00:20:27,150 Jika Anda pernah ingin untuk mendapatkan panjang dari array, yang 415 00:20:27,150 --> 00:20:31,150 sangat mudah dengan Python, itu sangat sulit di C. 416 00:20:31,150 --> 00:20:33,720 Hal ini akan mencetak persis apa yang Anda harapkan. 417 00:20:33,720 --> 00:20:36,986 Kami juga bisa, seperti yang telah kita lihat sebelumnya, iterate atas elemen dalam array 418 00:20:36,986 --> 00:20:39,860 langsung, dan kemudian hanya berbicara tentang mereka, daripada memiliki indeks 419 00:20:39,860 --> 00:20:43,190 kembali ke array setiap kali. 420 00:20:43,190 --> 00:20:45,990 >> Dan ini adalah hal yang dapat Anda lakukan. 421 00:20:45,990 --> 00:20:49,984 Jadi dalam C, jika Anda meminta sesuatu seperti ini, cetak akan mengatakan, 422 00:20:49,984 --> 00:20:51,150 itu sebuah array bilangan bulat. 423 00:20:51,150 --> 00:20:53,456 Itu jelas bukan tali, saya tidak bisa mencetaknya. 424 00:20:53,456 --> 00:20:54,830 Python kurang lebih tidak peduli. 425 00:20:54,830 --> 00:20:57,496 Ini seperti, apakah ada cara yang saya bisa mengubahnya ke string? 426 00:20:57,496 --> 00:20:58,500 Ya, aku akan melakukannya. 427 00:20:58,500 --> 00:21:01,600 Dan jadi saya hanya akan mencetak yang keluar. 428 00:21:01,600 --> 00:21:03,640 Ini berarti bahwa Anda dapat melakukan hal-hal like-- ini 429 00:21:03,640 --> 00:21:06,530 adalah sebagian besar bagian keras permainan lima belas, ditulis 430 00:21:06,530 --> 00:21:08,930 sangat singkat di Python. 431 00:21:08,930 --> 00:21:11,320 >> Anda akan melihat bahwa ada sedikit of-- sini 432 00:21:11,320 --> 00:21:14,441 Saya sudah dilemparkan integer ke string, dan saya harus melakukannya secara manual. 433 00:21:14,441 --> 00:21:16,190 Dan aku akan menambahkan ke string lain, 434 00:21:16,190 --> 00:21:17,590 atau Python jadi bingung. 435 00:21:17,590 --> 00:21:19,840 Tapi apakah ketika Anda menambahkan string ke integer, 436 00:21:19,840 --> 00:21:22,630 aku kira untuk mendapatkan bilangan bulat kembali atau string kembali? 437 00:21:22,630 --> 00:21:24,480 Tetapi sekali lagi, jika Anda hanya memanggil str pada suatu hal, 438 00:21:24,480 --> 00:21:27,240 dan itu bisa di kemungkinan dunia dikonversi menjadi string, 439 00:21:27,240 --> 00:21:30,390 mungkin akan dikonversi menjadi string. 440 00:21:30,390 --> 00:21:33,120 >> Di sini, kita melihat penggunaan daftar bersarang pemahaman 441 00:21:33,120 --> 00:21:38,690 di sebelah kiri, beberapa pengindeksan, yang adalah persis seperti Anda akan digunakan untuk itu, 442 00:21:38,690 --> 00:21:40,060 dan beberapa mencetak hal. 443 00:21:40,060 --> 00:21:42,560 Sekali lagi, kami telah didefinisikan beberapa fungsi dan kita akan memanggil mereka turun 444 00:21:42,560 --> 00:21:45,820 di utama ketika kita benar-benar mendapatkan file. 445 00:21:45,820 --> 00:21:52,004 kembali bekerja sama persis seperti Anda akan harapkan dari bekerja dengan C. Cari, 446 00:21:52,004 --> 00:21:54,420 kita dapat mengatur hal-hal seperti this-- inilah pemahaman daftar 447 00:21:54,420 --> 00:21:59,245 ada tugas untuk variabel, dan kita benar-benar bisa melakukannya lebih mudah. 448 00:21:59,245 --> 00:22:01,870 Kami tidak perlu menulis pencarian, karena built-in untuk bahasa 449 00:22:01,870 --> 00:22:04,230 adalah jika hal ini dalam array ini. 450 00:22:04,230 --> 00:22:05,680 Kembali benar, yang lain kembali palsu. 451 00:22:05,680 --> 00:22:08,830 Jadi itulah keseluruhan find. 452 00:22:08,830 --> 00:22:12,230 >> Keseluruhan semacam melibatkan memanggil semacam, 453 00:22:12,230 --> 00:22:15,462 yang is-- ada implementasi ini dibangun ke perpustakaan C tertentu. 454 00:22:15,462 --> 00:22:17,170 Jika Anda ingin ini semacam mundur, Anda 455 00:22:17,170 --> 00:22:20,450 dapat menimpa ini opsional Argumen secara terbalik dengan benar. 456 00:22:20,450 --> 00:22:23,350 457 00:22:23,350 --> 00:22:27,860 Dan jika Anda ingin menyortir lebih string, yang built-in juga. 458 00:22:27,860 --> 00:22:31,950 >> Jadi ini bukan untuk mengatakan ini adalah hal-hal yang perlu Anda lakukan setiap hari, 459 00:22:31,950 --> 00:22:34,280 tetapi gagasan adalah bahwa ini adalah filsafat Python, 460 00:22:34,280 --> 00:22:37,530 bahwa semua hal ini yang Anda akan semacam ingin melakukan yang built-in. 461 00:22:37,530 --> 00:22:42,410 Dan sebagian besar fungsi standar, jadi semacam, panjang, apa pun, 462 00:22:42,410 --> 00:22:44,380 mendukung input yang paling logis masuk akal. 463 00:22:44,380 --> 00:22:49,020 Anda panggilan len pada array yang sama cara Anda sebut len ​​pada string. 464 00:22:49,020 --> 00:22:55,785 Anda multiply-- Anda menyortir string dengan cara yang sama Anda menyortir array. 465 00:22:55,785 --> 00:22:58,930 466 00:22:58,930 --> 00:23:00,740 >> Kebanyakan fungsi standar bahwa orang-orang membangun, 467 00:23:00,740 --> 00:23:03,000 dan yang paling pihak ketiga perpustakaan yang orang 468 00:23:03,000 --> 00:23:06,980 membangun, karena mereka meniru desain perpustakaan standar, 469 00:23:06,980 --> 00:23:10,190 dapat meminta segala sesuatu yang Anda seperti, mengapa tidak ini hanya bekerja, 470 00:23:10,190 --> 00:23:12,800 di C. Lebih atau kurang, ia akan bekerja dengan Python 471 00:23:12,800 --> 00:23:15,930 karena orang bekerja di belakang untuk angka apa hal itu dan kemudian beroperasi 472 00:23:15,930 --> 00:23:17,510 tepat di atasnya. 473 00:23:17,510 --> 00:23:22,760 Jadi sekali lagi, latar belakang teknis, tetapi membuat hidup kita lebih mudah sebagai programmer. 474 00:23:22,760 --> 00:23:26,820 >> Jadi, inilah file I / O. mengajukan I / O memiliki banyak hal-hal kecil yang membuatnya rumit, 475 00:23:26,820 --> 00:23:29,890 dan jadi ada sumber online, tapi secara singkat, 476 00:23:29,890 --> 00:23:33,010 Anda menelepon terbuka pada file nama dengan jenis tertentu. 477 00:23:33,010 --> 00:23:37,640 Jadi yang membaca, membaca dan menulis, menulis atau menambahkan. 478 00:23:37,640 --> 00:23:41,790 Anda membaca sejumlah karakter dan Anda mencetak mereka, 479 00:23:41,790 --> 00:23:42,595 Anda akan mendapatkan Hello! 480 00:23:42,595 --> 00:23:43,970 Maksudku, seperti file ini memiliki Hello! 481 00:23:43,970 --> 00:23:46,480 Di dalamnya, panggilan untuk membaca, dan apa yang Anda akan mendapatkan kembali 482 00:23:46,480 --> 00:23:49,520 adalah string yang memiliki semua dari sisa array, 483 00:23:49,520 --> 00:23:50,860 atau semua sisa file. 484 00:23:50,860 --> 00:23:53,805 485 00:23:53,805 --> 00:23:56,055 Jika Anda panggilan baca lagi, Anda berada di akhir file, 486 00:23:56,055 --> 00:23:58,138 dan sehingga Anda tidak mendapatkan apa saja dan sehingga Anda akan menutup. 487 00:23:58,138 --> 00:24:02,510 Sekali lagi, ini bukan .close File dekat, karena akan di C. 488 00:24:02,510 --> 00:24:07,190 Ini lebih atau kurang karena f adalah hal, dan Anda ingin untuk f untuk menutup. 489 00:24:07,190 --> 00:24:12,092 Tapi file dasar I / O tidak sangat rumit. 490 00:24:12,092 --> 00:24:15,300 Sekali lagi, jika Anda ingin membuka file, jika Anda ingin membaca baris tertentu, 491 00:24:15,300 --> 00:24:17,870 Anda bisa keluar dari tertentu line-- ada built-in untuk itu. 492 00:24:17,870 --> 00:24:19,995 Jika Anda ingin menulis hal, Anda bisa menulis ini. 493 00:24:19,995 --> 00:24:23,412 Jika Anda ingin menulis individu gigitan, Anda dapat menulis mereka. 494 00:24:23,412 --> 00:24:25,620 Dan jika Anda ingin iterate atas baris file 495 00:24:25,620 --> 00:24:29,557 individual, seperti yang kita lakukan dalam sepotong dari beberapa minggu yang lalu, Anda bisa melakukan itu untuk. 496 00:24:29,557 --> 00:24:32,140 Sekali lagi, sebagian besar benda-benda yang akan Anda ingin dapat iterate atas 497 00:24:32,140 --> 00:24:33,780 dukungan iterasi atas mereka. 498 00:24:33,780 --> 00:24:37,430 Dalam Piton, file ini mungkin hal yang Saya ingin iterate atas baris demi baris. 499 00:24:37,430 --> 00:24:39,138 Jika itu kamus kata-kata dan saya 500 00:24:39,138 --> 00:24:42,181 mencoba untuk mendapatkan individu yang kata-kata, kemudian, dalam lingkaran ini, 501 00:24:42,181 --> 00:24:44,180 garis itu akan menjadi setiap kata pada gilirannya dan ini 502 00:24:44,180 --> 00:24:47,880 akan dieksekusi untuk setiap baris dalam file sampai akhir file. 503 00:24:47,880 --> 00:24:52,280 Dan lagi, jika saya dicetak masing-masing line, garis datang dengan baris baru, 504 00:24:52,280 --> 00:24:54,740 jadi saya menetapkan akhir kembali ke hal seperti ini. 505 00:24:54,740 --> 00:24:56,580 Lalu aku akan mendapatkan isi dari file saya. 506 00:24:56,580 --> 00:25:03,610 507 00:25:03,610 --> 00:25:07,480 >> Hal kedua yang beroperasi di beberapa cara seperti daftar, dan dalam beberapa hal 508 00:25:07,480 --> 00:25:11,870 sebagai sesuatu yang substansial lebih bertenaga, 509 00:25:11,870 --> 00:25:16,170 adalah kamus, yang benar-benar keren untuk digunakan, tetapi pada dasarnya hash 510 00:25:16,170 --> 00:25:17,670 tabel menyamar. 511 00:25:17,670 --> 00:25:23,330 Anda membuat satu menggunakan persis dua karakter, yang mengagumkan 512 00:25:23,330 --> 00:25:25,959 jika Anda mencoba untuk menerapkan tabel hash untuk set masalah Anda, 513 00:25:25,959 --> 00:25:27,250 Anda tahu banyak rasa sakit yang bisa. 514 00:25:27,250 --> 00:25:29,390 Tetapi orang-orang telah melakukan itu, dan melakukannya dengan baik, 515 00:25:29,390 --> 00:25:32,260 Anda tidak perlu khawatir tentang hal itu lagi. 516 00:25:32,260 --> 00:25:35,180 >> Kemudian Anda dapat memasukkan hal-hal individual. 517 00:25:35,180 --> 00:25:38,110 Tables-- hash atau kamus tidak begitu 518 00:25:38,110 --> 00:25:40,240 peduli apa yang Anda menyimpan di dalamnya. 519 00:25:40,240 --> 00:25:44,210 Jadi jika beberapa entri nomor, dan beberapa entri yang daftar, 520 00:25:44,210 --> 00:25:47,360 jika beberapa entri kamus lainnya, dan beberapa entri adalah string, 521 00:25:47,360 --> 00:25:49,930 Python tidak terlalu peduli. 522 00:25:49,930 --> 00:25:53,460 >> Sekali lagi, jika Anda pergi ke dalamnya mengharapkan string dan apa yang Anda dapatkan kembali 523 00:25:53,460 --> 00:25:56,269 adalah array, itu masalah Anda. 524 00:25:56,269 --> 00:25:58,810 Dan mungkin itu kesalahan dari siapa pun pikir itu menempatkan hal-hal 525 00:25:58,810 --> 00:26:00,476 dalam kamus, mungkin itu Anda. 526 00:26:00,476 --> 00:26:02,350 Jika itu adalah seseorang lain, mudah-mudahan mereka 527 00:26:02,350 --> 00:26:04,520 berperilaku baik tentang apa akan di kamus 528 00:26:04,520 --> 00:26:07,420 dan tidak meninggalkan perangkap bagi Anda untuk jatuh ke dalam. 529 00:26:07,420 --> 00:26:10,890 >> Tapi fungsi standar akan memberikan kembali hal-hal berperilaku baik. 530 00:26:10,890 --> 00:26:13,500 Jadi mereka mengatakan pengembalian ini kembali kamus string, 531 00:26:13,500 --> 00:26:15,860 maka segala sesuatu yang Anda akan untuk keluar dari adalah string. 532 00:26:15,860 --> 00:26:20,710 Jika Anda melakukan beberapa ini dan itu perjalanan Anda, baik, yang mungkin pada Anda. 533 00:26:20,710 --> 00:26:25,542 Python tentu memberikan Anda cukup tali untuk menggantung diri, jika Anda ingin. 534 00:26:25,542 --> 00:26:28,250 Sekarang kita dapat mencetak individu unsur ini dan kembali ini 535 00:26:28,250 --> 00:26:29,935 persis apa yang Anda harapkan. 536 00:26:29,935 --> 00:26:32,810 Persis apa yang Anda harapkan, saya kira, adalah ungkapan yang saya menggunakan banyak, 537 00:26:32,810 --> 00:26:35,070 tapi itu lebih atau kurang bagaimana Python bekerja. 538 00:26:35,070 --> 00:26:39,880 Jika Anda meminta sesuatu yang tidak itu, Python akan membuang kesalahan 539 00:26:39,880 --> 00:26:43,194 dan itu akan berhenti Anda dari program apa pun Anda berada di. 540 00:26:43,194 --> 00:26:45,360 Ini benar-benar akan mencetak informasi lebih dari itu, 541 00:26:45,360 --> 00:26:49,110 itu akan menunjukkan you-- itu akan tambahkan baris, dan sebagainya. 542 00:26:49,110 --> 00:26:52,190 >> Dan, sekali lagi, mungkin kita ingin untuk iterate atas kamus 543 00:26:52,190 --> 00:26:54,410 dan menemukan semua hal di dalamnya. 544 00:26:54,410 --> 00:26:57,440 Di sini kita iterasi dua hal pada saat yang sama. 545 00:26:57,440 --> 00:27:03,040 Dan jadi kita akan melakukannya dengan kunci, nilai, tapi kemudian mencetak semua ini. 546 00:27:03,040 --> 00:27:06,300 >> Dan jika kita ingin cast-- jika kita benar-benar berlari ini, 547 00:27:06,300 --> 00:27:10,840 kita akan memiliki beberapa kesulitan karena on-- ketika kami pergi dengan David, 548 00:27:10,840 --> 00:27:13,920 itu tidak bisa add-- jika kita tidak dilemparkan ke string pertama, 549 00:27:13,920 --> 00:27:17,802 kita tidak bisa menambahkan array string ke string. 550 00:27:17,802 --> 00:27:19,760 Tetapi jika kita dilemparkan ke String, kita mendapatkan sesuatu 551 00:27:19,760 --> 00:27:22,590 seperti ini, yang mungkin apa yang kita suka membaca. 552 00:27:22,590 --> 00:27:27,000 553 00:27:27,000 --> 00:27:30,500 >> Dan ini adalah ejaan. 554 00:27:30,500 --> 00:27:32,460 Kami hanya membaca dalam hal-hal. 555 00:27:32,460 --> 00:27:35,770 Jadi kita dapat membaca di kata-kata individu sebagai garis. 556 00:27:35,770 --> 00:27:38,240 Kami memenggal terakhir hal, sehingga usus minus 1 557 00:27:38,240 --> 00:27:41,651 chomps off hal terakhir yang we-- karakter terakhir dari string. 558 00:27:41,651 --> 00:27:42,150 Kita akan mengatakan. 559 00:27:42,150 --> 00:27:44,730 OK, masing-masing dari mereka mendapat dimasukkan ke dalam kamus ini, 560 00:27:44,730 --> 00:27:45,810 pemetaan ke nilai 1. 561 00:27:45,810 --> 00:27:48,006 Kami tidak begitu peduli tentang yang satu, 562 00:27:48,006 --> 00:27:51,130 tapi itu hanya ada untuk mengatakan, oh well, hal ini saya akan dimasukkan ke dalam kamus. 563 00:27:51,130 --> 00:27:53,182 Karena nanti apa yang kita akan lakukan adalah kita 564 00:27:53,182 --> 00:27:55,390 akan mengatakan, baik, apakah itu dalam kamus sama sekali. 565 00:27:55,390 --> 00:27:57,650 >> Sekali lagi, cek ini untuk keanggotaan up operasi 566 00:27:57,650 --> 00:28:00,940 menggunakan sama sekali berbeda algoritma dari itu akan di daftar, 567 00:28:00,940 --> 00:28:05,709 tapi kami menyebutnya dengan cara yang sama, yang adalah sebagian dari lapisan gula Python 568 00:28:05,709 --> 00:28:07,250 hal sehingga mereka lebih mudah untuk digunakan. 569 00:28:07,250 --> 00:28:10,230 Dan lagi, kita telah melihat hal-hal seperti ini sebelumnya. 570 00:28:10,230 --> 00:28:12,940 Hal ini pada dasarnya menemukan, atau itu persis sintaks yang sama 571 00:28:12,940 --> 00:28:16,480 sebagai menemukan, tetapi beroperasi selama struktur yang sama sekali berbeda. 572 00:28:16,480 --> 00:28:20,170 Dan kita tidak terlalu peduli. 573 00:28:20,170 --> 00:28:25,540 Jadi mereka adalah hal-hal yang Anda diminta untuk menerapkan untuk ejaan. 574 00:28:25,540 --> 00:28:29,278 Pada tingkat ini, kita akan mendapatkan lebih atau kurang semua psets dilakukan. 575 00:28:29,278 --> 00:28:31,474 >> AUDIENCE: Jadi yang pada dasarnya hanya datang kembali 576 00:28:31,474 --> 00:28:34,852 sebagai salah dieja jika tidak mencocokkan sesuatu dalam kamus? 577 00:28:34,852 --> 00:28:36,060 ROSS RHEINGANS-YOO: Ya, ya. 578 00:28:36,060 --> 00:28:38,964 579 00:28:38,964 --> 00:28:40,880 Dan, ini adalah adaptasi dari masalah ditetapkan 580 00:28:40,880 --> 00:28:43,150 yang meminta Anda untuk melakukan hal itu. 581 00:28:43,150 --> 00:28:46,357 >> AUDIENCE: Mengapa garis minus 1 ada? 582 00:28:46,357 --> 00:28:48,190 ROSS RHEINGANS-YOO: Jadi ketika Anda iterasi 583 00:28:48,190 --> 00:28:50,300 lebih file meminta dengan garis, garis 584 00:28:50,300 --> 00:28:53,900 datang dengan karakter baris baru pada akhir itu-- minus 1 585 00:28:53,900 --> 00:28:55,260 hanya untuk berbelanja mereka off. 586 00:28:55,260 --> 00:28:59,549 Dan ini adalah sangat fleksibel cara pengindeksan ke hal. 587 00:28:59,549 --> 00:29:01,590 Jadi jika Anda memiliki sebuah string, dan Anda ingin, juga aku 588 00:29:01,590 --> 00:29:05,340 akan mulai karakter tiga dan aku akan pergi ke akhir. 589 00:29:05,340 --> 00:29:07,140 3 usus akan melakukannya untuk Anda. 590 00:29:07,140 --> 00:29:10,570 Jika Anda seperti, saya ingin memulai di mulai dan pergi ke terakhir minus 1 591 00:29:10,570 --> 00:29:12,400 karakter, usus minus 1. 592 00:29:12,400 --> 00:29:14,940 Dan jika Anda ingin pergi dari ketiga minus pertama, 593 00:29:14,940 --> 00:29:16,570 maka Anda akan mengatakan 3 minus 1. 594 00:29:16,570 --> 00:29:19,464 595 00:29:19,464 --> 00:29:22,400 >> Selain itu, jika Anda ingin Indeks dalam hal menghitung dari belakang, 596 00:29:22,400 --> 00:29:24,470 Anda hanya indeks dengan angka dikurangi. 597 00:29:24,470 --> 00:29:26,980 Dan karena, di mana C akan meledak atau mungkin 598 00:29:26,980 --> 00:29:31,090 makan Anda memori lain yang tidak memiliki akses ke, mendengar Anda dapat mengatakan minus 1 599 00:29:31,090 --> 00:29:34,104 berarti yang terakhir tapi 1 karakter dalam string. 600 00:29:34,104 --> 00:29:36,950 601 00:29:36,950 --> 00:29:43,590 >> Modul version-- adalah analog ke perpustakaan di C 602 00:29:43,590 --> 00:29:45,119 dan berguna untuk banyak hal. 603 00:29:45,119 --> 00:29:46,910 Banyak hal yang akan suka melakukan dengan Python, 604 00:29:46,910 --> 00:29:50,040 selain sederhana manipulasi variabel, 605 00:29:50,040 --> 00:29:52,290 Anda ingin menghubungkan ke perpustakaan yang lebih besar dengan yang lebih besar 606 00:29:52,290 --> 00:29:55,910 interface dan lebih kemampuan untuk berinteraksi 607 00:29:55,910 --> 00:29:57,195 dengan bagian-bagian lain dunia. 608 00:29:57,195 --> 00:29:58,910 sys adalah salah satu dengan sekelompok alat 609 00:29:58,910 --> 00:30:01,159 yang berguna untuk berinteraksi dengan sistem itu sendiri 610 00:30:01,159 --> 00:30:05,050 dan akan mengimpor seperti sys impor. 611 00:30:05,050 --> 00:30:07,820 >> Ada dokumentasi yang lebih dari itu, yang Anda bisa pergi di sini, 612 00:30:07,820 --> 00:30:11,490 atau Anda bisa menemukan di Google dengan googling Python sys. 613 00:30:11,490 --> 00:30:12,640 Anda mengetik di masukkan. 614 00:30:12,640 --> 00:30:15,140 Link pertama akan menjadi dokumentasi Python 2, 615 00:30:15,140 --> 00:30:19,260 link kedua akan menjadi Python dokumentasi 3. 616 00:30:19,260 --> 00:30:24,830 >> Dan jika kita menulis file yang tampak seperti this-- Jika khususnya, kami 617 00:30:24,830 --> 00:30:27,910 melihat operasi pada argumen baris perintah, 618 00:30:27,910 --> 00:30:30,040 seperti kita belajar untuk melakukannya dengan sangat awal di kelas ini. 619 00:30:30,040 --> 00:30:32,190 Hal ini tidak sulit. Anda bisa keluar argv, 620 00:30:32,190 --> 00:30:34,565 yang merupakan salah satu dari hal-hal yang dilaksanakan oleh sys. 621 00:30:34,565 --> 00:30:37,210 Itu tidak built-in ke paket dasar, tapi sekali lagi, Anda 622 00:30:37,210 --> 00:30:40,080 dapat memperpanjang dengan mengimpor bahwa fungsi dari sys. 623 00:30:40,080 --> 00:30:41,090 Anda akan menyebutnya sys. 624 00:30:41,090 --> 00:30:42,611 apapun. 625 00:30:42,611 --> 00:30:43,360 Berikut ada argv. 626 00:30:43,360 --> 00:30:45,193 Ada sebenarnya tidak ada argc di sys, karena Anda 627 00:30:45,193 --> 00:30:47,880 bisa mendapatkannya dengan mudah dengan memanggil len. 628 00:30:47,880 --> 00:30:55,390 Kami kemudian cetak yang keluar, maka kita berlari pada echo-args.py terminal kami. 629 00:30:55,390 --> 00:30:58,360 Kita kembali array, yang adalah argumen pertama ini. 630 00:30:58,360 --> 00:31:02,240 Sekali lagi, ini adalah argv 0, yang merupakan nama dari hal yang dipanggil. 631 00:31:02,240 --> 00:31:04,870 Jika kita menyebutnya dengan tambahan argumen, kita akan mendapatkan orang-orang kembali. 632 00:31:04,870 --> 00:31:07,687 633 00:31:07,687 --> 00:31:09,770 Ini adalah salah satu cara untuk mendapatkan argumen baris perintah. 634 00:31:09,770 --> 00:31:13,440 Jika Anda ingin bendera di mana Anda menghidupkan hal tertentu atau menimpa 635 00:31:13,440 --> 00:31:16,050 default tertentu, argparse adalah teman Anda. 636 00:31:16,050 --> 00:31:21,550 Dan lagi Anda menemukan online yang di python argparse di Google. 637 00:31:21,550 --> 00:31:24,300 >> Ada beberapa utilitas modul yang Anda menemukan diri Anda menggunakan 638 00:31:24,300 --> 00:31:27,630 dan sekali lagi, jika Anda menghabiskan waktu bahasa ini mengimpor jsons 639 00:31:27,630 --> 00:31:33,300 untuk membaca dan keluar dari json file, tidak rumit. 640 00:31:33,300 --> 00:31:37,139 Anda membuka file, Anda disebut json.load pada file itu dan Anda mendapatkan kembali sesuatu. 641 00:31:37,139 --> 00:31:37,930 Apa hal yang? 642 00:31:37,930 --> 00:31:40,329 Ini adalah objek json. 643 00:31:40,329 --> 00:31:42,370 Dimana json yang memiliki array, Python memiliki array. 644 00:31:42,370 --> 00:31:44,420 Dimana json yang memiliki array asosiatif, Python 645 00:31:44,420 --> 00:31:48,810 kamus, string, dan angka, dan sebagainya. 646 00:31:48,810 --> 00:31:53,560 Anda ingin membuang yang keluar, Anda membuka file baru, Anda menelepon sampah, 647 00:31:53,560 --> 00:31:57,590 dan beban dan kesedihan untuk masuk dan keluar dari string. 648 00:31:57,590 --> 00:32:02,120 >> Demikian pula, acar dipanggil di dasarnya antarmuka yang sama. 649 00:32:02,120 --> 00:32:04,740 Ini sedikit lebih berguna jika Anda membuang benda Python. 650 00:32:04,740 --> 00:32:08,370 Jadi, jika Anda pernah ingin menyimpan versi status 651 00:32:08,370 --> 00:32:11,930 dari variabel untuk masa depan menjalankan program Anda, 652 00:32:11,930 --> 00:32:14,740 acar adalah Python perpustakaan untuk melakukan hal itu. 653 00:32:14,740 --> 00:32:19,140 >> Jika Anda memiliki semacam variabel yang dapat ditulis 654 00:32:19,140 --> 00:32:21,990 dalam kata-kata seperti dan karakter dan bytes-- seperti kamus ini, 655 00:32:21,990 --> 00:32:24,230 kita bisa menulis, kita bisa menuliskannya sebagai 656 00:32:24,230 --> 00:32:26,670 seperti objek json, yang harfiah karakter ini. 657 00:32:26,670 --> 00:32:29,420 Dan maka akan sangat mudah bagi manusia untuk membukanya up-- membuka 658 00:32:29,420 --> 00:32:30,889 dan membacanya. 659 00:32:30,889 --> 00:32:33,180 Jika kita tidak sangat peduli tentang manusia membacanya, 660 00:32:33,180 --> 00:32:38,490 kita bisa paket lebih efisien ke dalam bentuk yang bisa nantinya akan membongkar 661 00:32:38,490 --> 00:32:42,860 atau yang bisa nantinya akan meningkat. 662 00:32:42,860 --> 00:32:46,740 Dan ini menghemat 80% dari ruang yang Anda mungkin benda 663 00:32:46,740 --> 00:32:49,390 mengambil jika Anda menulis mereka keluar tulisan tangan. 664 00:32:49,390 --> 00:32:52,384 >> Anda menelepon acar sangat banyak sama way-- sampah, beban, 665 00:32:52,384 --> 00:32:53,800 dan kemudian Anda mendapatkan hal Anda kembali. 666 00:32:53,800 --> 00:32:56,880 Jadi jika Anda menulis sangat program Python pendek yang 667 00:32:56,880 --> 00:32:59,952 ingin menyelamatkan negara, dan kemudian membaca mereka kembali nanti, hal-hal seperti ini 668 00:32:59,952 --> 00:33:00,660 adalah teman. 669 00:33:00,660 --> 00:33:02,640 Bahwa Anda bisa sangat mudah membuang mereka sebagai json. 670 00:33:02,640 --> 00:33:04,550 Kebanyakan objek Python dapat membuang keluar json yang 671 00:33:04,550 --> 00:33:11,310 jika ada harapan bahwa secara struktural mereka bisa diwakili dengan cara itu. 672 00:33:11,310 --> 00:33:14,410 >> Ini hanya ujung gunung es pada modul yang berguna. 673 00:33:14,410 --> 00:33:19,510 Jadi sys, os, multiprocessing, yang semacam workhorses dasar untuk hal-hal 674 00:33:19,510 --> 00:33:23,120 kita perlu berinteraksi dengan sistem file os., 675 00:33:23,120 --> 00:33:28,764 seperti os.isfile, os.isdirectory, os.makefile, ini adalah teman. 676 00:33:28,764 --> 00:33:30,930 Jika Anda ingin berinteraksi dengan jenis file tertentu, 677 00:33:30,930 --> 00:33:32,190 json, acar, csv. 678 00:33:32,190 --> 00:33:37,160 Jika Anda ingin berinteraksi dengan web halaman, urllib untuk mendapatkan http 679 00:33:37,160 --> 00:33:41,370 halaman. bs4-- BeautifulSoup-- itu parser indah untuk html. 680 00:33:41,370 --> 00:33:47,047 Anda menjalankannya pada html dan Anda mendapatkan objek array bersarang ini sekarang, 681 00:33:47,047 --> 00:33:49,630 yang dapat Anda melintasi lebih mencarimu, dengan seperti hanya mencari 682 00:33:49,630 --> 00:33:52,380 jika, adalah, dalam, yang fantastis. 683 00:33:52,380 --> 00:33:55,920 >> Ada sekelompok paket untuk running-- 684 00:33:55,920 --> 00:33:57,960 untuk melakukan hal-hal terutama Mathy. 685 00:33:57,960 --> 00:34:01,790 Jadi jika Anda ingin berkembang biak, membalikkan, mengubah matriks, 686 00:34:01,790 --> 00:34:05,690 numpy digunakan oleh orang-orang seluruh dunia untuk itu. 687 00:34:05,690 --> 00:34:09,620 scipy bahkan lebih berguna alat ke arah itu. 688 00:34:09,620 --> 00:34:13,980 sklearn-- pembelajaran mesin, pengolahan bahasa alami, 689 00:34:13,980 --> 00:34:17,880 Super barang berguna, mendapat diimplementasikan di Python sepanjang waktu. 690 00:34:17,880 --> 00:34:21,469 >> Dan lagi, mengambil sedikit lebih lama untuk write-- maaf, 691 00:34:21,469 --> 00:34:26,199 Dibutuhkan sedikit lebih lama untuk menjalankan, tapi alasan bahwa insinyur nyata cenderung 692 00:34:26,199 --> 00:34:29,900 Penggunaan Python adalah karena Anda cenderung diblokir pada Anda menulis kode, bukan 693 00:34:29,900 --> 00:34:32,699 dari komputer Anda menjalankan kode. 694 00:34:32,699 --> 00:34:35,860 Jadi jika Anda akan menulis Program, yang banyak orang lain 695 00:34:35,860 --> 00:34:37,699 akan menggunakan selamanya, seperti Linux, Anda 696 00:34:37,699 --> 00:34:41,900 mungkin menulis dalam C. Jika Anda akan menulis mesin komputasi, 697 00:34:41,900 --> 00:34:46,124 Anda mungkin menulis Python jika Anda membutuhkan untuk mengubahnya setiap beberapa bulan. 698 00:34:46,124 --> 00:34:48,540 Beberapa orang akan menulis di C karena mereka seperti itu. 699 00:34:48,540 --> 00:34:51,100 700 00:34:51,100 --> 00:34:54,050 >> Jadi kita lihat sys impor sebagai cara untuk mendapatkan hal-hal 701 00:34:54,050 --> 00:34:57,070 mendapatkan modul ke dalam program Anda. 702 00:34:57,070 --> 00:35:00,370 Anda juga dapat mengimpor sebagai nama panggilan, jika Anda ingin. 703 00:35:00,370 --> 00:35:03,660 Lagi multiprocessing adalah rasa sakit untuk setiap kali mengetikkan, sehingga impor sebagai mp 704 00:35:03,660 --> 00:35:05,900 dan kemudian kapan saja Anda menggunakannya dalam program ini, 705 00:35:05,900 --> 00:35:09,732 Anda akan mengatakan mp.process, atau apa pun. 706 00:35:09,732 --> 00:35:12,670 Jika Anda ingin impor hanya satu hal, 707 00:35:12,670 --> 00:35:19,450 sehingga urllib memiliki hal yang disebut permintaan, sehingga Anda hanya dapat mengimpor itu. 708 00:35:19,450 --> 00:35:22,610 Kemudian, Anda tidak akan memanggil sebagai urllib.request, tetapi hanya sebagai permintaan 709 00:35:22,610 --> 00:35:24,590 dengan sendirinya. 710 00:35:24,590 --> 00:35:30,110 >> Dan Anda dapat mengimpor semua dari modul jika Anda ingin. 711 00:35:30,110 --> 00:35:34,820 Ini kadang-kadang tidak idea-- baik ini biasanya bukan ide yang baik, benar-benar. 712 00:35:34,820 --> 00:35:39,080 Karena Anda very-- karena jika sesuatu dalam modul yang memiliki nama yang Anda 713 00:35:39,080 --> 00:35:41,640 ingin menggunakan tempat lain dalam program Anda, Anda tidak bisa. 714 00:35:41,640 --> 00:35:44,127 >> Dan itu tidak selalu jelas bahwa itu yang terjadi. 715 00:35:44,127 --> 00:35:46,460 Dalam rangka untuk memastikan bahwa apa yang Anda lakukan adalah aman, 716 00:35:46,460 --> 00:35:47,920 Anda perlu membuka modul dan melihat semua 717 00:35:47,920 --> 00:35:50,295 dari nama-nama yang berakhir di there-- semua fungsi, 718 00:35:50,295 --> 00:35:53,010 semua variabel yang hidup di modul itu, 719 00:35:53,010 --> 00:35:57,040 karena Anda membawa semua mereka ke namespace lokal Anda. 720 00:35:57,040 --> 00:35:58,680 >> Jadi orang melakukan hal ini. 721 00:35:58,680 --> 00:36:01,322 Hal ini umumnya direkomendasikan bahwa Anda tidak melakukan hal ini. 722 00:36:01,322 --> 00:36:03,280 Tetapi orang-orang melakukan hal ini semua waktu karena mereka 723 00:36:03,280 --> 00:36:05,180 malas dan tidak ingin mengetikkan mp. 724 00:36:05,180 --> 00:36:06,310 apa-apa, pernah. 725 00:36:06,310 --> 00:36:09,560 726 00:36:09,560 --> 00:36:13,310 >> Semua pembicaraan tentang modul membawa saya sekitar untuk pembicaraan singkat 727 00:36:13,310 --> 00:36:15,930 pada bagaimana Anda merancang program dengan Python. 728 00:36:15,930 --> 00:36:19,860 Langkah pertama adalah untuk memeriksa untuk melihat apakah orang lain telah melakukan hal tersebut, 729 00:36:19,860 --> 00:36:22,160 atau dilakukan 90% dari hal tersebut. 730 00:36:22,160 --> 00:36:26,010 Kemungkinan mereka mungkin memiliki, dan Anda harus pergi mendapatkan hal mereka dan menjalankan itu. 731 00:36:26,010 --> 00:36:28,900 Atau menulis pembungkus di sekitarnya untuk disesuaikan dengan tujuan Anda. 732 00:36:28,900 --> 00:36:31,250 Ini hanya setelah yang memiliki gagal yang sebaiknya Anda kemudian 733 00:36:31,250 --> 00:36:35,529 terus dan write-- mulai memikirkan bagaimana Anda akan menempatkan hal ini bersama-sama. 734 00:36:35,529 --> 00:36:37,320 Ada banyak hal di luar sana, dan itu 735 00:36:37,320 --> 00:36:39,180 salah satu yang paling berguna hal tentang Python. 736 00:36:39,180 --> 00:36:40,930 Seperti bahasa adalah elegan, bahasa 737 00:36:40,930 --> 00:36:43,800 mudah digunakan, tetapi juga karena itu begitu elegan dan mudah digunakan, 738 00:36:43,800 --> 00:36:47,420 orang telah menggunakannya untuk lama waktu dan ada banyak hal 739 00:36:47,420 --> 00:36:52,520 di luar sana bahwa Anda dapat memanfaatkan untuk Anda gunakan sendiri. 740 00:36:52,520 --> 00:36:58,457 >> Jadi aturan terakhir dari Python, seseorang lain telah mungkin ditulis 741 00:36:58,457 --> 00:37:00,290 modul untuk itu, orang lain memiliki sudah 742 00:37:00,290 --> 00:37:02,980 mungkin ditulis perpustakaan untuk itu. 743 00:37:02,980 --> 00:37:06,579 Sebelum Anda mencoba untuk melakukan sesuatu, melihat untuk melihat apakah itu sudah dilaksanakan. 744 00:37:06,579 --> 00:37:07,370 Ini tidak sulit. 745 00:37:07,370 --> 00:37:11,960 Semua modul yang saya memasang sebelumnya, dengan mungkin satu pengecualian, 746 00:37:11,960 --> 00:37:15,220 datang pra-instal di setiap instalasi Python standar. 747 00:37:15,220 --> 00:37:17,769 Dan dengan panggilan untuk mengimpor apa pun, Anda 748 00:37:17,769 --> 00:37:19,852 memiliki semua fungsi yang di ujung jari Anda. 749 00:37:19,852 --> 00:37:24,660 750 00:37:24,660 --> 00:37:28,920 >> Mulai membungkus ini bicara, ada beberapa hal 751 00:37:28,920 --> 00:37:32,770 bahwa saya telah meninggalkan sebagai kotak hitam dan semacam dipoles, 752 00:37:32,770 --> 00:37:37,217 dan ada beberapa putih terletak bahwa saya telah diberitahu bahwa demi kejujuran, 753 00:37:37,217 --> 00:37:39,050 Aku akan setidaknya titik di di sini, bahkan jika saya tidak akan 754 00:37:39,050 --> 00:37:43,980 pergi Super jauh ke semua dari mereka dan penjelasan teknis mereka. 755 00:37:43,980 --> 00:37:46,010 >> Banyak hal-hal yang bahwa saya telah disebut sihir 756 00:37:46,010 --> 00:37:48,980 adalah apa yang akan memanggil orang lain pemrograman berorientasi objek. 757 00:37:48,980 --> 00:37:52,470 Jadi ada banyak things-- sehingga variabel yang sangat sering tidak 758 00:37:52,470 --> 00:37:56,540 byte sederhana duduk di, memori, tetapi sangat rumit 759 00:37:56,540 --> 00:38:01,910 objek yang memiliki internal yang negara tentang fungsi dan banyak 760 00:38:01,910 --> 00:38:05,570 variabel tersembunyi, banyak fungsi tersembunyi, yang 761 00:38:05,570 --> 00:38:09,480 memungkinkan Anda mengubahnya menjadi string, yang memungkinkan Anda iterate atas mereka. 762 00:38:09,480 --> 00:38:12,260 Dan jika Anda writing-- dan alasan bahwa mereka 763 00:38:12,260 --> 00:38:15,710 memiliki semua fungsionalitas yang kaya ini karena people-- 764 00:38:15,710 --> 00:38:17,740 arsitek dari language-- telah pergi 765 00:38:17,740 --> 00:38:22,420 melalui dan untuk setiap standar objek, dimasukkan ke dalam fungsi 766 00:38:22,420 --> 00:38:26,970 mengatakan ini adalah bagaimana hal ini bagaimana ini akan beroperasi 767 00:38:26,970 --> 00:38:28,470 jika seseorang ingin iterate di atasnya. 768 00:38:28,470 --> 00:38:31,240 >> Jadi segala sesuatu yang seseorang mungkin mungkin ingin iterate atas, 769 00:38:31,240 --> 00:38:34,529 telah ditulis dalam logika manual pada bagaimana Anda 770 00:38:34,529 --> 00:38:36,070 seharusnya iterate atas objek. 771 00:38:36,070 --> 00:38:40,274 Segala sesuatu yang Anda mungkin mungkin ingin dibuang ke string telah logika tertulis. 772 00:38:40,274 --> 00:38:43,440 Ini adalah fungsi yang Anda menelepon jika Anda ingin membuang ini untuk string. 773 00:38:43,440 --> 00:38:45,273 Inilah sebabnya mengapa Anda bisa memanggil len pada hal-hal, ini 774 00:38:45,273 --> 00:38:49,900 adalah mengapa Anda dapat memanggil dalam, ini mengapa Anda dapat menghubungi jika di atas segalanya 775 00:38:49,900 --> 00:38:53,490 yang Anda ingin, karena mereka semua membawa dengan mereka, 776 00:38:53,490 --> 00:38:55,380 pengetahuan teknis bagaimana melakukan hal itu. 777 00:38:55,380 --> 00:38:58,170 778 00:38:58,170 --> 00:39:00,432 >> Ini adalah sesuatu yang saya Super tidak akan masuk ke dalam. 779 00:39:00,432 --> 00:39:03,140 Tapi untuk hal dalam daftar adalah halus berbeda dari gaya C untuk loop, 780 00:39:03,140 --> 00:39:06,160 dan Anda dapat membaca semua tentang hal itu pada internet jika Anda tertarik. 781 00:39:06,160 --> 00:39:08,930 Ada sisi gelap untuk semua ini, yang saya sebutkan, 782 00:39:08,930 --> 00:39:10,359 jadi ada dua hal. 783 00:39:10,359 --> 00:39:13,400 Yang pertama adalah bahwa berorientasi obyek ini pemrograman menambahkan banyak overhead 784 00:39:13,400 --> 00:39:16,080 untuk hal-hal acak, sehingga Anda berakhir dengan menggunakan lebih banyak memori; 785 00:39:16,080 --> 00:39:18,640 Anda akhirnya menggunakan sedikit lebih waktu dari yang Anda lakukan sebaliknya. 786 00:39:18,640 --> 00:39:21,300 The other-- tetapi lebih sisi gelap berbahaya untuk ini 787 00:39:21,300 --> 00:39:24,047 adalah, jika hal-hal hanya bertindak seperti Anda ingin mereka 788 00:39:24,047 --> 00:39:27,130 tanpa Anda harus berpikir super keras apakah ini harus menjadi int 789 00:39:27,130 --> 00:39:29,713 atau apakah harus ada float, itu mungkin bahwa di sini 790 00:39:29,713 --> 00:39:34,240 Anda menghasilkan int tapi di sini Anda berpikir, tapi mereka akan always-- maaf, 791 00:39:34,240 --> 00:39:36,555 mungkin bahwa di sini Anda menghasilkan pelampung, 792 00:39:36,555 --> 00:39:39,430 tetapi ketika Anda sampai ke bagian kedua program Anda, Anda berpikir, 793 00:39:39,430 --> 00:39:41,150 oh baik, tetapi mereka akan selalu melewati saya sebuah int. 794 00:39:41,150 --> 00:39:43,608 Dan jika mereka tidak, itu mungkin Anda terjepit di suatu tempat, 795 00:39:43,608 --> 00:39:47,600 jika Anda mencoba untuk menggunakannya untuk indeks ke dalam sebuah array, atau apa pun. 796 00:39:47,600 --> 00:39:51,050 >> Jadi salah satu yang nyata hal berguna tentang C adalah 797 00:39:51,050 --> 00:39:54,219 memaksa Anda untuk berpikir benar-benar keras sebelum Anda membuat any-- 798 00:39:54,219 --> 00:39:56,510 sebelum Anda membawa variabel apa saja menjadi ada, seperti apa 799 00:39:56,510 --> 00:39:58,764 adalah jenis variabel ini. 800 00:39:58,764 --> 00:40:00,680 Dan itu akan memiliki jenis untuk semua waktu. 801 00:40:00,680 --> 00:40:02,410 >> Ini tidak benar Python, dan pada kenyataannya, Anda 802 00:40:02,410 --> 00:40:04,740 can-- jika Anda hanya semacam pergi oleh telinga, 803 00:40:04,740 --> 00:40:07,690 dan Anda membuat beberapa keputusan salah satu cara di satu tempat, 804 00:40:07,690 --> 00:40:09,870 dan beberapa keputusan salah satu cara di tempat lain 805 00:40:09,870 --> 00:40:12,960 tanpa menempatkan barang-barang yang cukup di belakang adegan di tempat lain 806 00:40:12,960 --> 00:40:16,170 untuk menangkap hal-hal dengan benar, Anda bisa mendapatkan beberapa kesalahan yang sangat aneh. 807 00:40:16,170 --> 00:40:19,200 Dan program ini dapat tetap berjalan untuk waktu yang sangat lama, karena itu 808 00:40:19,200 --> 00:40:23,200 melakukan banyak pekerjaan untuk mengatakan, baik Hal ini bisa beroperasi dengan cara ini, 809 00:40:23,200 --> 00:40:25,070 jadi saya akan menjalankan seperti itu. 810 00:40:25,070 --> 00:40:30,300 >> Dan pada kenyataannya, fakta bahwa itu mendorong maju melalui banyak kesalahan kecil 811 00:40:30,300 --> 00:40:33,260 Artinya, sering ketika kesalahan sebenarnya buruk 812 00:40:33,260 --> 00:40:38,720 dan Anda benar-benar ingin memperbaikinya, itu berakhir mil away-- program 813 00:40:38,720 --> 00:40:41,780 akhirnya menghentikan mil jauhnya dari ketika Anda memiliki kesalahan Anda. 814 00:40:41,780 --> 00:40:46,590 Dan satu hal yang kami ingin program yang harus dilakukan, sometimes-- satu hal 815 00:40:46,590 --> 00:40:48,910 bahwa kita ingin program yang harus dilakukan ketika kita sedang debugging 816 00:40:48,910 --> 00:40:54,160 adalah gagal keras dan gagal sangat cepat ketika sesuatu berjalan salah. 817 00:40:54,160 --> 00:40:55,510 >> Python sangat buruk pada saat itu. 818 00:40:55,510 --> 00:40:58,820 Python sangat baik tidak gagal dan bergulir ke depan 819 00:40:58,820 --> 00:41:00,320 melalui hal-hal tak terduga. 820 00:41:00,320 --> 00:41:02,820 Jadi ini berguna ketika Anda sedang menulis program kecil. 821 00:41:02,820 --> 00:41:07,110 Ketika Anda mendapatkan rumit bug kadang-kadang 822 00:41:07,110 --> 00:41:09,300 memakan waktu lama untuk menggoda mereka. 823 00:41:09,300 --> 00:41:12,210 >> Jadi ada sisi gelap untuk semua ini, seperti itu hanya bekerja. 824 00:41:12,210 --> 00:41:13,860 Hanya bekerja seperti yang Anda harapkan untuk. 825 00:41:13,860 --> 00:41:18,320 Kecuali bahwa ketika tidak, Anda berakhir di tempat yang sama sekali berbeda 826 00:41:18,320 --> 00:41:21,530 dan mencoba untuk mencari tahu di mana itu adalah bahwa Anda salah. 827 00:41:21,530 --> 00:41:25,180 >> Pengumpulan sampah is-- sehingga satu hal yang Anda akan melihat 828 00:41:25,180 --> 00:41:28,110 adalah bahwa hal-hal ini yang Aku sudah dibawa ke existence-- 829 00:41:28,110 --> 00:41:34,114 array ini, kamus ini, ini benda, ini files-- pernah mendapatkan dibebaskan. 830 00:41:34,114 --> 00:41:36,030 Tidak ada panggilan untuk bebas dalam pembicaraan ini. 831 00:41:36,030 --> 00:41:40,340 Dan yang berada di C-side, karena kita tidak pernah masuk ke hal-hal. 832 00:41:40,340 --> 00:41:42,220 >> Namun dalam Python-sisi, tidak ada gratis. 833 00:41:42,220 --> 00:41:43,970 Hal mendapatkan secara otomatis dibebaskan ketika Python 834 00:41:43,970 --> 00:41:45,386 berpikir Anda tidak melihat mereka. 835 00:41:45,386 --> 00:41:49,640 Ini benar-benar baik tidak membebaskan hal-hal yang Anda mungkin masih mungkin akan melihat, 836 00:41:49,640 --> 00:41:54,262 tetapi ini berarti bahwa jika Anda akan mengalokasikan hal besar ini, 837 00:41:54,262 --> 00:41:55,970 dan Anda seperti, oh Aku sudah selesai dengan sekarang, 838 00:41:55,970 --> 00:42:00,360 sulit untuk mengatakan Python bahwa Anda selesai dengan sekarang. 839 00:42:00,360 --> 00:42:02,986 >> Anda kadang-kadang dapat mengatur variabel yang menjadi tidak ada, 840 00:42:02,986 --> 00:42:05,110 dan kemudian berharap bahwa akhirnya pengumpul sampah 841 00:42:05,110 --> 00:42:06,720 datang melalui dan membersihkan itu. 842 00:42:06,720 --> 00:42:10,177 Tapi sekali lagi, Anda tidak memiliki kontrol atas itu. 843 00:42:10,177 --> 00:42:13,510 Dan salah satu alasan yang digunakan orang C untuk benar-benar kinerja hal penting, 844 00:42:13,510 --> 00:42:16,570 adalah kemampuan untuk benar-benar tahu kapan memori dialokasikan 845 00:42:16,570 --> 00:42:19,369 dan ketika itu dibebaskan, dan memiliki banyak kontrol atas mengatakan, 846 00:42:19,369 --> 00:42:20,910 Saya tidak menggunakan memori lebih dari yang saya butuhkan. 847 00:42:20,910 --> 00:42:23,632 Yang merupakan sesuatu yang Python tidak terlalu bagus di. 848 00:42:23,632 --> 00:42:25,090 AUDIENCE: Dapatkah saya mengajukan pertanyaan? 849 00:42:25,090 --> 00:42:29,800 Apa yang Anda maksud dengan gagal keras? 850 00:42:29,800 --> 00:42:32,070 >> ROSS RHEINGANS-YOO: Jadi jika sesuatu yang salah 851 00:42:32,070 --> 00:42:34,950 dan Anda berada di debugging modus, Anda akan sangat sering 852 00:42:34,950 --> 00:42:38,510 ingin program Anda untuk memberitahu Anda di mana tepatnya itu beres, 853 00:42:38,510 --> 00:42:42,360 dan tidak hanya diam-diam berhenti berjalan. 854 00:42:42,360 --> 00:42:45,085 Tapi akan Anda benar-benar untuk mencetak segala macam informasi tentang 855 00:42:45,085 --> 00:42:46,972 seperti, di sini adalah ini. 856 00:42:46,972 --> 00:42:53,957 Hal ini terjadi Jika Anda mencetak sebuah wen-- jika Anda menjalankan server-- web 857 00:42:53,957 --> 00:42:55,390 >> AUDIENCE: [tidak terdengar] 858 00:42:55,390 --> 00:42:59,800 >> ROSS RHEINGANS-YOO: Ya, jika Anda menjalankan server web, 859 00:42:59,800 --> 00:43:02,680 kadang-kadang buruk jika Anda selalu membuang kesalahan, 860 00:43:02,680 --> 00:43:04,530 dan kau mengatakan, baik yang tidak bekerja. 861 00:43:04,530 --> 00:43:05,300 Aku akan berhenti. 862 00:43:05,300 --> 00:43:07,680 Aku hanya akan mengabaikan dan terus terjadi. 863 00:43:07,680 --> 00:43:11,260 Karena Anda bisa mendapatkan ratusan kesalahan ini dan tidak melihat mereka. 864 00:43:11,260 --> 00:43:13,910 >> Ini tentu akan berguna untuk tujuan debugging 865 00:43:13,910 --> 00:43:20,327 jika setiap kali server web Anda membuat kesalahan, Anda memiliki catatan tahan lama dari itu. 866 00:43:20,327 --> 00:43:22,910 Mungkin Anda bahkan ingin program untuk berhenti, sehingga catatan-catatan 867 00:43:22,910 --> 00:43:25,471 tidak terkubur di bawah hal. 868 00:43:25,471 --> 00:43:26,970 Tapi sekali lagi, itu dalam mode debugging. 869 00:43:26,970 --> 00:43:31,280 >> Seringkali dalam modus produksi, dunia adalah sedikit berbeda. 870 00:43:31,280 --> 00:43:36,380 Dan di skrip kecil yang aku berjalan, dimana hal yang saya katakan untuk melakukan 871 00:43:36,380 --> 00:43:40,680 mungkin hanya sedikit off dari apa yang saya ingin untuk melakukan, 872 00:43:40,680 --> 00:43:44,010 maka semacam mendorong melalui kesalahan adalah sesuatu yang Anda mungkin ingin. 873 00:43:44,010 --> 00:43:49,410 Dan dalam kasus-kasus, tentu Python benar-benar mendapatkan dimulai nya. 874 00:43:49,410 --> 00:43:54,617 >> Hal terakhir yang saya tidak berbicara di this-- bahwa saya tidak berbicara tentang 875 00:43:54,617 --> 00:43:57,700 tapi dapat benar-benar menyebalkan yang pertama kali Anda memiliki salah satu dari kesalahan ini, 876 00:43:57,700 --> 00:44:00,491 dan yang kedua dan ketiga dan keempat kali Anda memiliki satu kesalahan ini. 877 00:44:00,491 --> 00:44:03,490 Python, saya sebutkan bahwa ia menggunakan ruang putih 878 00:44:03,490 --> 00:44:06,700 untuk memberitahu Anda apa tingkat lekukan dan apa blok fungsional Anda berada di, 879 00:44:06,700 --> 00:44:08,840 memperlakukan tab dan spasi berbeda. 880 00:44:08,840 --> 00:44:12,780 Jadi jika Anda tab selama empat, dan kemudian baris berikutnya memiliki empat ruang, 881 00:44:12,780 --> 00:44:16,910 bahkan jika mereka muncul sebagai jumlah yang sama dalam editor Anda, 882 00:44:16,910 --> 00:44:20,160 Python tidak memperlakukan mereka sama. 883 00:44:20,160 --> 00:44:23,610 >> Bahkan, Python memperlakukan tab dan ruang seperti minyak dan air. 884 00:44:23,610 --> 00:44:25,050 Mereka adalah hal-hal hanya berbeda. 885 00:44:25,050 --> 00:44:27,264 Tidak ada tertentu panjang yang tab adalah, 886 00:44:27,264 --> 00:44:30,180 sehingga tidak seperti tab sama 8 ruang, dan sehingga Anda akan mendapatkan sekitar itu 887 00:44:30,180 --> 00:44:30,860 lewat situ. 888 00:44:30,860 --> 00:44:34,110 Seperti, ketika ia mengatakan, apa yang tingkat ruang putih aku di, 889 00:44:34,110 --> 00:44:37,240 itu sebenarnya mencari pola ruang dan tab. 890 00:44:37,240 --> 00:44:43,050 Dan, cara terbaik untuk menangani hal ini adalah untuk selalu menggunakan spasi sepanjang waktu. 891 00:44:43,050 --> 00:44:47,510 >> Dan pada kenyataannya, di Cloud9 IDE dan CS50 IDE, 892 00:44:47,510 --> 00:44:50,610 menyisipkan tombol Tab Anda empat ruang di sebaliknya 893 00:44:50,610 --> 00:44:53,800 dari tab, yang super berguna. 894 00:44:53,800 --> 00:44:57,074 Meskipun lagi, jika Anda menulis Python Program dengan tab yang akan baik-baik saja, 895 00:44:57,074 --> 00:44:58,990 itu hanya jika seseorang masuk dan mencoba untuk menambahkan 896 00:44:58,990 --> 00:45:02,655 satu baris untuk program Anda yang memiliki empat ruang untuk setiap tab, 897 00:45:02,655 --> 00:45:03,280 itu akan hancur. 898 00:45:03,280 --> 00:45:07,800 Dan itu akan istirahat di jalan yang benar-benar tidak terlihat. 899 00:45:07,800 --> 00:45:12,390 Meskipun kesalahan yang sebenarnya pesan yang melempar 900 00:45:12,390 --> 00:45:15,610 hubungannya dengan baru indent tidak diharapkan di sini, 901 00:45:15,610 --> 00:45:18,700 or-- jika berbicara tentang indentasi dan sepertinya itu salah, 902 00:45:18,700 --> 00:45:22,090 itu mungkin karena ada masalah tab-ruang. 903 00:45:22,090 --> 00:45:24,154 Mereka masih menyebalkan untuk debug. 904 00:45:24,154 --> 00:45:26,070 Seluruh terbesar di bicara ini, yang saya tidak 905 00:45:26,070 --> 00:45:29,740 mendapatkan karena itu benar-benar a, topik halus yang rumit, 906 00:45:29,740 --> 00:45:34,760 dan tidak perlu untuk melakukan hal yang telah kita lakukan sejauh ini, 907 00:45:34,760 --> 00:45:37,140 adalah sebuah konsep yang disebut tupel. 908 00:45:37,140 --> 00:45:41,280 Mereka ada banyak seperti array bahwa Anda tidak dapat memodifikasi. 909 00:45:41,280 --> 00:45:44,700 Mereka terbiasa seluruh tempat karena mereka berguna untuk banyak hal 910 00:45:44,700 --> 00:45:46,300 bahwa array tidak berguna untuk. 911 00:45:46,300 --> 00:45:49,890 >> Tetapi jika Anda ingin membuat sebuah array, dan kemudian berjanji penafsir yang Anda 912 00:45:49,890 --> 00:45:53,140 tidak akan pernah ingin memodifikasi yang thing-- pada kenyataannya, jika Anda ingin memodifikasi, 913 00:45:53,140 --> 00:45:56,800 Anda akan membuat yang baru dengan yang baru nilai dalam itu-- mereka adalah tupel. 914 00:45:56,800 --> 00:45:58,800 Daripada memproduksi mereka dengan tanda kurung persegi, 915 00:45:58,800 --> 00:46:00,341 Anda menghasilkan mereka dengan kurung bulat. 916 00:46:00,341 --> 00:46:05,074 Mengapa Anda akan menggunakan hal-hal ini, adalah sedikit pertanyaan. . 917 00:46:05,074 --> 00:46:06,990 Satu-satunya hal yang saya akan katakan tentang itu adalah Anda 918 00:46:06,990 --> 00:46:10,680 dapat menggunakan tupel sebagai indeks untuk kamus. 919 00:46:10,680 --> 00:46:15,010 Anda tidak dapat menggunakan array sebagai indeks untuk kamus. 920 00:46:15,010 --> 00:46:18,970 Dan mengapa, lagi, teknis dan Aku tidak akan lari ke dalamnya. 921 00:46:18,970 --> 00:46:23,140 >> The pset bahwa saya belum menyentuh di dalam pembicaraan ini pset6. 922 00:46:23,140 --> 00:46:25,837 Jadi di sini adalah bagaimana Anda 'd menerapkan a-- inilah 923 00:46:25,837 --> 00:46:28,140 bagaimana Anda akan menerapkan pset6 di Python. 924 00:46:28,140 --> 00:46:32,680 Mengingat Python siklus desain, hal pertama 925 00:46:32,680 --> 00:46:34,760 yang Anda lakukan ketika Anda program menulis adalah cek 926 00:46:34,760 --> 00:46:38,030 untuk melihat apakah ada orang yang melakukannya sudah. 927 00:46:38,030 --> 00:46:42,152 >> Bahkan, jika Anda ingin untuk serve-- Apache 50 928 00:46:42,152 --> 00:46:44,110 melakukan sekitar ini, kecuali itu tidak datang 929 00:46:44,110 --> 00:46:45,840 standar diinstal pada mesin Linux. 930 00:46:45,840 --> 00:46:50,490 Python tidak, dan Python http server sederhana tidak juga. 931 00:46:50,490 --> 00:46:54,717 Jika Anda pernah pada mesin Linux, atau Cloud9 IDE luar CS50 932 00:46:54,717 --> 00:46:57,550 dan Anda ingin untuk melayani arus ini direktori ke port tertentu, 933 00:46:57,550 --> 00:47:04,610 python-m SimpleHTTPServer pelabuhan menyajikan itu. 934 00:47:04,610 --> 00:47:07,190 Anda juga dapat mengimpor server http sederhana 935 00:47:07,190 --> 00:47:11,240 dan itu punya banyak fungsi jika Anda ingin menyesuaikannya, atau mengubahnya, 936 00:47:11,240 --> 00:47:15,860 atau dijalankan itu-- memanfaatkan itu untuk menjalankan layanan server Anda sendiri. 937 00:47:15,860 --> 00:47:18,032 >> Jadi itulah Python singkatnya. 938 00:47:18,032 --> 00:47:20,280 Dan ini telah CS50. 939 00:47:20,280 --> 00:47:21,980 Terima kasih. 940 00:47:21,980 --> 00:47:23,468