1 00:00:00,000 --> 00:00:05,426 2 00:00:05,426 --> 00:00:06,800 ROSS RHEINGANS-YOO: Hi, tôi là Ross. 3 00:00:06,800 --> 00:00:08,570 Và đây là một hội thảo CS50. 4 00:00:08,570 --> 00:00:12,100 Nó sẽ đưa bạn từ lập trình trong C để lập trình Python. 5 00:00:12,100 --> 00:00:15,120 >> Python là một ngôn ngữ kịch bản. 6 00:00:15,120 --> 00:00:17,870 Đó là phần lớn như C trong cú pháp, mặc dù một số 7 00:00:17,870 --> 00:00:20,390 của các chi tiết kỹ thuật của làm thế nào mà cú pháp được thực thi 8 00:00:20,390 --> 00:00:22,240 là hơi khác nhau. 9 00:00:22,240 --> 00:00:24,780 Đó là chưa mạnh mẽ hơn so với C trong một số cách. 10 00:00:24,780 --> 00:00:28,130 Nó là ít diễn cảm cho nơi chính xác trong máy tính của bạn 11 00:00:28,130 --> 00:00:30,030 bộ nhớ được đặt ra, làm thế nào nó được đặt ra, 12 00:00:30,030 --> 00:00:32,030 khi nó được tự do, và những loại vật. 13 00:00:32,030 --> 00:00:36,150 >> Đó là hữu ích hơn C trong một số cách, bởi vì nó dễ dàng hơn để chương trình. 14 00:00:36,150 --> 00:00:39,920 Đây là ngôn ngữ, một số người, trực quan hơn. 15 00:00:39,920 --> 00:00:44,820 Và thực sự, mục đích là để nó được nhanh hơn để chương trình 16 00:00:44,820 --> 00:00:46,490 và có khả năng chậm hơn để thực thi. 17 00:00:46,490 --> 00:00:48,198 >> Bây giờ nếu bạn suy nghĩ về số lượng thời gian 18 00:00:48,198 --> 00:00:50,514 bạn chi tiêu vào cuối cùng của bạn vấn đề thiết lập bằng văn bản 19 00:00:50,514 --> 00:00:52,430 mã của bạn chống lại các số lượng thời gian bạn dành 20 00:00:52,430 --> 00:00:55,310 về vấn đề cuối cùng của bạn thiết lập thực thi mã của bạn, 21 00:00:55,310 --> 00:00:58,300 bạn tưởng tượng rằng ngôn ngữ đó là nhanh gấp hai lần để viết, 22 00:00:58,300 --> 00:01:02,170 và hai lần như chậm thực hiện, có thể là một cải tiến hơn C trong một số cách. 23 00:01:02,170 --> 00:01:05,730 Chắc chắn khi bạn đang cố gắng để viết chương trình nhỏ để làm những việc nhỏ, 24 00:01:05,730 --> 00:01:08,520 Python là một ngôn ngữ hữu ích của sự lựa chọn. 25 00:01:08,520 --> 00:01:10,620 >> Và vào cuối này hội thảo, tôi hy vọng bạn sẽ 26 00:01:10,620 --> 00:01:12,950 có thể làm cho các sự lựa chọn trong dự án tương lai 27 00:01:12,950 --> 00:01:17,710 về ngôn ngữ là đúng để sử dụng, không phải là ý tưởng 28 00:01:17,710 --> 00:01:21,405 rằng một ngôn ngữ là hơn sửa chữa tất cả các thời gian. 29 00:01:21,405 --> 00:01:23,030 Một vài điều về những gì các buổi hội thảo là. 30 00:01:23,030 --> 00:01:25,910 Hội thảo này không nhằm mục đích dạy cho bạn Python từ đầu. 31 00:01:25,910 --> 00:01:28,310 Python là rất tương tự C, và tôi giả định 32 00:01:28,310 --> 00:01:34,056 rằng bạn là một sinh viên CS50, hoặc một người nào đó với một sự quen thuộc tương tự với C. 33 00:01:34,056 --> 00:01:36,700 >> Nếu bạn là sinh viên CS50 xung quanh vấn đề đặt 6, 34 00:01:36,700 --> 00:01:38,866 như vậy bạn đã nhìn thấy rất nhiều mọi thứ trong C, tôi sẽ cung cấp cho bạn 35 00:01:38,866 --> 00:01:40,740 sự khác biệt lớn, và một số trong những điều 36 00:01:40,740 --> 00:01:42,840 mà làm cho Python khác nhau và đặc biệt và hữu ích, 37 00:01:42,840 --> 00:01:45,256 nhưng tôi sẽ không đi cho những gì một ngôn ngữ lập trình là 38 00:01:45,256 --> 00:01:46,920 và làm thế nào để viết chương trình. 39 00:01:46,920 --> 00:01:49,820 Tuy nhiên, hội thảo này sẽ dạy bạn viết một chương trình Python 40 00:01:49,820 --> 00:01:52,310 nếu bạn là một trong số ít những nhóm. 41 00:01:52,310 --> 00:01:54,820 Một lần nữa chúng ta sẽ xem xét cách bạn sẽ thực hiện psets-- 42 00:01:54,820 --> 00:01:57,550 mà nên là 1-6 trong Python-- và cung cấp con trỏ 43 00:01:57,550 --> 00:02:00,322 đến tài liệu chính thức để tham khảo trong tương lai. 44 00:02:00,322 --> 00:02:03,030 Một điều khác đó là quan trọng về cách nói chuyện này được phân công, 45 00:02:03,030 --> 00:02:05,360 video này sẽ được trực tuyến, lịch sự của CS50, 46 00:02:05,360 --> 00:02:07,550 vì vậy bạn không nên cảm thấy như bạn cần phải ghi chép. 47 00:02:07,550 --> 00:02:11,180 Bạn luôn có thể quay trở lại và nhìn tại nó sau này như một tài liệu tham khảo. 48 00:02:11,180 --> 00:02:13,340 Ngoài ra các slide có sẵn ngay bây giờ 49 00:02:13,340 --> 00:02:16,480 tại trang web này, mà nên đưa bạn làm một doc Google. 50 00:02:16,480 --> 00:02:21,010 Đó là một phiên bản rút gọn nhẹ những gì tôi đang hiển thị trên màn hình. 51 00:02:21,010 --> 00:02:24,850 >> Một điều lưu ý cẩn thận trước khi chúng tôi nhảy vào, Python 3 52 00:02:24,850 --> 00:02:26,700 là một ngôn ngữ khác nhau từ Python 2. 53 00:02:26,700 --> 00:02:30,020 Họ trông rất giống nhau; có khác biệt kỹ thuật rất nhẹ 54 00:02:30,020 --> 00:02:32,530 mà sẽ gây ra các chương trình viết bằng Python 2 55 00:02:32,530 --> 00:02:37,140 không để có thể được thực thi trong môi trường Python 3. 56 00:02:37,140 --> 00:02:41,969 >> Các thiết bị đi kèm với CS50 Python, theo mặc định nó sử dụng Python 2. 57 00:02:41,969 --> 00:02:44,010 Bạn có thể kiểm tra điều này bằng cách gõ vào dòng lệnh của bạn 58 00:02:44,010 --> 00:02:51,310 python --version, mà nên đầu ra 2.7.6 trên thiết bị hiện nay. 59 00:02:51,310 --> 00:02:53,580 Hãy thử Python 3, mà không làm việc trong các thiết bị, 60 00:02:53,580 --> 00:02:58,500 nếu Python mặc định 2.X.Y, hoặc các thiết bị hoặc trên máy của riêng bạn. 61 00:02:58,500 --> 00:03:03,730 Bạn nên thay thế Python 3 bất cứ lúc nào trong buổi nói chuyện này mà tôi viết Python. 62 00:03:03,730 --> 00:03:05,760 Nếu máy tính của bạn là chạy 2 theo mặc định, loại 63 00:03:05,760 --> 00:03:09,770 Python 3 để có thể thực sự theo cùng và thực hiện những điều này. 64 00:03:09,770 --> 00:03:12,280 >> Ngoài ra, tôi sẽ chỉ cho bạn tại nguồn chính thức bây giờ. 65 00:03:12,280 --> 00:03:16,082 docs.python.org/3--~~V cẩn thận rằng đó là một 3 và không một 2-- 66 00:03:16,082 --> 00:03:17,030 có tài liệu tham khảo hữu ích. 67 00:03:17,030 --> 00:03:19,280 Hướng dẫn sẽ đưa bạn qua nhiều những điều tương tự 68 00:03:19,280 --> 00:03:21,460 mà tôi đang làm bây giờ, ngoại trừ ở dạng văn bản. 69 00:03:21,460 --> 00:03:23,725 Tài liệu tham khảo hữu ích như là một tham khảo cho các ngôn ngữ, 70 00:03:23,725 --> 00:03:26,100 và thư viện chuẩn cho phép bạn một số các phần mở rộng 71 00:03:26,100 --> 00:03:27,770 với chức năng bổ sung. 72 00:03:27,770 --> 00:03:31,300 >> Vì vậy, một chương trình Python đầu tiên. 73 00:03:31,300 --> 00:03:34,410 Trên trái chúng ta có tiêu chuẩn C, bên phải, chúng ta có Python. 74 00:03:34,410 --> 00:03:36,780 Bạn có thể nhận ra vấn đề này, đó là 75 00:03:36,780 --> 00:03:40,760 một trong những vấn đề đầu tiên bộ trong CS50, và các 76 00:03:40,760 --> 00:03:42,677 giải quyết nó bằng cách sử dụng giải pháp tương tự. 77 00:03:42,677 --> 00:03:45,010 Bây giờ, lý do mà chúng tôi nhìn vào những cánh 78 00:03:45,010 --> 00:03:46,830 là vì chúng ta có thể nhìn vào sự khác biệt cú pháp. 79 00:03:46,830 --> 00:03:49,580 Một trong những con voi trong phòng mà bạn có thể thấy ngay 80 00:03:49,580 --> 00:03:56,350 off the bat, đó là Python không có Chức năng chính bao bì xung quanh mã. 81 00:03:56,350 --> 00:03:59,170 Vì vậy, trong C, bạn viết một bó file, bạn liên kết chúng lại với nhau, 82 00:03:59,170 --> 00:04:02,590 và các chương trình bắt đầu thực hiện tại điều này được gọi là int main. 83 00:04:02,590 --> 00:04:04,930 >> Trong Python, bạn viết một file bạn, hãy thực hiện các tập tin, 84 00:04:04,930 --> 00:04:07,882 chương trình bắt đầu thực hiện ở phía trên cùng của tập tin. 85 00:04:07,882 --> 00:04:09,590 Vì vậy, nó sẽ bắt đầu ở trên cùng của tập tin 86 00:04:09,590 --> 00:04:11,280 đi xuống cho đến khi nó tìm thấy một cái gì đó khác. 87 00:04:11,280 --> 00:04:14,440 Nếu nó tìm thấy một định nghĩa chức năng, nó sẽ không thực sự thực thi mã, 88 00:04:14,440 --> 00:04:15,940 nó chỉ đơn giản sẽ xác định các chức năng. 89 00:04:15,940 --> 00:04:18,459 Nhưng ở đây, khi lần đầu tiên chương trình là n bằng 10, 90 00:04:18,459 --> 00:04:21,273 điều đầu tiên mà chương trình này sẽ làm là lấy giá trị này là 10 91 00:04:21,273 --> 00:04:24,120 và đặt nó vào một biến gọi là n. 92 00:04:24,120 --> 00:04:27,690 >> Nói về dòng, một trong khác things-- sorry-- này 93 00:04:27,690 --> 00:04:31,040 có nghĩa là chương trình C, bạn sẽ viết chúng, 94 00:04:31,040 --> 00:04:34,899 bạn sẽ làm cho họ, mà sẽ gọi một số lệnh kêu vang, 95 00:04:34,899 --> 00:04:36,690 và sau đó bạn sẽ chạy một kết quả thực thi. 96 00:04:36,690 --> 00:04:41,030 Chương trình Python, bạn chạy văn bản file-- mario.py điều này có thể 97 00:04:41,030 --> 00:04:44,900 được tập tin này mà tôi chỉ thấy you-- bạn sẽ chạy tập tin đó 98 00:04:44,900 --> 00:04:47,450 và bạn sẽ thực hiện, và nội dung của nó 99 00:04:47,450 --> 00:04:50,390 sẽ được thực hiện bởi các thông dịch Python. 100 00:04:50,390 --> 00:04:52,470 Bạn có thể làm điều này trong IDE của bạn. 101 00:04:52,470 --> 00:05:02,260 >> Vì vậy, nếu tôi có một tập tin Hello, mà chỉ đơn giản có nội dung này. 102 00:05:02,260 --> 00:05:04,840 Đây thực sự là Python 2, không Python 3, do đó, không 103 00:05:04,840 --> 00:05:06,600 lo lắng về cú pháp cho doanh nghiệp. 104 00:05:06,600 --> 00:05:14,230 Nhưng tôi sẽ chạy Python, trên hello.py, và nó chạy. 105 00:05:14,230 --> 00:05:18,890 >> Một cách khác mà tôi có thể sử dụng Python Tôi sẽ phải đối phó với quá nhiều trong buổi nói chuyện này, 106 00:05:18,890 --> 00:05:21,840 là nếu tôi chỉ cần gõ Python, nó giọt tôi vào một môi trường nơi 107 00:05:21,840 --> 00:05:24,370 Tôi có thể ăn nó dòng Python bởi dòng. 108 00:05:24,370 --> 00:05:31,260 Vì vậy, ở đây, nếu tôi gõ in không gian 'hello, world'. 109 00:05:31,260 --> 00:05:32,360 Gõ Enter. 110 00:05:32,360 --> 00:05:37,430 Nó sẽ nhổ tôi rằng sao kết quả rằng dòng cá nhân ngay lập tức. 111 00:05:37,430 --> 00:05:38,470 >> Điều này là có thể có ích. 112 00:05:38,470 --> 00:05:40,700 Trong buổi nói chuyện này, tôi sẽ làm những việc trên slide. 113 00:05:40,700 --> 00:05:43,940 Và như vậy bạn sẽ có thể làm theo cùng hoặc là ở đây, hoặc bằng cách viết 114 00:05:43,940 --> 00:05:45,725 tập tin thực tế và sau đó thực hiện chúng. 115 00:05:45,725 --> 00:05:48,340 116 00:05:48,340 --> 00:05:50,995 >> Nhưng, sẽ trở lại này mã, điều khác 117 00:05:50,995 --> 00:05:53,230 mà bạn có thể có noticed-- tốt, có 118 00:05:53,230 --> 00:05:55,980 hai điều mà có lẽ bạn thông báo về các khối. 119 00:05:55,980 --> 00:05:59,280 Việc đầu tiên, chứ không phải trần tục hơn, đó là Python không có dấu chấm phẩy dấu. 120 00:05:59,280 --> 00:06:02,630 >> Dấu chấm phẩy là tùy chọn ở khắp mọi nơi và vô hại ở khắp mọi nơi. 121 00:06:02,630 --> 00:06:03,722 Bạn có thể thêm chúng. 122 00:06:03,722 --> 00:06:06,430 Nó có thể làm cho những người viết Python cho một snicker sống tại bạn 123 00:06:06,430 --> 00:06:08,860 đằng sau lưng của bạn, bởi vì họ không cần thiết. 124 00:06:08,860 --> 00:06:13,497 Họ thường là một dấu chỉ được tổ chức trong từ C. Các nhà thiết kế của ngôn ngữ 125 00:06:13,497 --> 00:06:16,580 cảm thấy rằng nó là rõ ràng hơn theo cách này và rằng nó không cần thiết phải khai báo 126 00:06:16,580 --> 00:06:18,700 mỗi khi bạn kết thúc một dòng. 127 00:06:18,700 --> 00:06:21,799 >> Một điều kỳ lạ về n này là nó không có một loại kèm theo. 128 00:06:21,799 --> 00:06:24,590 Một trong những phần kỳ diệu của Python-- và tôi sẽ gọi nó là ma thuật, 129 00:06:24,590 --> 00:06:26,381 nhưng có rất lý do tại sao kỹ thuật nó 130 00:06:26,381 --> 00:06:28,560 works-- một trong những miếng diệu của Python 131 00:06:28,560 --> 00:06:32,700 là các biến có thể mở rộng hoặc thu nhỏ để chứa bất cứ dữ liệu 132 00:06:32,700 --> 00:06:34,530 loại bạn sẽ muốn họ. 133 00:06:34,530 --> 00:06:35,580 >> Vì vậy, đây là một 10. 134 00:06:35,580 --> 00:06:40,060 Nếu sau đó xuống tôi giao cho này n 0.5, nó sẽ mất rằng 0,5. 135 00:06:40,060 --> 00:06:43,770 Không có vấn đề mà nó là một int đây nổi ở đó, bất cứ điều gì mà sử dụng n này 136 00:06:43,770 --> 00:06:47,057 sẽ, nhiều hơn hoặc ít hơn, có thể chug cùng nếu nhận được một trong những người. 137 00:06:47,057 --> 00:06:49,640 Trừ khi có một số rất thực tế lý do tại sao nó không thể sử dụng các dữ liệu 138 00:06:49,640 --> 00:06:52,170 gõ mà n hiện có, lúc đó nó sẽ nhận được 139 00:06:52,170 --> 00:06:54,490 rúc và ném ra một lỗi, và những loại vật. 140 00:06:54,490 --> 00:06:57,050 >> Nhưng ở đây, Python không thực sự quan tâm những gì 141 00:06:57,050 --> 00:06:59,140 nó là tôi sẽ dính vào trong này câu, như thế, bạn muốn điều này? 142 00:06:59,140 --> 00:06:59,840 Điều này trong đó? 143 00:06:59,840 --> 00:07:00,640 Vâng, đó là loại một điều. 144 00:07:00,640 --> 00:07:01,810 Tôi sẽ gắn bó nó cuối cùng. 145 00:07:01,810 --> 00:07:04,740 Nó sẽ là một vấn đề sau này, nếu là người muốn sử dụng cuối cùng mà 146 00:07:04,740 --> 00:07:05,710 không thể xử lý nó. 147 00:07:05,710 --> 00:07:08,500 Đây là một trong những chính sự khác biệt giữa Python và C 148 00:07:08,500 --> 00:07:10,790 mà làm cho nó dễ dàng để viết chương trình C lớn 149 00:07:10,790 --> 00:07:15,120 và làm cho nó dễ dàng hơn để viết chương trình Python rất nhỏ. 150 00:07:15,120 --> 00:07:19,564 >> Các cú pháp không phải là rất khác nhau ở những gì nó. 151 00:07:19,564 --> 00:07:21,480 Nó hơi khác nhau trong cách nó thể hiện. 152 00:07:21,480 --> 00:07:25,370 Vì vậy, đây là một rất, những gì được gọi là Pythonic, cách viết nó. 153 00:07:25,370 --> 00:07:28,969 cho hàng trong phạm vi (n), đây là loạt các con số từ 0 đến n, 154 00:07:28,969 --> 00:07:31,010 bao gồm trên dưới cùng và độc quyền trên đầu trang. 155 00:07:31,010 --> 00:07:34,790 Vì vậy, nó là từ 0 đến n-1, đó là chính xác những gì các mã C đang làm, 156 00:07:34,790 --> 00:07:38,690 ngoại trừ nó dễ dàng hơn rất nhiều nhìn vào có lẽ. 157 00:07:38,690 --> 00:07:42,710 >> Các khối có liên quan là không đặt ra bởi niềng răng, 158 00:07:42,710 --> 00:07:44,540 thay vì nó đặt ra bởi vết lõm này. 159 00:07:44,540 --> 00:07:47,580 Vì vậy, tất cả những dòng này là bốn không gian trên bên phải, 160 00:07:47,580 --> 00:07:50,410 hoặc như về chiều rộng con voi. 161 00:07:50,410 --> 00:07:54,570 Và đó chính là những người thân mà là sẽ được thực hiện trong này cho. 162 00:07:54,570 --> 00:07:57,020 Nếu tôi mess lên indentation về điều này và tôi 163 00:07:57,020 --> 00:08:01,420 đẩy in mà trở lại lõm ban đầu, 164 00:08:01,420 --> 00:08:04,320 in mà sẽ để lại cho vòng lặp. 165 00:08:04,320 --> 00:08:08,560 Ngược lại với C, nơi đây tôi thực sự cần để di chuyển mà cú đúp khép kín xung quanh. 166 00:08:08,560 --> 00:08:11,820 >> Điều này có nghĩa rằng bạn không nhận lỗi mà nhảy ra ở bạn vì bạn 167 00:08:11,820 --> 00:08:13,580 đặt một nẹp tại chỗ sai. 168 00:08:13,580 --> 00:08:16,460 Nó có nghĩa là bạn nhận được lỗi mà nhảy ra ở bạn vì bạn 169 00:08:16,460 --> 00:08:17,620 thụt vào một sai đường. 170 00:08:17,620 --> 00:08:19,290 Vì vậy, nó làm cho vết lõm siêu cẩn thận. 171 00:08:19,290 --> 00:08:22,123 Hy vọng rằng bạn đã được siêu cẩn thận với indentation của bạn anyway, 172 00:08:22,123 --> 00:08:25,300 và như vậy đây không phải là nhiều hơn nữa của một gánh nặng. 173 00:08:25,300 --> 00:08:28,762 >> Nhưng một nguyên tắc cơ bản cho Python, và chúng tôi sẽ có một vài trong số này 174 00:08:28,762 --> 00:08:30,970 rằng chúng ta sẽ đi qua qua quá trình nói chuyện, 175 00:08:30,970 --> 00:08:33,840 đang cố gắng cú pháp tự nhiên trước khi tìm kiếm bất cứ thứ gì lên. 176 00:08:33,840 --> 00:08:37,610 Vì vậy, cú pháp này, cho con số này trong phạm vi, 177 00:08:37,610 --> 00:08:41,460 là rất khác biệt về phong cách. 178 00:08:41,460 --> 00:08:45,260 Rất nhiều điều trong Python chúng ta sẽ thấy dùng hình thức này. 179 00:08:45,260 --> 00:08:47,420 >> Và do đó, nếu bạn đi lên với một đối tượng mới đó bạn 180 00:08:47,420 --> 00:08:50,870 nghĩ rằng bạn sẽ có thể lặp trên này, ở định dạng này, 181 00:08:50,870 --> 00:08:53,720 Hóa ra nó có thể hỗ trợ định dạng đó. 182 00:08:53,720 --> 00:08:56,990 Chúng tôi sẽ không đi siêu sâu trong những lý do tại sao kỹ thuật đó là sự thật. 183 00:08:56,990 --> 00:09:00,167 >> Nhưng đó là một trực giác hữu ích để có khi bạn đang tiếp cận các chương trình Python, 184 00:09:00,167 --> 00:09:01,750 mà điều này chỉ là đi làm việc. 185 00:09:01,750 --> 00:09:03,020 Thử nó. 186 00:09:03,020 --> 00:09:06,480 Khởi động các dòng lệnh Phiên dịch, xem nếu nó hoạt động, 187 00:09:06,480 --> 00:09:09,827 di chuyển về với mọi thứ, trước khi bạn thậm chí cần phải mở lên Google và nói, 188 00:09:09,827 --> 00:09:11,660 cú pháp cho những gì điều đặc biệt này? 189 00:09:11,660 --> 00:09:14,740 Rất nhiều bạn có thể Python khám phá chỉ bằng cách cố gắng. 190 00:09:14,740 --> 00:09:19,005 >> Điều này nếu là thậm chí nhiều hơn tương tự C thì fors là. 191 00:09:19,005 --> 00:09:20,380 Lưu ý rằng không có dấu ngoặc đơn. 192 00:09:20,380 --> 00:09:23,490 Các dấu ngoặc đơn là, một lần nữa, vô hại nhưng không cần thiết. 193 00:09:23,490 --> 00:09:25,750 Có một dấu hai chấm ở cuối giống như các vòng lặp for, 194 00:09:25,750 --> 00:09:30,800 và một lần nữa, các khối tương đối được thụt vào chứ không phải đặt ra bởi niềng răng. 195 00:09:30,800 --> 00:09:33,080 Khác này là bản gốc mức độ thụt đầu dòng, 196 00:09:33,080 --> 00:09:35,930 và khối có liên quan của nó thụt một lần nữa. 197 00:09:35,930 --> 00:09:41,720 Những công việc chính xác như họ làm trong C. 198 00:09:41,720 --> 00:09:44,520 >> Điều này thực sự là rất nhiều như nhau. 199 00:09:44,520 --> 00:09:49,430 Một lần nữa, in mất một nhân vật tắt của printf Bạn vượt qua một số dây. 200 00:09:49,430 --> 00:09:51,520 Nó chỉ ra chuỗi hoặc có thể được khoanh 201 00:09:51,520 --> 00:09:53,562 bởi dấu ngoặc đơn hoặc dấu ngoặc kép. 202 00:09:53,562 --> 00:09:55,270 Không có sự khác biệt, ngoại trừ bên trong mà 203 00:09:55,270 --> 00:09:57,722 của dấu ngoặc kép duy nhất bạn có thể sử dụng dấu ngoặc kép với từ bỏ, 204 00:09:57,722 --> 00:09:59,430 thay vì phải thoát tất cả chúng. 205 00:09:59,430 --> 00:10:01,480 Và bên trong dấu ngoặc kép, bạn có thể sử dụng dấu ngoặc đơn với từ bỏ 206 00:10:01,480 --> 00:10:02,420 mà không cần phải thoát khỏi chúng. 207 00:10:02,420 --> 00:10:04,253 Nếu bạn muốn kết hợp chúng, bạn có thể chắc chắn 208 00:10:04,253 --> 00:10:06,100 tìm kiếm trực tuyến như thế nào để làm điều đó. 209 00:10:06,100 --> 00:10:09,581 >> Bạn sẽ nhận thấy rằng ở đây, Tôi đã được thông qua vào cuối = điều này. 210 00:10:09,581 --> 00:10:12,580 Đây là một ví dụ về một tùy chọn đối số, đó là một trong những điều 211 00:10:12,580 --> 00:10:14,990 rằng Python hỗ trợ mà làm cho nó khá hữu ích. 212 00:10:14,990 --> 00:10:18,240 Vì vậy, in thực sự có rất nhiều đối số, mà thường 213 00:10:18,240 --> 00:10:20,140 thiết lập để mặc định của họ giá trị, nhưng ở đây tôi đã 214 00:10:20,140 --> 00:10:21,924 quyết định để ghi đè lên một gọi là kết thúc. 215 00:10:21,924 --> 00:10:24,340 Lý do mà tôi phải ghi đè lên nó bằng một chuỗi rỗng 216 00:10:24,340 --> 00:10:26,756 là in trong Python, bởi mặc định, in ra một dòng mới 217 00:10:26,756 --> 00:10:28,630 sau khi điều mà bạn nói với nó quá. 218 00:10:28,630 --> 00:10:31,462 >> Vì vậy, băm này là thực sự đi vào in ra một hash trong một dòng mới. 219 00:10:31,462 --> 00:10:34,670 Và nếu tôi không muốn băm để in ra một dòng mới sau khi nó, sau đó tôi phải nói 220 00:10:34,670 --> 00:10:35,340 không in một. 221 00:10:35,340 --> 00:10:37,980 222 00:10:37,980 --> 00:10:43,690 Nhưng, nhưng vì vậy, một trong những điều cuối cùng mà Chương trình này là mất tích mà người ta là 223 00:10:43,690 --> 00:10:44,960 một bao gồm ở đầu trang. 224 00:10:44,960 --> 00:10:48,120 In được nướng vào Python nên về cơ bản rằng không có tiêu đề hoặc mô-đun 225 00:10:48,120 --> 00:10:49,869 mà bạn cần bao gồm, mặc dù nếu muốn 226 00:10:49,869 --> 00:10:52,029 để bao gồm những thứ khác trong một kịch bản Python, 227 00:10:52,029 --> 00:10:55,320 Tôi sẽ làm điều đó trong một dưới định dạng rất giống nhau những lời chỉ là một chút khác nhau. 228 00:10:55,320 --> 00:10:58,840 229 00:10:58,840 --> 00:11:01,360 >> Tôi đã đề cập rằng chúng ta không cần một chính ở đây, 230 00:11:01,360 --> 00:11:03,372 vì Python bắt đầu thực hiện ở đầu trang. 231 00:11:03,372 --> 00:11:05,080 Nếu tôi muốn để bọc này trong một hàm, tôi 232 00:11:05,080 --> 00:11:07,667 sẽ làm nó như this-- tôi sẽ nói def tên hàm, 233 00:11:07,667 --> 00:11:10,500 đối số có thể đi ở đây và chúng tôi sẽ xem một số những người sau này, đại tràng, 234 00:11:10,500 --> 00:11:13,040 và sau đó một lần nữa, điều này toàn bộ khối đặt ra 235 00:11:13,040 --> 00:11:16,810 là những gì là hoạt động chặn cho chức năng đó. 236 00:11:16,810 --> 00:11:18,560 Vì vậy, đây là định nghĩa của hàm. 237 00:11:18,560 --> 00:11:21,587 Và có một tuyên bố, sau đó xuống ở đây, tôi chỉ có thể gọi hàm. 238 00:11:21,587 --> 00:11:23,920 Và một lần nữa, các chương trình thông dịch viên, bắt đầu từ đầu, 239 00:11:23,920 --> 00:11:25,280 sẽ thấy đây là định nghĩa. 240 00:11:25,280 --> 00:11:27,960 Nó sẽ không thực hiện điều này cho đến khi nó nhận được ở đây, và sau đó nó giống như, oh 241 00:11:27,960 --> 00:11:30,860 bây giờ bạn đã gọi nó, tôi đoán tôi nên thực hiện nó. 242 00:11:30,860 --> 00:11:33,850 >> Một điều đó là rất phổ biến để xem trong file Python, 243 00:11:33,850 --> 00:11:36,700 đặc biệt là các file Python được phát hành ra công chúng 244 00:11:36,700 --> 00:11:41,650 và phát triển tuỳ theo trường và phát triển và duy trì, là một cái gì đó của hình thức này. 245 00:11:41,650 --> 00:11:44,540 Đây là basically-- như vậy bởi vì Python, bạn bắt đầu ở đầu 246 00:11:44,540 --> 00:11:50,310 và sau đó bạn thực hiện xuống phía dưới, Tôi nếu tôi chỉ có Mario gọi ra ở đây, 247 00:11:50,310 --> 00:11:54,190 Sau đó bất cứ lúc nào tôi bao gồm tập tin này trong tập tin khác, bởi vì tôi muốn sử dụng 248 00:11:54,190 --> 00:11:58,580 Mario là chức năng, tập tin khác sẽ cũng có cuộc gọi này để Mario trong đó. 249 00:11:58,580 --> 00:12:01,000 Và khi tôi chạy tập tin đó, nó sẽ gọi Mario. 250 00:12:01,000 --> 00:12:04,520 >> Vì vậy, nó có thể là tôi chỉ muốn chạy này nếu tôi đã thực sự 251 00:12:04,520 --> 00:12:07,290 thực thi tập tin này. 252 00:12:07,290 --> 00:12:11,520 Và vì vậy tôi thể bọc này trong một thành ngữ như thế này, nơi mà tôi nói, 253 00:12:11,520 --> 00:12:14,820 nếu tên của thi này môi trường là chính, 254 00:12:14,820 --> 00:12:16,200 sau đó tôi muốn làm những điều này. 255 00:12:16,200 --> 00:12:18,710 Nếu ai đó có thể use-- bao gồm function-- của tôi 256 00:12:18,710 --> 00:12:22,510 tập tin của tôi, và chỉ để có được truy cập vào các chức năng này 257 00:12:22,510 --> 00:12:25,552 mà không cần phải chạy những điều mà tôi muốn thực hiện trong tập tin này. 258 00:12:25,552 --> 00:12:27,260 Điều này, một lần nữa, tùy chọn nhưng rất phổ biến. 259 00:12:27,260 --> 00:12:30,450 260 00:12:30,450 --> 00:12:33,840 >> Những điều này là entirely-- là chính xác như nhau giữa C và Python, 261 00:12:33,840 --> 00:12:35,100 chắc chắn trong 3. 262 00:12:35,100 --> 00:12:38,610 Tôi nghĩ rằng trong 2, các nhà điều hành bộ phận đôi khi mang đến cho bạn nổi khi 263 00:12:38,610 --> 00:12:41,450 bạn hoạt động trên ints, và một trong hai bạn muốn điều đó hoặc bạn đã không. 264 00:12:41,450 --> 00:12:44,777 Nhưng cộng, trừ, và lần việc chính xác như bạn mong muốn, 265 00:12:44,777 --> 00:12:46,110 ngoại trừ đối với các loại nhẹ hơn. 266 00:12:46,110 --> 00:12:49,740 Vì vậy, bạn có thể nhân thành bè ints, và những loại vật. 267 00:12:49,740 --> 00:12:52,480 >> bộ hoạt động chính xác như nhau. 268 00:12:52,480 --> 00:12:54,310 Bạn có thể sử dụng hai dấu bằng. 269 00:12:54,310 --> 00:12:59,000 inequals-- lớn hơn ít hơn, hơn, những loại things-- 270 00:12:59,000 --> 00:13:02,580 có nghĩa rằng bạn đã quen thuộc với họ. 271 00:13:02,580 --> 00:13:05,770 >> Trường hợp C sử dụng các nhà khai thác, Python sử dụng nhiều hơn một chút tiếng Anh 272 00:13:05,770 --> 00:13:06,390 những người có thể đọc được. 273 00:13:06,390 --> 00:13:09,348 Vì vậy, thay vì hai, ký hiệu, bạn nghĩa đen gõ từ "và", "hoặc," 274 00:13:09,348 --> 00:13:10,740 Hay không." 275 00:13:10,740 --> 00:13:13,420 Giống như trong if-- của bạn trong của bạn câu điều kiện, 276 00:13:13,420 --> 00:13:17,670 chúng ta đã thấy rằng cú pháp này trong C tương ứng với cú pháp này trong Python. 277 00:13:17,670 --> 00:13:21,010 Và có không nhiều khác nhau ở đó, ngoại trừ một chút 278 00:13:21,010 --> 00:13:24,780 các dấu câu quanh hai bên. 279 00:13:24,780 --> 00:13:28,890 Một lần nữa, trong đó C sẽ khác nếu, Python sử dụng elif, 280 00:13:28,890 --> 00:13:33,960 nhưng đây là chủ yếu thay đổi mức độ bề mặt. 281 00:13:33,960 --> 00:13:38,450 >> Lặp đi lặp lại như thế này thường là viết bằng thành ngữ này ở Python. 282 00:13:38,450 --> 00:13:42,350 Bạn có thể sản xuất loại này điều với một vòng lặp trong khi ở bên ngoài 283 00:13:42,350 --> 00:13:46,387 nếu bạn muốn, nhưng bạn chắc chắn không phải. 284 00:13:46,387 --> 00:13:48,970 Và một lần nữa, nếu bạn muốn in ra các phần tử trong một mảng 285 00:13:48,970 --> 00:13:50,560 bạn có thể làm theo cách này. 286 00:13:50,560 --> 00:13:52,927 Một trong những điều thú vị về Python mặc dù, 287 00:13:52,927 --> 00:13:54,760 là bạn không cần sử dụng mô hình này, 288 00:13:54,760 --> 00:13:57,290 và bạn có thể sử dụng một một chút thanh lịch hơn. 289 00:13:57,290 --> 00:13:59,370 Bạn nói cho một trong ary. 290 00:13:59,370 --> 00:14:02,980 >> Vì vậy, thay vì đi đây và chạy trên các chỉ số, 291 00:14:02,980 --> 00:14:05,630 và sau đó kéo ra yếu tố cá nhân, 292 00:14:05,630 --> 00:14:08,644 bạn cho biết cho đến thực sự chỉ chạy qua các phần tử tự. 293 00:14:08,644 --> 00:14:11,060 Và sau đó bất cứ điều gì bạn đang làm trong có thể hoạt động trực tiếp 294 00:14:11,060 --> 00:14:13,260 trên các yếu tố, mà là khá vui vẻ. 295 00:14:13,260 --> 00:14:16,710 Và chúng tôi sẽ see-- chúng ta sẽ sử dụng rằng thành ngữ một lần nữa và một lần nữa 296 00:14:16,710 --> 00:14:18,050 khi chúng tôi đi bộ qua mã. 297 00:14:18,050 --> 00:14:20,091 >> Điều này, một lần nữa, một ví dụ của một cái gì đó mà tôi sẽ 298 00:14:20,091 --> 00:14:23,300 gọi Python ma thuật, mặc dù có lý do rất kỹ thuật tại sao nó hoạt động. 299 00:14:23,300 --> 00:14:26,340 Và có những thứ kỹ thuật cần phải có thật về mảng theo thứ tự 300 00:14:26,340 --> 00:14:28,340 này để làm việc đằng sau hậu trường. 301 00:14:28,340 --> 00:14:31,390 Cái này là hầu hết các loại mà bạn mong muốn làm việc này 302 00:14:31,390 --> 00:14:36,610 đã có điều này thực hiện cho bạn trong các ngôn ngữ được xây dựng trong. 303 00:14:36,610 --> 00:14:40,030 >> Một điều mà nó sẽ được tốt đẹp nếu điều này làm việc trong mọi ngôn ngữ, 304 00:14:40,030 --> 00:14:45,460 nhưng có một số lý do tại sao nó không thể, in chuỗi này lần con số này. 305 00:14:45,460 --> 00:14:48,860 Hóa ra trong Python, điều này không chính xác những gì bạn muốn, mà chỉ là niềm vui, 306 00:14:48,860 --> 00:14:52,840 và có nghĩa là chúng ta có thể thực sự giảm chương trình này, một lần nữa mario.c. 307 00:14:52,840 --> 00:14:57,150 Thay vì lặp rất nhiều, chúng ta có thể chỉ cần nói, tôi muốn có một số số lượng không gian, 308 00:14:57,150 --> 00:15:01,120 Tôi muốn số của băm, và một số hash ở cuối. 309 00:15:01,120 --> 00:15:02,640 Và một lần nữa, chúng tôi sử dụng định dạng này. 310 00:15:02,640 --> 00:15:05,340 >> Dưới đây, chúng tôi đang đi trong một biến theo cách này. 311 00:15:05,340 --> 00:15:08,050 Một lần nữa, chúng tôi không cần phải nói loại biến đó là, 312 00:15:08,050 --> 00:15:11,322 và thời gian duy nhất chúng tôi sẽ nhận được lỗi là tại thời gian chạy. 313 00:15:11,322 --> 00:15:13,030 Khi ai đó cố gắng để vượt qua một cái gì đó trong, 314 00:15:13,030 --> 00:15:14,860 nó sẽ đi vào các chức năng tốt. 315 00:15:14,860 --> 00:15:18,240 Nếu chúng ta nêm ở đây vì đây không phải là điều mà bạn có thể tạo ra các phạm vi trên, 316 00:15:18,240 --> 00:15:22,100 Tôi sẽ nhận được một lỗi thời gian chạy có, và tôi sẽ phải gỡ lỗi nó theo cách đó. 317 00:15:22,100 --> 00:15:25,050 Nhưng trong khi chờ đợi, tôi không có phải rất cẩn thận về những gì 318 00:15:25,050 --> 00:15:32,800 được thông qua tại, miễn là trong thực tế thực hiện tất cả các công trình rất sạch. 319 00:15:32,800 --> 00:15:35,080 >> Tôi thậm chí có thể thực hiện điều này một chút sạch hơn 320 00:15:35,080 --> 00:15:41,770 sử dụng một chức năng được xây dựng đặc biệt trên dây, mà là Căn Phải. 321 00:15:41,770 --> 00:15:45,250 Đây chỉ là một chức năng hữu ích nằm xung quanh thư viện. 322 00:15:45,250 --> 00:15:47,660 Đó là trong các tài liệu hướng dẫn nếu bạn đi và tìm kiếm nó. 323 00:15:47,660 --> 00:15:51,650 Và tôi nói, tôi cũng đang sắp có chuỗi này, một số số băm, 324 00:15:51,650 --> 00:15:56,390 và tôi muốn sang phải biện minh cho pad it-- ra với không gian được chiều dài này. 325 00:15:56,390 --> 00:16:00,584 >> Một lần nữa, điều này là trong tài liệu, trong đó tập us-- 326 00:16:00,584 --> 00:16:03,500 Tôi sẽ thực sự click thông qua these-- mà chúng tôi mang đến tắc thứ hai của chúng tôi 327 00:16:03,500 --> 00:16:06,990 cho Python-- thư viện chuẩn phương pháp chức năng là bạn của bạn. 328 00:16:06,990 --> 00:16:09,880 Và nó thường có giá trị trong khi của bạn đi tìm tôi tự hỏi 329 00:16:09,880 --> 00:16:12,310 nếu có một điều mà chỉ thực hiện điều này. 330 00:16:12,310 --> 00:16:13,830 Có lẽ là. 331 00:16:13,830 --> 00:16:15,990 Nếu bạn muốn pad ra một chuỗi, nếu bạn muốn 332 00:16:15,990 --> 00:16:17,470 muốn lấy lại một nửa của một chuỗi, nếu bạn muốn 333 00:16:17,470 --> 00:16:20,370 muốn tìm kiếm thông qua một chuỗi, nếu bạn muốn đập vỡ một vài điều 334 00:16:20,370 --> 00:16:22,420 cùng với một chuỗi với dấu phẩy giữa chúng, 335 00:16:22,420 --> 00:16:24,640 có thư viện chuẩn chức năng để làm điều này. 336 00:16:24,640 --> 00:16:27,190 >> Và nó làm cho cuộc sống của bạn dễ dàng hơn nếu bạn sử dụng chúng 337 00:16:27,190 --> 00:16:29,240 thay vì lăn ra tất cả mọi thứ trên của riêng bạn 338 00:16:29,240 --> 00:16:31,650 trong năm dòng mã ở đây, năm dòng mã ở đây. 339 00:16:31,650 --> 00:16:34,430 Đó thực sự bắt đầu lúc thêm đến thời gian thực. 340 00:16:34,430 --> 00:16:37,430 >> Một trong những điều thú vị khoảng cách này được gọi là. 341 00:16:37,430 --> 00:16:39,980 Bạn sẽ nhận thấy rằng có một điều dot. 342 00:16:39,980 --> 00:16:43,490 Tôi có một số đối tượng ở bên trái, và sau đó tôi gọi là một chấm một chức năng. 343 00:16:43,490 --> 00:16:49,780 Đây là một trong các mô hình mà Python sử dụng để gắn các phương pháp để các đối tượng. 344 00:16:49,780 --> 00:16:54,410 Chúng tôi sẽ nói về điều này là rất ngắn gọn ở cuối, 345 00:16:54,410 --> 00:16:58,510 nhưng biết rằng cả hai chúng tôi có thể hoạt động trên bằng những việc đó dot điều nói 346 00:16:58,510 --> 00:17:01,690 bất cứ điều gì, hoặc bằng cách gọi một chức năng mà mất 347 00:17:01,690 --> 00:17:04,339 đối tượng và một số đối số khác. 348 00:17:04,339 --> 00:17:07,450 >> Vì vậy, đây là cả hai cách đó điều được thực hiện trong Python. 349 00:17:07,450 --> 00:17:09,780 Và liệu một đặc biệt chức năng được thực hiện 350 00:17:09,780 --> 00:17:14,230 trong phong cách này hay này phong cách là một cái gì đó mà bạn 351 00:17:14,230 --> 00:17:19,990 nên tìm cho đến khi bạn nhận được một hang mà một trong đó là khả năng rơi vào. 352 00:17:19,990 --> 00:17:22,660 Có một ít nhiều gắn kết Triết lý đằng sau Python 353 00:17:22,660 --> 00:17:24,930 mà bạn hấp thụ chủ yếu bằng cách viết rất nhiều trong đó. 354 00:17:24,930 --> 00:17:28,190 Tại một số điểm, mà một trong những một cái gì đó sẽ được thực hiện như 355 00:17:28,190 --> 00:17:29,470 trở nên tự nhiên. 356 00:17:29,470 --> 00:17:32,420 Để bây giờ, nó chỉ là cái gì bạn học hỏi như bạn tìm ra 357 00:17:32,420 --> 00:17:34,140 mỗi thứ riêng lẻ. 358 00:17:34,140 --> 00:17:36,420 >> Vì vậy, tiêu chuẩn thư viện chức năng là bạn của bạn, 359 00:17:36,420 --> 00:17:41,320 và họ cho phép bạn viết điều đó mất nhiều không gian này thực sự trong thời gian ngắn, 360 00:17:41,320 --> 00:17:42,040 thực sự thanh lịch. 361 00:17:42,040 --> 00:17:45,670 Và điều này thực sự có lẽ nhiều hơn dễ đọc, tôi muốn nói, so với các chương trình C 362 00:17:45,670 --> 00:17:46,780 đằng kia. 363 00:17:46,780 --> 00:17:49,730 Không đề cập đến một thực tế là như vậy ngắn bạn có thể phù hợp với cả một con voi 364 00:17:49,730 --> 00:17:52,250 trong không gian mà chúng tôi đã lưu. 365 00:17:52,250 --> 00:17:56,270 >> Một điều khác, đây là một thực hiện của Mario đó là dấu chấm C, mà tôi nghĩ 366 00:17:56,270 --> 00:17:57,890 là ngắn nhất bạn có thể có được nó. 367 00:17:57,890 --> 00:18:00,757 Nó không có int get, nhưng nó cứng mã giá trị của 10 368 00:18:00,757 --> 00:18:02,090 cùng một cách mà một này nào. 369 00:18:02,090 --> 00:18:06,080 Hóa ra rằng đây là một đồng hồ trong lúc 84 nhân vật, trong khi Python là 64. 370 00:18:06,080 --> 00:18:11,490 Và điều này là vô cùng dễ đọc hơn so rác này ở đây. 371 00:18:11,490 --> 00:18:14,610 Vì vậy, Python là hiệu quả hơn trong không gian. 372 00:18:14,610 --> 00:18:17,260 Nó hơi kém hiệu quả trong thời gian, nhưng không nhiều. 373 00:18:17,260 --> 00:18:18,890 >> Danh sách là một điều quan trọng trong Python. 374 00:18:18,890 --> 00:18:21,540 375 00:18:21,540 --> 00:18:24,587 Chúng tôi đã không nhìn thấy họ, nhưng họ hoạt động giống như các mảng làm trong C. 376 00:18:24,587 --> 00:18:27,170 Vì vậy, ở đây, bạn có thể khai báo, bạn có thể chuyển chúng vào một điều. 377 00:18:27,170 --> 00:18:29,810 Bây giờ hình vuông có bằng mảng của những điều này. 378 00:18:29,810 --> 00:18:33,480 Một lần nữa, chúng tôi đã không khai báo là loại, nhưng nếu chúng ta cố gắng sử dụng nó, 379 00:18:33,480 --> 00:18:36,260 bất cứ điều gì mà bạn mong muốn làm việc trên một mảng các số nguyên 380 00:18:36,260 --> 00:18:40,130 là đi làm việc trên một mảng các số nguyên. 381 00:18:40,130 --> 00:18:42,030 >> Đây có phải là một điều mà bạn hoàn toàn không thể 382 00:18:42,030 --> 00:18:47,390 làm trong C, vì bộ nhớ nó là như vậy tay trên, 383 00:18:47,390 --> 00:18:48,950 nhưng là rất dễ dàng để làm trong Python. 384 00:18:48,950 --> 00:18:55,310 Nếu tôi muốn mảng của tôi được lớn hơn, tôi có thể nối thêm một yếu tố để nó và nó là tốt. 385 00:18:55,310 --> 00:18:57,150 >> Điều gì đang xảy ra đằng sau hậu trường? 386 00:18:57,150 --> 00:18:59,150 Thông dịch viên sẽ đi ra và nhận được một số bộ nhớ, 387 00:18:59,150 --> 00:19:00,860 và có thể nó sẽ có được một chút chút về bộ nhớ thêm, 388 00:19:00,860 --> 00:19:03,090 vì vậy tôi không vì vậy tôi không có để realloc mỗi lần. 389 00:19:03,090 --> 00:19:04,897 Nhưng bao nhiêu có nhiều bộ nhớ nó cần? 390 00:19:04,897 --> 00:19:06,730 Đây không phải là quyết định mà bạn phải thực hiện, 391 00:19:06,730 --> 00:19:10,540 đây là những quyết định mà thông dịch viên được đi làm. 392 00:19:10,540 --> 00:19:12,270 >> Ở đây chúng ta thấy phạm vi có thể lấy hai tham số, 393 00:19:12,270 --> 00:19:16,430 nhưng nó vẫn sẽ được bao gồm của đầu vì vậy chúng tôi có thêm 1. 394 00:19:16,430 --> 00:19:21,970 Đây là một thành ngữ, mà là một thậm chí nhiều hơn cách thông minh để viết những thứ như thế này. 395 00:19:21,970 --> 00:19:25,980 Nó được gọi là hiểu danh sách, và ở đây những gì chúng ta đang nói 396 00:19:25,980 --> 00:19:32,560 là tôi muốn đặt trong i bình phương cho mỗi giá trị của tôi trong phạm vi này. 397 00:19:32,560 --> 00:19:35,770 Điều này bên phải có thể là một mảng, và điều này trên bên trái 398 00:19:35,770 --> 00:19:40,740 là bất kỳ chức năng nói riêng vì phải chờ đến tôi như là một biến 399 00:19:40,740 --> 00:19:42,250 và cho tôi ra kết quả một số. 400 00:19:42,250 --> 00:19:43,480 >> Những gì tôi đang đi làm là, Tôi sẽ xây dựng 401 00:19:43,480 --> 00:19:46,200 một mảng đó là tất cả những điều này cho mỗi giá trị trong phạm vi này. 402 00:19:46,200 --> 00:19:48,960 403 00:19:48,960 --> 00:19:55,670 Và đây là siêu thanh lịch, siêu ngắn, và nó rất rõ ràng ý nghĩa của nó. 404 00:19:55,670 --> 00:19:59,190 Đây là một trong những things-- này là một lần nữa, 405 00:19:59,190 --> 00:20:03,860 một of-- rất tiêu biểu cho sự lý do mà những người như Python. 406 00:20:03,860 --> 00:20:05,900 Nếu bạn đam mê lập trình như thế này, sau đó Python 407 00:20:05,900 --> 00:20:07,830 là một ngôn ngữ mà bạn có thể muốn tìm hiểu. 408 00:20:07,830 --> 00:20:10,950 >> Và một lần nữa, có kỹ thuật lý do tại sao các công trình này. 409 00:20:10,950 --> 00:20:14,730 Nhưng theo như chúng tôi đang quan tâm, chúng tôi ít nhiều không quan tâm. 410 00:20:14,730 --> 00:20:18,500 >> Vì vậy, nếu bạn muốn in ra danh sách, một số các thành ngữ cùng hữu ích. 411 00:20:18,500 --> 00:20:20,940 Cho i trong phạm vi này, chúng ta có thể Chỉ số thông qua tất cả những điều 412 00:20:20,940 --> 00:20:23,140 và sau đó in ra tất cả ra. 413 00:20:23,140 --> 00:20:24,650 Và bạn sẽ thấy len ở đây. 414 00:20:24,650 --> 00:20:27,150 Nếu bạn đã bao giờ muốn để có được chiều dài của mảng, đó là 415 00:20:27,150 --> 00:20:31,150 rất dễ dàng trong Python, nó rất khó trong C. 416 00:20:31,150 --> 00:20:33,720 Điều này sẽ in ra chính xác những gì bạn mong đợi nó đến. 417 00:20:33,720 --> 00:20:36,986 Chúng tôi cũng có thể, như chúng ta đã thấy trước đây, duyệt qua các phần tử trong mảng 418 00:20:36,986 --> 00:20:39,860 trực tiếp, và sau đó chỉ cần nói về họ, hơn là có các chỉ số 419 00:20:39,860 --> 00:20:43,190 trở lại vào mảng mỗi lần. 420 00:20:43,190 --> 00:20:45,990 >> Và đây là một thứ mà bạn có thể làm. 421 00:20:45,990 --> 00:20:49,984 Vì vậy, trong C, nếu bạn hỏi một cái gì đó như thế này, bản in sẽ nói, 422 00:20:49,984 --> 00:20:51,150 đó là một mảng các số nguyên. 423 00:20:51,150 --> 00:20:53,456 Đó chắc chắn không phải là một chuỗi, tôi không thể in nó. 424 00:20:53,456 --> 00:20:54,830 Python nhiều hay ít không quan tâm. 425 00:20:54,830 --> 00:20:57,496 Nó giống như là có một cách mà tôi có thể tắt tính năng này trong một chuỗi? 426 00:20:57,496 --> 00:20:58,500 Vâng, tôi sẽ làm điều đó. 427 00:20:58,500 --> 00:21:01,600 Và vì vậy tôi sẽ chỉ in mà ra. 428 00:21:01,600 --> 00:21:03,640 Điều này có nghĩa rằng bạn có thể làm những việc like-- những 429 00:21:03,640 --> 00:21:06,530 là hầu hết các phần cứng của trò chơi của lăm, bằng văn bản 430 00:21:06,530 --> 00:21:08,930 rất ngắn gọn trong Python. 431 00:21:08,930 --> 00:21:11,320 >> Bạn sẽ thấy rằng có một chút of-- đây 432 00:21:11,320 --> 00:21:14,441 Tôi đã bỏ một số nguyên cho một chuỗi, và tôi phải làm điều đó bằng tay. 433 00:21:14,441 --> 00:21:16,190 Và tôi sẽ bổ sung thêm nó vào chuỗi khác, 434 00:21:16,190 --> 00:21:17,590 hoặc Python bị nhầm lẫn. 435 00:21:17,590 --> 00:21:19,840 Nhưng cho dù khi bạn đang thêm một chuỗi số nguyên, 436 00:21:19,840 --> 00:21:22,630 tôi cho rằng để có được một số nguyên lưng hoặc một chuỗi trở lại? 437 00:21:22,630 --> 00:21:24,480 Nhưng một lần nữa, nếu bạn chỉ gọi str vào một điều, 438 00:21:24,480 --> 00:21:27,240 và nó có thể ở bất kỳ thể thế giới được chuyển đổi thành một chuỗi, 439 00:21:27,240 --> 00:21:30,390 nó có thể sẽ được chuyển đổi thành một chuỗi. 440 00:21:30,390 --> 00:21:33,120 >> Ở đây, chúng ta thấy sử dụng lồng nhau hiểu danh sách 441 00:21:33,120 --> 00:21:38,690 bên trái, một số chỉ mục, trong đó là chính xác như bạn muốn được sử dụng nó, 442 00:21:38,690 --> 00:21:40,060 và một số in ra của sự vật. 443 00:21:40,060 --> 00:21:42,560 Một lần nữa, chúng tôi đã xác định một số chức năng và chúng tôi sẽ gọi họ xuống 444 00:21:42,560 --> 00:21:45,820 trong chính khi chúng ta thực sự có được các tập tin. 445 00:21:45,820 --> 00:21:52,004 trở lại hoạt động chính xác như bạn muốn mong đợi từ làm việc với C. Tìm, 446 00:21:52,004 --> 00:21:54,420 chúng ta có thể thiết lập những thứ như this-- đây là danh sách hiểu 447 00:21:54,420 --> 00:21:59,245 có chuyển nhượng cho một biến, và chúng tôi thực sự có thể làm điều đó dễ dàng hơn. 448 00:21:59,245 --> 00:22:01,870 Chúng tôi không cần phải viết tìm kiếm, vì được xây dựng trong các ngôn ngữ 449 00:22:01,870 --> 00:22:04,230 là nếu điều này là trong mảng này. 450 00:22:04,230 --> 00:22:05,680 Return true, khác trả về false. 451 00:22:05,680 --> 00:22:08,830 Vì vậy, đó là toàn bộ của find. 452 00:22:08,830 --> 00:22:12,230 >> Toàn bộ các loại liên quan đến việc gọi điện thoại sắp xếp, 453 00:22:12,230 --> 00:22:15,462 mà is-- có hiện thực điều này được xây dựng vào các thư viện C nhất định. 454 00:22:15,462 --> 00:22:17,170 Nếu bạn muốn điều này loại về phía sau, bạn 455 00:22:17,170 --> 00:22:20,450 có thể ghi đè tùy chọn này lập luận ngược lại với một sự thật. 456 00:22:20,450 --> 00:22:23,350 457 00:22:23,350 --> 00:22:27,860 Và nếu bạn muốn sắp xếp trên dây, đó là xây dựng-in là tốt. 458 00:22:27,860 --> 00:22:31,950 >> Vì vậy, đây không phải là để nói rằng đây là những những điều mà bạn cần phải làm mỗi ngày, 459 00:22:31,950 --> 00:22:34,280 nhưng ý tưởng là điều này là triết lý của Python, 460 00:22:34,280 --> 00:22:37,530 rằng tất cả những điều mà bạn muốn loại muốn làm đều được tích hợp. 461 00:22:37,530 --> 00:22:42,410 Và hầu hết các chức năng tiêu chuẩn, vì vậy loại, chiều dài, bất cứ điều gì, 462 00:22:42,410 --> 00:22:44,380 hỗ trợ đầu vào logic hợp lý nhất. 463 00:22:44,380 --> 00:22:49,020 Bạn gọi len vào một mảng cùng cách bạn gọi len vào một chuỗi. 464 00:22:49,020 --> 00:22:55,785 Bạn bạn multiply-- sắp xếp chuỗi giống như cách bạn sắp xếp mảng. 465 00:22:55,785 --> 00:22:58,930 466 00:22:58,930 --> 00:23:00,740 >> Hầu hết các chức năng tiêu chuẩn mà người dân xây dựng, 467 00:23:00,740 --> 00:23:03,000 và hầu hết các bên thứ ba thư viện mà mọi người 468 00:23:03,000 --> 00:23:06,980 xây dựng, bởi vì họ đang thi đua các thiết kế của các thư viện chuẩn, 469 00:23:06,980 --> 00:23:10,190 có thể được gọi là trên tất cả mọi thứ mà bạn như thế, tại sao không này chỉ làm việc, 470 00:23:10,190 --> 00:23:12,800 C. Nhiều hơn hoặc ít hơn, nó sẽ làm việc trong Python 471 00:23:12,800 --> 00:23:15,930 bởi vì mọi người làm việc phía sau để con số ra một điều là và sau đó hoạt động 472 00:23:15,930 --> 00:23:17,510 thích hợp vào nó. 473 00:23:17,510 --> 00:23:22,760 Vì vậy, một lần nữa, nền tảng kỹ thuật, nhưng nó làm cho cuộc sống của chúng tôi dễ dàng hơn như lập trình. 474 00:23:22,760 --> 00:23:26,820 >> Vì vậy, đây là tập tin I / O. nộp I / O đã có rất nhiều những điều nhỏ mà làm cho nó phức tạp, 475 00:23:26,820 --> 00:23:29,890 và do đó, có nguồn tài nguyên trực tuyến, nhưng trong một nutshell, 476 00:23:29,890 --> 00:23:33,010 bạn gọi mở vào một tập tin đặt tên với một kiểu cụ thể. 477 00:23:33,010 --> 00:23:37,640 Vì vậy đó là đọc, đọc và viết, viết hoặc gắn thêm. 478 00:23:37,640 --> 00:23:41,790 Bạn đọc một số lượng nhất định nhân vật ra ngoài và bạn in những, 479 00:23:41,790 --> 00:23:42,595 bạn sẽ nhận được Hello! 480 00:23:42,595 --> 00:23:43,970 Ý tôi là, như tập tin này có Hello! 481 00:23:43,970 --> 00:23:46,480 Trong đó, gọi để đọc, và những gì bạn sẽ nhận được trở lại 482 00:23:46,480 --> 00:23:49,520 là một chuỗi trong đó có tất cả của phần còn lại của mảng, 483 00:23:49,520 --> 00:23:50,860 hoặc tất cả các phần còn lại của tập tin. 484 00:23:50,860 --> 00:23:53,805 485 00:23:53,805 --> 00:23:56,055 Nếu bạn gọi đọc một lần nữa, bạn đang ở phần cuối của tập tin, 486 00:23:56,055 --> 00:23:58,138 và do đó bạn không nhận được bất cứ điều gì và vì vậy bạn sẽ đóng cửa. 487 00:23:58,138 --> 00:24:02,510 Lại nữa, này là .close hơn đóng tập tin, vì nó sẽ là trong C. 488 00:24:02,510 --> 00:24:07,190 Đây là nhiều hơn hoặc ít hơn vì f là một điều, và bạn muốn cho e để đóng. 489 00:24:07,190 --> 00:24:12,092 Nhưng tập tin cơ bản I / O không phải là đặc biệt phức tạp. 490 00:24:12,092 --> 00:24:15,300 Một lần nữa, nếu bạn muốn mở một tập tin, nếu bạn muốn đọc một dòng cụ thể, 491 00:24:15,300 --> 00:24:17,870 bạn có thể nhận ra đặc biệt line-- có built-in cho điều đó. 492 00:24:17,870 --> 00:24:19,995 Nếu bạn muốn viết một điều, bạn có thể viết này. 493 00:24:19,995 --> 00:24:23,412 Nếu bạn muốn viết ra cá nhân cắn, bạn có thể viết những. 494 00:24:23,412 --> 00:24:25,620 Và nếu bạn muốn để lặp qua các đường dây của một tập tin 495 00:24:25,620 --> 00:24:29,557 một cá nhân, chúng tôi đã làm trong một mảnh từ một vài tuần trước đây, bạn có thể làm điều đó với. 496 00:24:29,557 --> 00:24:32,140 Một lần nữa, hầu hết các đối tượng mà bạn muốn thích để có thể lặp qua 497 00:24:32,140 --> 00:24:33,780 hỗ trợ iterating qua chúng. 498 00:24:33,780 --> 00:24:37,430 Trong Trăn, một tập tin có lẽ là một điều mà Tôi muốn để lặp qua từng dòng. 499 00:24:37,430 --> 00:24:39,138 Nếu nó là một từ điển của lời nói và tôi 500 00:24:39,138 --> 00:24:42,181 cố gắng để có được những cá nhân Nói cách ra ngoài, sau đó, trong vòng lặp này, 501 00:24:42,181 --> 00:24:44,180 dòng nó sẽ là mỗi từ trong lượt và điều này 502 00:24:44,180 --> 00:24:47,880 sẽ được thực hiện cho tất cả các dòng trong các tập tin cho đến cuối tập tin. 503 00:24:47,880 --> 00:24:52,280 Và một lần nữa, nếu tôi in ra đường, các đường đến với dòng mới, 504 00:24:52,280 --> 00:24:54,740 vì vậy tôi đang thiết lập cuối cùng sao để một điều như thế này. 505 00:24:54,740 --> 00:24:56,580 Sau đó tôi nhận được nội dung của các tập tin của tôi. 506 00:24:56,580 --> 00:25:03,610 507 00:25:03,610 --> 00:25:07,480 >> Điều thứ hai mà hoạt động trong một số cách như danh sách, và trong một số cách 508 00:25:07,480 --> 00:25:11,870 như một cái gì đó đáng kể quyền lực hơn, 509 00:25:11,870 --> 00:25:16,170 những bộ từ điển, mà là thực sự mát mẻ để sử dụng, nhưng về cơ bản băm 510 00:25:16,170 --> 00:25:17,670 bảng trong ngụy trang. 511 00:25:17,670 --> 00:25:23,330 Bạn tạo ra một cách sử dụng chính xác hai nhân vật, mà là awesome 512 00:25:23,330 --> 00:25:25,959 nếu bạn đã cố gắng để thực hiện bảng băm cho bộ vấn đề của bạn, 513 00:25:25,959 --> 00:25:27,250 bạn biết nhiều nỗi đau mà có thể. 514 00:25:27,250 --> 00:25:29,390 Nhưng người đã làm được nó, và thực hiện nó rất tốt, 515 00:25:29,390 --> 00:25:32,260 mà bạn không cần phải lo lắng về điều đó nữa. 516 00:25:32,260 --> 00:25:35,180 >> Sau đó, bạn có thể chèn những điều cá nhân. 517 00:25:35,180 --> 00:25:38,110 Tables-- băm hoặc các từ điển không đặc biệt 518 00:25:38,110 --> 00:25:40,240 quan tâm những gì bạn đang lưu trữ trong đó. 519 00:25:40,240 --> 00:25:44,210 Vì vậy, nếu một số mục là những con số, và một số mục là danh sách, 520 00:25:44,210 --> 00:25:47,360 nếu một số mục những bộ từ điển khác, và một số mục là chuỗi, 521 00:25:47,360 --> 00:25:49,930 Python không thực sự quan tâm nhiều. 522 00:25:49,930 --> 00:25:53,460 >> Một lần nữa, nếu bạn đi vào nó mong đợi một chuỗi và những gì bạn nhận được trở lại 523 00:25:53,460 --> 00:25:56,269 là một mảng, đó là vấn đề của bạn. 524 00:25:56,269 --> 00:25:58,810 Và có lẽ đó là lỗi của bất cứ ai nghĩ rằng nó đã được đưa mọi thứ 525 00:25:58,810 --> 00:26:00,476 trong từ điển, có lẽ đó là bạn. 526 00:26:00,476 --> 00:26:02,350 Nếu đó là một người nào đó khác, hy vọng họ 527 00:26:02,350 --> 00:26:04,520 cư xử rất tốt về những gì đã được đi vào từ điển 528 00:26:04,520 --> 00:26:07,420 và không để lại bất kỳ khó khăn để bạn có thể rơi vào. 529 00:26:07,420 --> 00:26:10,890 >> Nhưng các chức năng tiêu chuẩn sẽ cung cấp cho bạn mọi thứ trở lại cư xử tốt. 530 00:26:10,890 --> 00:26:13,500 Vì vậy, họ nói lợi nhuận này sao một từ điển của chuỗi, 531 00:26:13,500 --> 00:26:15,860 sau đó tất cả mọi thứ bạn đang đi để có được ra khỏi là một chuỗi. 532 00:26:15,860 --> 00:26:20,710 Nếu bạn làm một số điều này và nó chuyến đi bạn lên, tốt, có thể có trong bạn. 533 00:26:20,710 --> 00:26:25,542 Python chắc chắn mang lại cho bạn đủ dây thừng để treo mình, nếu bạn muốn. 534 00:26:25,542 --> 00:26:28,250 Bây giờ chúng ta có thể in ra cá nhân phần tử này và trả về này 535 00:26:28,250 --> 00:26:29,935 chính xác những gì bạn mong muốn. 536 00:26:29,935 --> 00:26:32,810 Chính xác những gì bạn mong muốn, tôi đoán, là một cụm từ mà tôi đang sử dụng rất nhiều, 537 00:26:32,810 --> 00:26:35,070 nhưng đó là nhiều hay ít như thế nào Python hoạt động. 538 00:26:35,070 --> 00:26:39,880 Nếu bạn đòi hỏi một điều mà không phải là nó, Python sẽ ném ra một lỗi 539 00:26:39,880 --> 00:26:43,194 và nó sẽ bỏ bạn ra khỏi bất cứ chương trình bạn đang ở. 540 00:26:43,194 --> 00:26:45,360 Nó thực sự sẽ in ra thêm thông tin hơn, 541 00:26:45,360 --> 00:26:49,110 nó sẽ chỉ you-- nó sẽ thấy thêm một dòng, và như vậy. 542 00:26:49,110 --> 00:26:52,190 >> Và, một lần nữa, có lẽ chúng ta muốn để lặp qua các từ điển 543 00:26:52,190 --> 00:26:54,410 và tìm thấy tất cả những gì trong đó. 544 00:26:54,410 --> 00:26:57,440 Ở đây chúng ta lặp qua hai việc cùng một lúc. 545 00:26:57,440 --> 00:27:03,040 Và vì vậy chúng tôi sẽ làm điều đó với một khoá, giá trị, nhưng sau đó in ra tất cả các. 546 00:27:03,040 --> 00:27:06,300 >> Và nếu chúng ta muốn cast-- nếu chúng ta thực sự chạy này, 547 00:27:06,300 --> 00:27:10,840 chúng ta sẽ có một số rắc rối vì on-- khi chúng tôi đã đi với David, 548 00:27:10,840 --> 00:27:13,920 nó không thể add-- nếu chúng ta không bỏ nó vào một chuỗi đầu tiên, 549 00:27:13,920 --> 00:27:17,802 chúng tôi không thể thêm vào mảng đó các chuỗi vào một chuỗi. 550 00:27:17,802 --> 00:27:19,760 Nhưng nếu chúng ta bỏ nó vào một chuỗi, chúng ta có được một cái gì đó 551 00:27:19,760 --> 00:27:22,590 như thế này, đó là có thể những gì chúng ta muốn đọc. 552 00:27:22,590 --> 00:27:27,000 553 00:27:27,000 --> 00:27:30,500 >> Và đây là Speller. 554 00:27:30,500 --> 00:27:32,460 Chúng tôi chỉ cần đọc trong sự vật. 555 00:27:32,460 --> 00:27:35,770 Vì vậy, chúng ta có thể đọc trong từ riêng lẻ như đường. 556 00:27:35,770 --> 00:27:38,240 Chúng tôi chop off cuối cùng điều, do đại tràng trừ đi 1 557 00:27:38,240 --> 00:27:41,651 chomps tắt điều cuối cùng mà we-- các ký tự cuối cùng của một chuỗi. 558 00:27:41,651 --> 00:27:42,150 Chúng tôi sẽ nói. 559 00:27:42,150 --> 00:27:44,730 OK, mỗi một trong số những người được đưa vào từ điển này, 560 00:27:44,730 --> 00:27:45,810 lập bản đồ đến một giá trị là 1. 561 00:27:45,810 --> 00:27:48,006 Chúng tôi không đặc biệt quan tâm về điều đó, 562 00:27:48,006 --> 00:27:51,130 nhưng nó chỉ có thể nói, oh well, điều này tôi sẽ đặt trong từ điển. 563 00:27:51,130 --> 00:27:53,182 Bởi vì sau những gì chúng tôi sẽ làm là chúng tôi 564 00:27:53,182 --> 00:27:55,390 sẽ nói, tốt, nếu nó trong từ điển ở tất cả. 565 00:27:55,390 --> 00:27:57,650 >> Một lần nữa, việc kiểm tra này cho thành viên là lên điều hành 566 00:27:57,650 --> 00:28:00,940 sử dụng một cách hoàn toàn khác nhau thuật toán hơn là nó sẽ trong một danh sách, 567 00:28:00,940 --> 00:28:05,709 nhưng chúng ta gọi nó theo cùng một cách, mà là một số trong đó lớp vỏ đường Python 568 00:28:05,709 --> 00:28:07,250 điều để chúng dễ dàng hơn để sử dụng. 569 00:28:07,250 --> 00:28:10,230 Và một lần nữa, chúng tôi đã nhìn thấy những điều như thế này trước đây. 570 00:28:10,230 --> 00:28:12,940 Điều này về cơ bản là tìm, hoặc nó chính xác cú pháp tương tự 571 00:28:12,940 --> 00:28:16,480 như tìm thấy, nhưng đang hoạt động trên một cấu trúc hoàn toàn khác nhau. 572 00:28:16,480 --> 00:28:20,170 Và chúng tôi không đặc biệt quan tâm. 573 00:28:20,170 --> 00:28:25,540 Vì vậy, đó là những điều mà bạn được yêu cầu thực hiện cho Speller. 574 00:28:25,540 --> 00:28:29,278 Với tốc độ này, chúng ta sẽ nhận được nhiều hơn hoặc ít hơn tất cả các psets thực hiện. 575 00:28:29,278 --> 00:28:31,474 >> Đung Vì vậy mà về cơ bản chỉ trở lại 576 00:28:31,474 --> 00:28:34,852 như đánh vần sai nếu nó không phù hợp với điều gì đó trong từ điển? 577 00:28:34,852 --> 00:28:36,060 ROSS RHEINGANS-YOO: Vâng, vâng. 578 00:28:36,060 --> 00:28:38,964 579 00:28:38,964 --> 00:28:40,880 Và như vậy, đây là một thích ứng của một vấn đề đặt 580 00:28:40,880 --> 00:28:43,150 mà yêu cầu bạn làm chính xác điều đó. 581 00:28:43,150 --> 00:28:46,357 >> Đung Tại sao các dòng trừ 1 có? 582 00:28:46,357 --> 00:28:48,190 ROSS RHEINGANS-YOO: Vì vậy, khi bạn đang iterating 583 00:28:48,190 --> 00:28:50,300 lên một tập tin yêu cầu bằng đường nét, các đường 584 00:28:50,300 --> 00:28:53,900 đi kèm với một ký tự dòng mới vào cuối it-- trừ đi 1 585 00:28:53,900 --> 00:28:55,260 để mua sắm chỉ là những người ra. 586 00:28:55,260 --> 00:28:59,549 Và đây là một linh hoạt đặc biệt cách đánh chỉ mục vào thứ. 587 00:28:59,549 --> 00:29:01,590 Vì vậy, nếu bạn có một chuỗi, và bạn muốn, cũng tôi 588 00:29:01,590 --> 00:29:05,340 sẽ bắt đầu từ nhân vật ba và tôi sẽ đi đến cùng. 589 00:29:05,340 --> 00:29:07,140 3 đại tràng sẽ làm điều đó cho bạn. 590 00:29:07,140 --> 00:29:10,570 Nếu bạn giống như, tôi muốn bắt đầu tại bắt đầu và đi đến trừ đi 1 cuối cùng 591 00:29:10,570 --> 00:29:12,400 nhân vật, đại tràng trừ đi 1. 592 00:29:12,400 --> 00:29:14,940 Và nếu bạn muốn đi từ thứ ba để trừ đi đầu tiên, 593 00:29:14,940 --> 00:29:16,570 sau đó bạn muốn nói 3 trừ đi 1. 594 00:29:16,570 --> 00:29:19,464 595 00:29:19,464 --> 00:29:22,400 >> Ngoài ra, nếu bạn muốn đánh chỉ mục vào những thứ kể từ phía sau, 596 00:29:22,400 --> 00:29:24,470 bạn chỉ cần chỉ số với số trừ. 597 00:29:24,470 --> 00:29:26,980 Và bởi vì, trong đó C sẽ phát nổ hoặc có thể 598 00:29:26,980 --> 00:29:31,090 ăn bạn nhớ khác mà bạn không có truy cập vào, bạn có thể nghe nói trừ đi 1 599 00:29:31,090 --> 00:29:34,104 có nghĩa là cuối cùng nhưng 1 ký tự trong chuỗi. 600 00:29:34,104 --> 00:29:36,950 601 00:29:36,950 --> 00:29:43,590 >> Các Module version-- là tương tự với các thư viện trong C 602 00:29:43,590 --> 00:29:45,119 và có ích cho rất nhiều thứ. 603 00:29:45,119 --> 00:29:46,910 Có rất nhiều điều bạn muốn muốn làm trong Python, 604 00:29:46,910 --> 00:29:50,040 ngoài đơn giản thao tác của các biến, 605 00:29:50,040 --> 00:29:52,290 bạn muốn để móc vào thư viện lớn với hơn 606 00:29:52,290 --> 00:29:55,910 giao diện và nhiều hơn nữa khả năng để tương tác 607 00:29:55,910 --> 00:29:57,195 với các bộ phận khác trên thế giới. 608 00:29:57,195 --> 00:29:58,910 sys là một trong những với một loạt các công cụ 609 00:29:58,910 --> 00:30:01,159 mà có ích để tương tác với hệ thống chính nó 610 00:30:01,159 --> 00:30:05,050 và sẽ nhập khẩu nó như sys nhập khẩu. 611 00:30:05,050 --> 00:30:07,820 >> Có tài liệu hướng dẫn thêm từ đó, mà bạn có thể đi ở đây, 612 00:30:07,820 --> 00:30:11,490 hoặc bạn có thể tìm thấy trên Google bởi googling Python sys. 613 00:30:11,490 --> 00:30:12,640 Bạn gõ vào. 614 00:30:12,640 --> 00:30:15,140 Các liên kết đầu tiên là có được các tài liệu trong Python 2, 615 00:30:15,140 --> 00:30:19,260 liên kết thứ hai sẽ là tài liệu Python 3. 616 00:30:19,260 --> 00:30:24,830 >> Và nếu chúng tôi đã viết ra một tập tin mà nhìn như this-- Nếu nói riêng, chúng tôi 617 00:30:24,830 --> 00:30:27,910 nhìn vào hoạt động trên đối số dòng lệnh, 618 00:30:27,910 --> 00:30:30,040 như chúng ta đã học để làm rất sớm trong lớp này. 619 00:30:30,040 --> 00:30:32,190 Đây không phải là khó khăn. Bạn có thể nhận ra argv, 620 00:30:32,190 --> 00:30:34,565 đó là một trong những điều mà được thực hiện bởi sys. 621 00:30:34,565 --> 00:30:37,210 Nó không được xây dựng trong các gói cơ bản, nhưng một lần nữa, bạn 622 00:30:37,210 --> 00:30:40,080 có thể mở rộng nó bằng cách nhập khẩu mà chức năng từ sys. 623 00:30:40,080 --> 00:30:41,090 Bạn sẽ gọi nó là sys. 624 00:30:41,090 --> 00:30:42,611 bất cứ điều gì. 625 00:30:42,611 --> 00:30:43,360 Ở đây có argv. 626 00:30:43,360 --> 00:30:45,193 Có thực sự không có argc trong sys, bởi vì bạn 627 00:30:45,193 --> 00:30:47,880 có thể có được nó một cách dễ dàng bằng cách gọi len. 628 00:30:47,880 --> 00:30:55,390 Chúng tôi sau đó in ra mà ra, sau đó chúng tôi chạy trên echo-args.py thiết bị đầu cuối của chúng tôi. 629 00:30:55,390 --> 00:30:58,360 Chúng tôi nhận lại một mảng, mà là đối số đầu tiên này. 630 00:30:58,360 --> 00:31:02,240 Một lần nữa, đây là argv 0, đó là tên của điều đó được gọi tới. 631 00:31:02,240 --> 00:31:04,870 Nếu chúng ta gọi nó bằng thêm lập luận, chúng tôi muốn có được những người trở lại. 632 00:31:04,870 --> 00:31:07,687 633 00:31:07,687 --> 00:31:09,770 Đây là một cách để nhận được đối số dòng lệnh. 634 00:31:09,770 --> 00:31:13,440 Nếu bạn muốn cờ nơi bạn bật điều cụ thể trên hoặc override 635 00:31:13,440 --> 00:31:16,050 một mặc định cụ thể, argparse là bạn của bạn. 636 00:31:16,050 --> 00:31:21,550 Và một lần nữa bạn tìm thấy trực tuyến tại python argparse tại Google. 637 00:31:21,550 --> 00:31:24,300 >> Có một vài tiện ích module mà bạn thấy mình sử dụng 638 00:31:24,300 --> 00:31:27,630 và một lần nữa, nếu bạn dành thời gian bất kỳ của ngôn ngữ này nhập khẩu jsons 639 00:31:27,630 --> 00:31:33,300 cho đọc trong và ngoài json tập tin, không phải là phức tạp. 640 00:31:33,300 --> 00:31:37,139 Bạn mở một tập tin, bạn gọi json.load trên tập tin đó và bạn nhận lại một điều. 641 00:31:37,139 --> 00:31:37,930 Điều đó là gì? 642 00:31:37,930 --> 00:31:40,329 Đó là một đối tượng JSON. 643 00:31:40,329 --> 00:31:42,370 Nơi json đó có mảng, Python có các mảng. 644 00:31:42,370 --> 00:31:44,420 Nơi json có mảng kết hợp, Python 645 00:31:44,420 --> 00:31:48,810 từ điển, dây, và số, và như vậy. 646 00:31:48,810 --> 00:31:53,560 Bạn muốn đổ mà ra, bạn có mở ra một tập tin mới, bạn gọi bãi chứa, 647 00:31:53,560 --> 00:31:57,590 và tải trọng và bãi để đi vào và ra khỏi chuỗi. 648 00:31:57,590 --> 00:32:02,120 >> Tương tự như vậy, dưa được gọi là về cơ bản trong cùng một giao diện. 649 00:32:02,120 --> 00:32:04,740 Nó hơi hữu ích hơn nếu bạn đang bán phá giá đối tượng Python. 650 00:32:04,740 --> 00:32:08,370 Vì vậy, nếu bạn đã bao giờ muốn để tiết kiệm một phiên bản của tình trạng hiện tại 651 00:32:08,370 --> 00:32:11,930 của một biến cho một tương lai chạy chương trình của bạn, 652 00:32:11,930 --> 00:32:14,740 pickle là Python thư viện để làm điều đó. 653 00:32:14,740 --> 00:32:19,140 >> Nếu bạn có bất kỳ loại biến có thể được viết ra 654 00:32:19,140 --> 00:32:21,990 trong các từ như và các nhân vật và bytes-- như từ điển này, 655 00:32:21,990 --> 00:32:24,230 chúng ta có thể viết ra, chúng tôi có thể viết nó xuống như 656 00:32:24,230 --> 00:32:26,670 như một đối tượng JSON, đó là nghĩa là những nhân vật này. 657 00:32:26,670 --> 00:32:29,420 Và sau đó nó sẽ rất dễ dàng cho một con người để mở nó up-- mở lên 658 00:32:29,420 --> 00:32:30,889 và đọc nó. 659 00:32:30,889 --> 00:32:33,180 Nếu chúng tôi không đặc biệt quan tâm đến người đọc nó, 660 00:32:33,180 --> 00:32:38,490 chúng ta có thể gói thậm chí hiệu quả hơn vào hình thức mà sau này có thể được giải nén 661 00:32:38,490 --> 00:32:42,860 hoặc sau này có thể bị thổi phồng. 662 00:32:42,860 --> 00:32:46,740 Và điều này giúp tiết kiệm 80% không gian mà đối tượng của bạn có thể 663 00:32:46,740 --> 00:32:49,390 mất nếu bạn đã viết chúng ra longhand. 664 00:32:49,390 --> 00:32:52,384 >> Bạn gọi dưa rất nhiều cùng way-- dump, tải, 665 00:32:52,384 --> 00:32:53,800 và sau đó bạn sẽ có được những thứ của bạn trở lại. 666 00:32:53,800 --> 00:32:56,880 Vì vậy, nếu bạn đang viết rất chương trình Python ngắn 667 00:32:56,880 --> 00:32:59,952 muốn để tiết kiệm nước, và sau đó đọc chúng lại sau đó, mọi thứ như thế này 668 00:32:59,952 --> 00:33:00,660 là bạn của bạn. 669 00:33:00,660 --> 00:33:02,640 Mà bạn có thể rất dễ dàng đổ chúng như JSON. 670 00:33:02,640 --> 00:33:04,550 Hầu hết các đối tượng Python có thể đổ ra json 671 00:33:04,550 --> 00:33:11,310 nếu có bất kỳ hy vọng rằng cấu trúc họ có thể được biểu diễn theo cách đó. 672 00:33:11,310 --> 00:33:14,410 >> Đây chỉ là đỉnh của tảng băng trôi trên mô-đun đó là hữu ích. 673 00:33:14,410 --> 00:33:19,510 Vì vậy, sys, os, đa, được loại workhorses cơ bản cho những thứ 674 00:33:19,510 --> 00:33:23,120 chúng ta cần phải tương tác với os hệ thống tập tin., 675 00:33:23,120 --> 00:33:28,764 như os.isfile, os.isdirectory, os.makefile, đây là những người bạn của bạn. 676 00:33:28,764 --> 00:33:30,930 Nếu bạn muốn tương tác với một kiểu tập tin cụ thể, 677 00:33:30,930 --> 00:33:32,190 json, dưa, csv. 678 00:33:32,190 --> 00:33:37,160 Nếu bạn muốn tương tác với web trang, urllib để nhận http 679 00:33:37,160 --> 00:33:41,370 trang. bs4-- BeautifulSoup-- đó là một phân tích cú pháp tuyệt vời cho html. 680 00:33:41,370 --> 00:33:47,047 Bạn chạy nó trên một html và bạn được đối tượng mảng lồng nhau này bây giờ, 681 00:33:47,047 --> 00:33:49,630 mà bạn có thể duyệt qua lookin, với như chỉ cần tìm kiếm 682 00:33:49,630 --> 00:33:52,380 nếu, là, trong, mà là tuyệt vời. 683 00:33:52,380 --> 00:33:55,920 >> Có một loạt các gói cho running-- 684 00:33:55,920 --> 00:33:57,960 để làm những điều đặc biệt mathy. 685 00:33:57,960 --> 00:34:01,790 Vì vậy, nếu bạn muốn nhân lên, đảo ngược, biến đổi ma trận, 686 00:34:01,790 --> 00:34:05,690 numpy được sử dụng bởi tất cả mọi người trên thế giới cho rằng. 687 00:34:05,690 --> 00:34:09,620 scipy là hữu ích hơn công cụ theo hướng đó. 688 00:34:09,620 --> 00:34:13,980 học máy sklearn--, xử lý ngôn ngữ tự nhiên, 689 00:34:13,980 --> 00:34:17,880 siêu công cụ hữu ích, được thực hiện trong Python tất cả các thời gian. 690 00:34:17,880 --> 00:34:21,469 >> Và một lần nữa, có hơi còn để write-- xin lỗi, 691 00:34:21,469 --> 00:34:26,199 mất một chút thời gian để chạy, nhưng lý do mà các kỹ sư thực có xu hướng 692 00:34:26,199 --> 00:34:29,900 sử dụng Python là bởi vì bạn có xu hướng bị chặn trên bạn viết mã, thay 693 00:34:29,900 --> 00:34:32,699 hơn máy tính của bạn chạy mã. 694 00:34:32,699 --> 00:34:35,860 Vì vậy, nếu bạn đang đi để viết một chương trình, trong đó rất nhiều người khác 695 00:34:35,860 --> 00:34:37,699 đang sử dụng mãi mãi, như Linux, bạn 696 00:34:37,699 --> 00:34:41,900 có thể viết nó trong C. Nếu bạn là sẽ viết một công cụ tính toán, 697 00:34:41,900 --> 00:34:46,124 bạn có thể viết bằng Python nếu bạn cần để thay đổi nó mỗi vài tháng. 698 00:34:46,124 --> 00:34:48,540 Một số người sẽ viết nó trong C vì họ như thế. 699 00:34:48,540 --> 00:34:51,100 700 00:34:51,100 --> 00:34:54,050 >> Vì vậy, chúng tôi đã nhìn thấy sys nhập khẩu như một cách để nhận được những điều 701 00:34:54,050 --> 00:34:57,070 nhận được module vào chương trình của bạn. 702 00:34:57,070 --> 00:35:00,370 Bạn cũng có thể nhập nó như biệt hiệu, nếu bạn muốn. 703 00:35:00,370 --> 00:35:03,660 Một lần nữa đa là một nỗi đau để gõ từng thời điểm, vì vậy nhập khẩu là mp 704 00:35:03,660 --> 00:35:05,900 và sau đó bất cứ lúc nào bạn sử dụng nó trong các chương trình, 705 00:35:05,900 --> 00:35:09,732 bạn sẽ nói mp.process, hoặc những gì có bạn. 706 00:35:09,732 --> 00:35:12,670 Nếu bạn muốn nhập khẩu chỉ có một điều duy nhất, 707 00:35:12,670 --> 00:35:19,450 vì vậy urllib có một điều được gọi là yêu cầu, vì vậy bạn chỉ có thể nhập khẩu đó. 708 00:35:19,450 --> 00:35:22,610 Sau đó, bạn sẽ không gọi nó là urllib.request, nhưng chỉ theo yêu cầu 709 00:35:22,610 --> 00:35:24,590 bởi bản thân. 710 00:35:24,590 --> 00:35:30,110 >> Và bạn có thể nhập tất cả mọi thứ từ một mô-đun nếu bạn muốn. 711 00:35:30,110 --> 00:35:34,820 Điều này đôi khi không phải là một idea-- tốt điều này thường không phải là một ý tưởng tốt, thực sự. 712 00:35:34,820 --> 00:35:39,080 Bởi vì bạn very-- vì nếu có chuyện gì trong modul đó có một tên mà bạn 713 00:35:39,080 --> 00:35:41,640 muốn sử dụng ở một nơi khác trong chương trình của bạn, bạn có thể không. 714 00:35:41,640 --> 00:35:44,127 >> Và nó không phải luôn luôn rõ ràng mà đó là trường hợp. 715 00:35:44,127 --> 00:35:46,460 Để đảm bảo rằng những gì bạn đang làm là an toàn, 716 00:35:46,460 --> 00:35:47,920 bạn cần mở module và xem tất cả 717 00:35:47,920 --> 00:35:50,295 trong những cái tên mà kết thúc trong there-- tất cả các chức năng, 718 00:35:50,295 --> 00:35:53,010 tất cả các biến sống trong modul đó, 719 00:35:53,010 --> 00:35:57,040 bởi vì bạn đang mang tất cả chúng vào không gian tên địa phương của bạn. 720 00:35:57,040 --> 00:35:58,680 >> Vì vậy, người làm điều này. 721 00:35:58,680 --> 00:36:01,322 Nó thường được khuyến cáo rằng bạn không làm điều này. 722 00:36:01,322 --> 00:36:03,280 Nhưng người làm điều này tất cả thời gian bởi vì chúng 723 00:36:03,280 --> 00:36:05,180 lười biếng và không muốn gõ ra mp. 724 00:36:05,180 --> 00:36:06,310 bất cứ điều gì, bao giờ hết. 725 00:36:06,310 --> 00:36:09,560 726 00:36:09,560 --> 00:36:13,310 >> Tất cả điều này nói về các mô-đun mang cho tôi xung quanh để một cuộc nói chuyện ngắn 727 00:36:13,310 --> 00:36:15,930 vào cách bạn thiết kế các chương trình trong Python. 728 00:36:15,930 --> 00:36:19,860 Bước đầu tiên là để kiểm tra xem bất cứ ai khác đã làm được điều này, 729 00:36:19,860 --> 00:36:22,160 hoặc thực hiện 90% trong những điều. 730 00:36:22,160 --> 00:36:26,010 Rất có thể là họ có thể có, và bạn nên đi có được điều họ và chạy đó. 731 00:36:26,010 --> 00:36:28,900 Hoặc viết một wrapper xung quanh nó để thích ứng với nó để mục đích của bạn. 732 00:36:28,900 --> 00:36:31,250 Chỉ sau khi có thất bại mà bạn muốn sau đó 733 00:36:31,250 --> 00:36:35,529 đi vào và bắt đầu suy nghĩ về write-- làm thế nào bạn sẽ đặt điều này lại với nhau. 734 00:36:35,529 --> 00:36:37,320 Có rất nhiều công cụ ra khỏi đó, và đó là 735 00:36:37,320 --> 00:36:39,180 một trong những hữu ích nhất điều về Python. 736 00:36:39,180 --> 00:36:40,930 Cũng giống như các ngôn ngữ thanh lịch, các ngôn ngữ 737 00:36:40,930 --> 00:36:43,800 là dễ dàng để sử dụng, nhưng cũng bởi vì nó rất thanh lịch và dễ sử dụng, 738 00:36:43,800 --> 00:36:47,420 người đã được sử dụng nó cho một thời gian dài và có rất nhiều thứ 739 00:36:47,420 --> 00:36:52,520 ra khỏi đó mà bạn có thể khai thác để sử dụng riêng của bạn. 740 00:36:52,520 --> 00:36:58,457 >> Vì vậy, nguyên tắc cuối cùng của Python là, ai đó khác đã viết sẵn 741 00:36:58,457 --> 00:37:00,290 một mô-đun cho rằng, người khác có đã 742 00:37:00,290 --> 00:37:02,980 có lẽ được viết một thư viện cho điều đó. 743 00:37:02,980 --> 00:37:06,579 Trước khi bạn cố gắng làm một điều, nhìn để xem nếu nó được thực hiện. 744 00:37:06,579 --> 00:37:07,370 Nó không phải là khó. 745 00:37:07,370 --> 00:37:11,960 Tất cả các mô-đun mà tôi đưa lên trước, có lẽ với một ngoại lệ, 746 00:37:11,960 --> 00:37:15,220 cài đặt sẵn trong mỗi cài đặt Python tiêu chuẩn. 747 00:37:15,220 --> 00:37:17,769 Và như vậy với một cuộc gọi đến nhập khẩu bất cứ điều gì, bạn 748 00:37:17,769 --> 00:37:19,852 có tất cả các chức năng đó trong tầm tay của bạn. 749 00:37:19,852 --> 00:37:24,660 750 00:37:24,660 --> 00:37:28,920 >> Bắt đầu để kết thúc này nói chuyện, có một vài điều 751 00:37:28,920 --> 00:37:32,770 rằng tôi đã rời như hộp đen và loại che đậy, 752 00:37:32,770 --> 00:37:37,217 và có một vài màu trắng nằm mà tôi đã nói rằng, vì lợi ích của sự trung thực, 753 00:37:37,217 --> 00:37:39,050 Tôi sẽ ít nhất là tại thời điểm ở đây, ngay cả khi tôi sẽ không 754 00:37:39,050 --> 00:37:43,980 đi siêu sâu vào tất cả chúng và giải thích kỹ thuật của họ. 755 00:37:43,980 --> 00:37:46,010 >> Rất nhiều trong những điều mà tôi đã gọi là ma thuật 756 00:37:46,010 --> 00:37:48,980 là những gì người khác sẽ gọi lập trinh Hương đôi tượng. 757 00:37:48,980 --> 00:37:52,470 Vì vậy, có rất nhiều things-- để biến là rất thường xuyên không 758 00:37:52,470 --> 00:37:56,540 byte đơn giản ngồi trong, bộ nhớ, nhưng rất phức tạp 759 00:37:56,540 --> 00:38:01,910 các đối tượng có nội nhà nước về chức năng và rất nhiều 760 00:38:01,910 --> 00:38:05,570 biến của ẩn, rất nhiều chức năng ẩn, 761 00:38:05,570 --> 00:38:09,480 cho phép bạn biến chúng thành chuỗi, cho phép bạn duyệt qua chúng. 762 00:38:09,480 --> 00:38:12,260 Và nếu bạn đang writing-- và vì lý do họ 763 00:38:12,260 --> 00:38:15,710 có tất cả các chức năng phong phú này là vì people-- 764 00:38:15,710 --> 00:38:17,740 các kiến ​​trúc sư của language-- đã đi 765 00:38:17,740 --> 00:38:22,420 thông qua và cho mỗi tiêu chuẩn đối tượng, đưa vào các chức năng 766 00:38:22,420 --> 00:38:26,970 để nói điều này là cách này là làm thế nào điều này sẽ hoạt động 767 00:38:26,970 --> 00:38:28,470 nếu ai đó muốn lặp trên nó. 768 00:38:28,470 --> 00:38:31,240 >> Vì vậy, tất cả mọi thứ mà ai đó có thể có thể muốn để lặp qua, 769 00:38:31,240 --> 00:38:34,529 đã viết trong luận lý tay vào cách bạn 770 00:38:34,529 --> 00:38:36,070 phải lặp trên đối tượng đó. 771 00:38:36,070 --> 00:38:40,274 Tất cả mọi thứ mà bạn có thể muốn bán phá giá vào một chuỗi đã lý bằng văn bản. 772 00:38:40,274 --> 00:38:43,440 Đây là những chức năng mà bạn gọi nếu bạn muốn để đổ này ra thành một chuỗi. 773 00:38:43,440 --> 00:38:45,273 Đây là lý do tại sao bạn có thể gọi len vào những thứ, điều này 774 00:38:45,273 --> 00:38:49,900 là lý do tại sao bạn có thể gọi cho trong, điều này là lý do tại sao bạn có thể gọi nếu ở trên tất cả mọi thứ 775 00:38:49,900 --> 00:38:53,490 mà bạn muốn, bởi vì tất cả những người được mang theo người, 776 00:38:53,490 --> 00:38:55,380 bí quyết kỹ thuật làm thế nào để làm điều đó. 777 00:38:55,380 --> 00:38:58,170 778 00:38:58,170 --> 00:39:00,432 >> Đây là điều mà tôi siêu sẽ không đi vào. 779 00:39:00,432 --> 00:39:03,140 Nhưng đối với điều trong danh sách là một cách tinh tế khác nhau từ C phong cách cho các vòng, 780 00:39:03,140 --> 00:39:06,160 và bạn có thể đọc tất cả về điều đó trên internet, nếu bạn quan tâm. 781 00:39:06,160 --> 00:39:08,930 Có một mặt tối cho tất cả điều này, mà tôi đã đề cập, 782 00:39:08,930 --> 00:39:10,359 do đó, có hai điều. 783 00:39:10,359 --> 00:39:13,400 Đầu tiên là các đối tượng này theo định hướng lập trình cho biết thêm rất nhiều nguyên 784 00:39:13,400 --> 00:39:16,080 để điều ngẫu nhiên, do đó, bạn kết thúc bằng cách sử dụng bộ nhớ nhiều hơn; 785 00:39:16,080 --> 00:39:18,640 bạn kết thúc bằng cách sử dụng nhiều hơn một chút thời gian hơn mức bạn có. 786 00:39:18,640 --> 00:39:21,300 Các other-- nhưng hơn mặt tối ngấm ngầm này 787 00:39:21,300 --> 00:39:24,047 là, nếu mọi thứ chỉ hành động như bạn muốn chúng 788 00:39:24,047 --> 00:39:27,130 mà không cần phải suy nghĩ siêu cứng về việc này nên là một int 789 00:39:27,130 --> 00:39:29,713 hay liệu có phải là một float, nó có thể được rằng ở đây 790 00:39:29,713 --> 00:39:34,240 bạn sản xuất một int nhưng ở đây bạn nghĩ nhưng họ sẽ always-- xin lỗi, 791 00:39:34,240 --> 00:39:36,555 nó có thể được rằng ở đây bạn sản xuất một phao, 792 00:39:36,555 --> 00:39:39,430 nhưng khi bạn tới phần thứ hai các chương trình của bạn, bạn đang suy nghĩ, 793 00:39:39,430 --> 00:39:41,150 oh tốt, nhưng họ sẽ luôn luôn vượt qua tôi một int. 794 00:39:41,150 --> 00:39:43,608 Và nếu họ không, nó có thể mà bạn chen vào một nơi nào đó, 795 00:39:43,608 --> 00:39:47,600 nếu bạn cố gắng sử dụng để chỉ số vào một mảng, hoặc những gì có bạn. 796 00:39:47,600 --> 00:39:51,050 >> Vì vậy, một trong những thực những điều hữu ích về C là 797 00:39:51,050 --> 00:39:54,219 nó buộc bạn phải suy nghĩ thực sự cứng trước khi bạn thực hiện any-- 798 00:39:54,219 --> 00:39:56,510 trước khi bạn mang theo bất kỳ biến vào sự tồn tại, giống như những gì 799 00:39:56,510 --> 00:39:58,764 là kiểu của biến này. 800 00:39:58,764 --> 00:40:00,680 Và nó sẽ có loại cho tất cả các thời gian. 801 00:40:00,680 --> 00:40:02,410 >> Đây không phải là sự thật Python, và trong thực tế, bạn 802 00:40:02,410 --> 00:40:04,740 can-- nếu bạn chỉ loại đi bằng tai, 803 00:40:04,740 --> 00:40:07,690 và bạn thực hiện một số quyết định một chiều ở một nơi, 804 00:40:07,690 --> 00:40:09,870 và một số quyết định một cách ở nơi khác 805 00:40:09,870 --> 00:40:12,960 mà không đặt đủ thứ đằng sau những cảnh ở nơi khác 806 00:40:12,960 --> 00:40:16,170 để nắm bắt những điều đúng, bạn có thể nhận được một số lỗi rất lạ. 807 00:40:16,170 --> 00:40:19,200 Và các chương trình có thể tiếp tục chạy trong một thời gian rất dài, bởi vì nó 808 00:40:19,200 --> 00:40:23,200 làm rất nhiều công việc để nói, cũng điều này có thể hoạt động theo cách này, 809 00:40:23,200 --> 00:40:25,070 do đó, tôi sẽ chạy theo cách đó. 810 00:40:25,070 --> 00:40:30,300 >> Và trên thực tế, thực tế là nó đẩy chuyển qua rất nhiều lỗi nhỏ 811 00:40:30,300 --> 00:40:33,260 có nghĩa là, thường khi một lỗi thực sự là xấu 812 00:40:33,260 --> 00:40:38,720 và bạn thực sự muốn sửa chữa nó, nó kết thúc dặm away-- chương trình 813 00:40:38,720 --> 00:40:41,780 kết thúc dừng dặm từ khi bạn có lỗi lầm của mình. 814 00:40:41,780 --> 00:40:46,590 Và do đó, có một điều mà chúng tôi muốn chương trình để làm, có một điều sometimes-- 815 00:40:46,590 --> 00:40:48,910 mà chúng tôi muốn chương trình để làm gì khi chúng ta đang tháo gỡ 816 00:40:48,910 --> 00:40:54,160 là thất bại lớn và thất bại rất một cách nhanh chóng khi có điều gì sai trái. 817 00:40:54,160 --> 00:40:55,510 >> Python là rất xấu tại đó. 818 00:40:55,510 --> 00:40:58,820 Python là rất tốt tại không thất bại và lăn về phía trước 819 00:40:58,820 --> 00:41:00,320 thông qua những điều không mong muốn. 820 00:41:00,320 --> 00:41:02,820 Vì vậy, đây là hữu ích cho khi bạn đang viết một chương trình nhỏ. 821 00:41:02,820 --> 00:41:07,110 Khi bạn trở nên phức tạp lỗi đôi khi nó 822 00:41:07,110 --> 00:41:09,300 mất một thời gian dài để trêu chọc chúng ra. 823 00:41:09,300 --> 00:41:12,210 >> Vì vậy, có một mặt tối cho tất cả điều này, giống như nó chỉ hoạt động. 824 00:41:12,210 --> 00:41:13,860 Nó chỉ hoạt động như bạn mong đợi nó đến. 825 00:41:13,860 --> 00:41:18,320 Trừ khi nó không, bạn kết thúc lên ở một nơi hoàn toàn khác nhau 826 00:41:18,320 --> 00:41:21,530 và cố gắng tìm ra nơi nó đã được rằng bạn đã đi sai. 827 00:41:21,530 --> 00:41:25,180 >> Thu gom rác thải is-- vậy một điều mà bạn sẽ thấy 828 00:41:25,180 --> 00:41:28,110 là một trong những điều mà Tôi đã đưa vào existence-- 829 00:41:28,110 --> 00:41:34,114 các mảng, các từ điển, các các đối tượng, các files-- không bao giờ được giải phóng. 830 00:41:34,114 --> 00:41:36,030 Không có cuộc gọi đến miễn phí trong bất kỳ buổi trò chuyện này. 831 00:41:36,030 --> 00:41:40,340 Và đó vào C-side, vì chúng tôi chẳng bao giờ gặp những việc đó. 832 00:41:40,340 --> 00:41:42,220 >> Nhưng trong Python-side, không có một miễn phí. 833 00:41:42,220 --> 00:41:43,970 Mọi thứ trở nên tự động giải phóng khi Python 834 00:41:43,970 --> 00:41:45,386 nghĩ rằng bạn đang không nhìn vào chúng. 835 00:41:45,386 --> 00:41:49,640 Nó thực sự tốt không giải phóng những điều mà bạn vẫn có thể được xem xét, 836 00:41:49,640 --> 00:41:54,262 nhưng điều này có nghĩa rằng nếu bạn đã sẽ phân bổ điều lớn này, 837 00:41:54,262 --> 00:41:55,970 và bạn giống như, oh Tôi đang thực hiện với nó bây giờ, 838 00:41:55,970 --> 00:42:00,360 đó là rất khó để nói Python rằng bạn đang thực hiện với nó bây giờ. 839 00:42:00,360 --> 00:42:02,986 >> Đôi khi bạn có thể thiết lập biến mà không phải ai, 840 00:42:02,986 --> 00:42:05,110 và sau đó hy vọng rằng cuối cùng thu gom rác 841 00:42:05,110 --> 00:42:06,720 đi qua và làm sạch nó ra. 842 00:42:06,720 --> 00:42:10,177 Nhưng một lần nữa, bạn không có kiểm soát đó. 843 00:42:10,177 --> 00:42:13,510 Và một trong những lý do mà mọi người sử dụng C cho hiệu năng thực sự những điều quan trọng, 844 00:42:13,510 --> 00:42:16,570 là khả năng này để thực sự biết khi nào nhớ được cấp phát 845 00:42:16,570 --> 00:42:19,369 và khi nó được giải thoát, và có rất nhiều kiểm soát hơn nói, 846 00:42:19,369 --> 00:42:20,910 Tôi đang sử dụng không có bộ nhớ nhiều hơn tôi cần. 847 00:42:20,910 --> 00:42:23,632 Mà là một cái gì đó Python là không tuyệt vời tại. 848 00:42:23,632 --> 00:42:25,090 Đung Tôi có thể hỏi bạn một câu hỏi? 849 00:42:25,090 --> 00:42:29,800 Bạn đã có ý nghĩa gì bởi không lớn tiếng? 850 00:42:29,800 --> 00:42:32,070 >> ROSS RHEINGANS-YOO: Vì vậy, nếu cái gì đang xảy ra sai 851 00:42:32,070 --> 00:42:34,950 và bạn đang ở trong gỡ lỗi chế độ, bạn sẽ rất thường xuyên 852 00:42:34,950 --> 00:42:38,510 muốn chương trình của bạn để cho bạn biết nơi chính xác nó đi sai, 853 00:42:38,510 --> 00:42:42,360 và không chỉ âm thầm dừng chạy. 854 00:42:42,360 --> 00:42:45,085 Nhưng bạn đã thực sự nó để in ra tất cả các loại thông tin về 855 00:42:45,085 --> 00:42:46,972 như thế, đây là này. 856 00:42:46,972 --> 00:42:53,957 Điều này đã xảy ra Nếu bạn đang in một wen-- nếu bạn đang chạy một server-- web 857 00:42:53,957 --> 00:42:55,390 >> Đung [Không nghe thấy] 858 00:42:55,390 --> 00:42:59,800 >> ROSS RHEINGANS-YOO: Yeah, nếu bạn đang chạy một máy chủ web, 859 00:42:59,800 --> 00:43:02,680 nó đôi khi xấu nếu bạn luôn luôn loại bỏ sai sót, 860 00:43:02,680 --> 00:43:04,530 và bạn đang nói, tốt mà không làm việc. 861 00:43:04,530 --> 00:43:05,300 Tôi sẽ ngừng. 862 00:43:05,300 --> 00:43:07,680 Tôi chỉ cần đi để bỏ qua nó và tiếp tục đi về. 863 00:43:07,680 --> 00:43:11,260 Bởi vì sau đó bạn có thể nhận được trong hàng trăm những sai sót và không nhìn thấy chúng. 864 00:43:11,260 --> 00:43:13,910 >> Nó chắc chắn sẽ có ích cho mục đích gỡ lỗi 865 00:43:13,910 --> 00:43:20,327 nếu mỗi khi máy chủ web của bạn được thực hiện một lỗi, bạn đã có hồ sơ bền đó. 866 00:43:20,327 --> 00:43:22,910 Có lẽ thậm chí bạn muốn chương trình dừng lại, do đó, những hồ sơ 867 00:43:22,910 --> 00:43:25,471 không được chôn dưới điều. 868 00:43:25,471 --> 00:43:26,970 Nhưng một lần nữa, đó là trong chế độ gỡ lỗi. 869 00:43:26,970 --> 00:43:31,280 >> Thường thì trong phương thức sản xuất, các thế giới là một chút khác nhau. 870 00:43:31,280 --> 00:43:36,380 Và trong kịch bản nhỏ mà tôi đang chạy, nơi điều mà tôi nói để làm 871 00:43:36,380 --> 00:43:40,680 có thể là chỉ một chút off từ những gì tôi muốn nó làm, 872 00:43:40,680 --> 00:43:44,010 sau đó sắp xếp đẩy qua lỗi này là một cái gì đó bạn có thể muốn. 873 00:43:44,010 --> 00:43:49,410 Và trong những trường hợp chắc chắn, Python thực sự kiếm được bắt đầu của nó. 874 00:43:49,410 --> 00:43:54,617 >> Điều cuối cùng mà tôi đã không nói chuyện trong this-- rằng tôi đã không nói chuyện về 875 00:43:54,617 --> 00:43:57,700 nhưng có thể được thực sự phẩn nộ đầu tiên Hiện bạn có một trong các lỗi này, 876 00:43:57,700 --> 00:44:00,491 và lần thứ hai và thứ ba và thứ tư Hiện bạn có một trong các lỗi này. 877 00:44:00,491 --> 00:44:03,490 Python, tôi đã đề cập mà nó sử dụng không gian trắng 878 00:44:03,490 --> 00:44:06,700 để cho bạn biết mức độ thụt đầu dòng và những gì chức năng block bạn đang ở, 879 00:44:06,700 --> 00:44:08,840 nó xử lý các tab và không gian khác nhau. 880 00:44:08,840 --> 00:44:12,780 Vì vậy, nếu bạn tab hơn bốn, và sau đó dòng tiếp theo có bốn không gian, 881 00:44:12,780 --> 00:44:16,910 ngay cả khi chúng hiển thị như là các cùng một số tiền trong trình soạn thảo của bạn, 882 00:44:16,910 --> 00:44:20,160 Python không đối xử với họ như vậy. 883 00:44:20,160 --> 00:44:23,610 >> Trong thực tế, Python đối xử với các tab và không gian như dầu và nước. 884 00:44:23,610 --> 00:44:25,050 Họ là những thứ chỉ khác nhau. 885 00:44:25,050 --> 00:44:27,264 Không có đặc biệt chiều dài một tab là, 886 00:44:27,264 --> 00:44:30,180 vì vậy nó không giống như một tab bằng 8 không gian, và do đó bạn sẽ nhận được xung quanh nó 887 00:44:30,180 --> 00:44:30,860 theo cách đó. 888 00:44:30,860 --> 00:44:34,110 Giống như khi nó nói, những gì mức độ của không gian màu trắng tôi đang ở, 889 00:44:34,110 --> 00:44:37,240 nó thực sự là tìm kiếm một mô hình không gian và các tab. 890 00:44:37,240 --> 00:44:43,050 Và vì vậy, cách tốt nhất để đối phó với điều này là luôn luôn sử dụng các không gian tất cả các thời gian. 891 00:44:43,050 --> 00:44:47,510 >> Và trên thực tế, trong Cloud9 IDE và CS50 IDE, 892 00:44:47,510 --> 00:44:50,610 chèn phím Tab của bạn bốn không gian trong thay vì 893 00:44:50,610 --> 00:44:53,800 của một tab, mà là siêu hữu ích. 894 00:44:53,800 --> 00:44:57,074 Mặc dù một lần nữa, nếu bạn đã viết một Python Chương trình với các tab đó sẽ được sử dụng tốt, 895 00:44:57,074 --> 00:44:58,990 nó chỉ là nếu ai đó đã đi vào và cố gắng thêm 896 00:44:58,990 --> 00:45:02,655 một dòng duy nhất cho chương trình của bạn mà có bốn không gian cho mỗi tab, 897 00:45:02,655 --> 00:45:03,280 nó sẽ phá vỡ. 898 00:45:03,280 --> 00:45:07,800 Và nó sẽ phá vỡ một cách mà thực sự là không nhìn thấy được. 899 00:45:07,800 --> 00:45:12,390 Mặc dù các lỗi thực tế tin rằng nó ném 900 00:45:12,390 --> 00:45:15,610 đã làm với mới thụt không mong đợi ở đây, 901 00:45:15,610 --> 00:45:18,700 or-- nếu nó nói về indents và có vẻ như nó là sai, 902 00:45:18,700 --> 00:45:22,090 nó có thể là vì có một vấn đề tab và không gian. 903 00:45:22,090 --> 00:45:24,154 Chúng tôi vẫn đang phẩn nộ để debug. 904 00:45:24,154 --> 00:45:26,070 Toàn bộ lớn nhất trong nói chuyện này, mà tôi đã không 905 00:45:26,070 --> 00:45:29,740 có được vì nó thực sự một phức tạp, chủ đề tế nhị, 906 00:45:29,740 --> 00:45:34,760 và không cần thiết phải làm bất cứ trong những điều chúng tôi đã làm cho đến nay, 907 00:45:34,760 --> 00:45:37,140 là một khái niệm gọi là các bộ. 908 00:45:37,140 --> 00:45:41,280 Họ đang có nhiều như mảng mà bạn không thể sửa đổi. 909 00:45:41,280 --> 00:45:44,700 Họ có được sử dụng trên khắp nơi vì họ là hữu ích cho rất nhiều điều 910 00:45:44,700 --> 00:45:46,300 rằng mảng là không hữu ích cho. 911 00:45:46,300 --> 00:45:49,890 >> Nhưng nếu bạn muốn làm một mảng, và sau đó hứa hẹn những thông dịch viên mà bạn 912 00:45:49,890 --> 00:45:53,140 sẽ không bao giờ muốn thay đổi đó thing-- trên thực tế, nếu bạn muốn thay đổi, 913 00:45:53,140 --> 00:45:56,800 bạn sẽ làm cho một cái mới với các mới giá trị trong it-- đó là các bộ. 914 00:45:56,800 --> 00:45:58,800 Thay vì sản xuất chúng với dấu ngoặc vuông, 915 00:45:58,800 --> 00:46:00,341 bạn sản xuất chúng với dấu ngoặc tròn. 916 00:46:00,341 --> 00:46:05,074 Tại sao bạn sẽ sử dụng những điều này, là một chút của một câu hỏi. . 917 00:46:05,074 --> 00:46:06,990 Điều duy nhất mà tôi sẽ nói về điều đó là bạn 918 00:46:06,990 --> 00:46:10,680 có thể sử dụng các bộ như chỉ số cho từ điển. 919 00:46:10,680 --> 00:46:15,010 Bạn không thể sử dụng các mảng như chỉ số cho từ điển. 920 00:46:15,010 --> 00:46:18,970 Và tại sao, một lần nữa, kỹ thuật và Tôi sẽ không để chạy vào nó. 921 00:46:18,970 --> 00:46:23,140 >> Các pset rằng tôi đã không đụng trên trong buổi nói chuyện này là pset6. 922 00:46:23,140 --> 00:46:25,837 Vì vậy, đây là cách bạn 'd thực hiện a-- đây 923 00:46:25,837 --> 00:46:28,140 làm thế nào bạn sẽ thực hiện pset6 trong Python. 924 00:46:28,140 --> 00:46:32,680 Giữ trong tâm trí các Python chu trình thiết kế, điều đầu tiên 925 00:46:32,680 --> 00:46:34,760 mà bạn làm khi bạn đang viết chương trình là kiểm tra 926 00:46:34,760 --> 00:46:38,030 để xem nếu ai đó được thực hiện nó rồi. 927 00:46:38,030 --> 00:46:42,152 >> Trong thực tế, nếu bạn muốn để serve-- Apache 50 928 00:46:42,152 --> 00:46:44,110 làm khoảng này, ngoại trừ nó không đi 929 00:46:44,110 --> 00:46:45,840 tiêu chuẩn được cài đặt trên các máy Linux. 930 00:46:45,840 --> 00:46:50,490 Python có, và Python máy chủ http đơn giản nào là tốt. 931 00:46:50,490 --> 00:46:54,717 Nếu bạn đã từng vào một máy Linux, hoặc bên ngoài Cloud9 IDE của CS50 932 00:46:54,717 --> 00:46:57,550 và bạn muốn phục vụ hiện nay thư mục vào một cổng đặc biệt, 933 00:46:57,550 --> 00:47:04,610 python-m SimpleHTTPServer cảng phục vụ đó. 934 00:47:04,610 --> 00:47:07,190 Bạn cũng có thể nhập khẩu các máy chủ http đơn giản 935 00:47:07,190 --> 00:47:11,240 và nó có rất nhiều chức năng nếu bạn muốn tùy chỉnh nó, hoặc thay đổi nó, 936 00:47:11,240 --> 00:47:15,860 hoặc đang chạy it-- khai thác nó để chạy các dịch vụ máy chủ của riêng bạn. 937 00:47:15,860 --> 00:47:18,032 >> Vì vậy, đó là Python trong một nutshell. 938 00:47:18,032 --> 00:47:20,280 Và điều này đã được CS50. 939 00:47:20,280 --> 00:47:21,980 Cảm ơn bạn. 940 00:47:21,980 --> 00:47:23,468