Python 1: Cài đặt và tài liệu

Bài này nằm trong loạt bài Tự học Python.

Loạt bài viết hướng dẫn tự học Python dành cho người chưa biết gì với phong cách viết của Math2IT.

Khác với loạt bài về LaTeXMatlab vốn dựa vào kinh nghiệm và trí nhớ, loạt bài về Python sẽ viết song song với quá trình tôi tự học ngôn ngữ này từ các trang web trực tuyến và chính sự tìm tòi của mình. Ưu điểm của cách viết này là xuất phát điểm của tôi cũng giống các bạn, tôi sẽ giúp các bạn tiết kiệm được rất nhiều thời gian để có thể chọn cho mình một hướng đi và tài liệu phù hợp nhất (vì tôi đã thử trước).

Tôi đã học Python như thế nào và ở đâu? (Xem thêm)

Cho bạn nào biết thêm để có thể tự đi theo hướng này mà không cần đọc loạt bài này cũng được! Tuy nhiên hướng đi và các trang tôi liệt kê dưới đây là theo trình tự thời gian nên nó hơi lộn xộn và trùng lặp. Đó là lý do tôi viết loạt bài này cho bạn đấy, sau khi đã biết cái nào nên học, cái nào không!

  1. Lần đầu tiên tôi tiếp xúc với Python là “nghe giảng ý tưởng” từ loạt video CS50 (đại cương về khoa học máy tính) của trường Đại học Harvard do giáo sư David J. Malan giảng dạy. Python được nhắc đến ở Lecture 6. Nói thêm, tôi chưa thấy ai dạy code hay như thầy này! Nếu bạn chưa biết gì về khoa học máy tính, hãy xem loạt video này!
  2. Tôi xem được vài video mở đầu về Python trên khóa học của PluraSight. Khóa học này tốn phí nhưng do có giai đoạn nó hợp tác với Datacamp nên được miễn phí. Tôi bỏ dở giữa chừng để chuyển qua học cái khác nhưng cũng nắm được kha khá điều cơ bản trên đây.
  3. Sau đó tôi học vài cua python cơ bản trong khóa học về Data Scientist trên Dataquest. Khi ấy Python được dạy trong đây nói về cơ bản cũng không nhiều, sau đó nó tập trung nói về Python cho Data Science với một số thư viện cần thiết (numpy, matplotlib, pandas,…).
  4. Tôi tiếp tục xem loạt python cơ bản của anh Corey Schafer. Tôi chưa thấy ai dạy python súc tích ngắn gọn và dễ hiểu hơn anh này!
  5. Sau đó tôi học vài khóa python cũng cơ bản, trung cấp trong khóa học Data Science của IBM trên Coursera, có phí. Nói thêm, đây là một khóa học rất hay để bạn có thể hiểu ý tưởng cơ bản các bước và kiến thức trong Data Science.
  6. Nơi tôi học cuối cùng trước khi viết loạt bài này là khóa Python 3 trên Codecademy, cũng lại là một nơi phải trả phí để học.
  7. Song song với học, tôi cũng thực hành viết code giải một số bài tập nhỏ trên HackerrankExercism. Nếu có thời gian, hãy lên đây “luyện code” và tư duy lập trình!

Tài liệu tham khảo

Để kiểm tra thường xuyên:

  • programiz.com: nên dùng để tra thường xuyên, trang này không chỉ dành cho Python mà còn rất nhiều ngôn ngữ khác.
  • Python 3 trên tutorialspoint: nên dùng để xem danh sách hết các method trong mỗi objects. Trang web này thì cũng không còn xa lạ gì với dân lập trình.
  • Official docs : chỉ dùng khi tra từ Google. Đây vẫn là nơi tập hợp đầy đủ nhất về python, có điều cách trình bày và viết hơi nhiều và rối ren.
  • App mobile (dành để đọc ref): Python Reference của Wenhuan Li. Lưu ý, nếu bạn nào dùng Android, có thể tải app của trang programiz để tham khảo và học code cũng rất hay!

Các khóa học trọn vẹn từ A-Z:

  • Python fundamentals trên Pluralsight: Chỉ có video, không bài tập thực hành. Có điều bài giảng rất chuyên sâu về cách python hoạt động và rất nhiều lưu ý. Hình ảnh cũng dễ hiểu. Nếu có thời gian, bạn nên xem trong lúc…rảnh rỗi. Lưu ý là trang này có phí, nên tìm các lúc nó khuyến mãi!
  • Video bài giảng của Corey Schafer: Bạn có thể vừa xem anh ấy làm rùi làm theo, từ đó hiểu và biết cách. Tôi chưa thấy ai dạy python súc tích ngắn gọn và dễ hiểu hơn anh này!
  • Python course for Data Science trên Big Data University.
  • Python 3 trên Codecademy: bạn phải trả phí nhưng cách đọc-làm của trang này khá hay, tôi nhớ và tự làm (theo) được rất nhiều thứ để hiểu lý thuyết về Python. Trang cũng chèn xem kẽ nhiều dự án nhỏ để áp dụng những cái bạn đã học.
  • Google’s Python Class: khóa học Python của Google.

Nơi để thực hành

  • HackerRank: Có bộ sưu tập các câu hỏi lập trình đủ mọi ngôn ngữ rất hay. Nhiều thể loại cho bạn luyện tập, có sao cho bạn phấn đấu. Nội dung câu hỏi khá hay, cách code cũng tiện và cộng đồng hỏi đáp cũng đa dạng.
  • ExercismCheckIO: gần giống như Hackerrank nhưng cách thức hơi khác. Cách cài đặt cũng hơi phức tạp hơn. Tùy theo sở thích của bạn mà hãy chọn môi trường luyện phù hợp.

Cài đặt Python

Cho dù dùng hệ điều hành gì (Linux, MacOS hay Windows), bạn đều nên cài Anaconda. Đây là bản phân phối Python/R lớn nhất hiện nay. Nó đã tích hợp Python trong này kèm theo chương trình quản lý các thư viện của Python. Bạn cũng có thể cài các phần mềm IDE dành cho Python/R thông qua đây. Một chương trình tất cả trong một!

Nếu bạn không thích Anaconda, bạn hoàn toàn có thể tự download và cài Python từ trang chủ của nó. Lưu ý, Linux và MacOS đã tích hợp sẵn Python (có thể chưa phải là bản mới nhất), do đó bạn có thể không cần cài thêm Python mà vẫn có thể chạy được.

Tuy nhiên, trên từng hệ điều hành sẽ có những thiết lập khác nhau. Ở đây tôi không dùng MacOS nên sẽ không đề cập đến nó! Tôi sẽ cập nhật sau.

Trên Windows

Theo mặc định sau khi cài xong Anaconda, bạn mở trình Command Prompt (CMD) hay PowerShell (PS) và thử gõ python -v (check version của python) thì bị lỗi là không tìm thấy lệnh. Lý do là chúng ta chưa đưa đường dẫn python trong Anaconda vào trong $PATH của Windows. Hiểu nôm na, CMD và PS gọi đến một lệnh/phần mềm nào, Windows sẽ chỉ kiểm tra các đường dẫn có trong System Environment Variables (SEA hay $PATH ta cần) coi có phần mềm đó chưa.

Cách thêm đường dẫn vào SEA

Giả sử bạn để mặc định lúc cài Anaconda, khi ấy đường dẫn đến nó là C:\ProgramData\Anaconda3. Bạn cần thêm đường dẫn này vào trong SEA (và thêm một số cái khác nữa).

  1. Nhấn phím Start > Gõ vào variable và chọn Edit the system environment variables > Chọn thẻ Advanced (đã được chọn sẵn) > Chọn Environment Variables… > Ở cái khung phía trên bạn nhấn vào Path xong chọn Edit (hoặc nhấp đúp vào Path cũng được)
  2. Nhấn nút Browse và trỏ tới đường dẫn C:\ProgramData\Anaconda3 (bạn cũng có thể copy đường dẫn này tại đây, sau đó chọn New thay vì Browse và dán vào)
  3. Bạn làm tương tự cho C:\ProgramData\Anaconda3\Scripts.
  4. Lưu ý, nếu bạn muốn đưa một lệnh nào vào để CMD hay PS nhận (ví dụ python.exe) thì bạn cần thêm đường dẫn chứa file đó vào trong Path này (chứa file chứ không phải file).

Nếu bạn tự cài Python, bạn cần thêm đường dẫn này

C:\Users\dinha\AppData\Roaming\Python\Python36\Scripts

Ngoài Anaconda hay Python gốc ra, bạn còn cần phải cài và tìm cách sử dụng Jupyter Notebook (JN). Cái này là môi trường trực tiếp cho bạn viết và chạy code python trong cùng một trang notebook. Kết quả của code sẽ hiển thị ngay.

Cách chạy Jupyter Notebook trên Windows

May mắn thay, Jupyer Notebook đã có sẵn trong Anaconda. Bạn không cần cài nữa! Để có thể chạy nó trong môi trường dòng lệnh (như trên cmder), đầu tiên bạn cần chuyển đến thư mục làm việc (giả sử là C:\working_folder), sau đó chạy JN:

# Di chuyển đến thư mục làm việc
cd C:\working_folder

# Chạy môi trường Jupyter Notebook trên folder này
python -m notebook

Lưu ý, các trang hướng dẫn trên mạng thường chỉ dùng jupyter notebook nhưng không hoạt động! Thêm nữa, bạn phải đưa đường dẫn của Python/Anaconda vào trong Path của Windows trước thì dòng lệnh ở trên mới có tác dụng!

Sau khi chạy thành công JN trong cmder, trình duyệt sẽ tự động mở trang web http://localhost:8888 (nếu nó không tự mở, bạn hãy mở lấy). Tại đây bạn có thể làm việc với JN. Tôi sẽ có một bài riêng về JN sau.

Khi bạn muốn cài đặt thêm thư viện/gói lệnh (package) python mới, bạn có thể cài bằng Anaconda. Một cách phổ biến khác là bạn cài bằng pip. Thường là nó đã tích hợp sẵn trong Anaconda, nếu chưa, bạn cũng có thể tự cài lấy một cách dễ dàng.

Vài điều với pip

Vấn đề với Windows là khi bạn chạy dòng lệnh với pip, nó sẽ xuất hiện lỗi 'pip' is not recognized as an internal… Lý do tương tự như ở trên, pip.exe chưa được Windows nhận biết được đang ở đâu (đường dẫn tới nó chưa nằm trong Path). Lại một lần nữa, bạn hãy thêm thư mục chứa pip.exe vào trong Path của Windows như hướng dẫn ở phần trước.

Nếu cài Anaconda, đường dẫn chứa pip thường là C:\ProgramData\Anaconda3\Scripts.

Nếu muốn upgrade pip, bạn có thể dùng dòng lệnh (nhớ là phải chạy cmder bằng quyền admin trước):

python -m pip install --upgrade pip

Trên Linux

Vì bản thân Linux (Ubuntu) có cài sẵn Python rồi nên sau khi bạn cài Anaconda, nó sẽ có thêm một phiên bản khác. Tình trạng bạn phát hiện có nhiều phiên bản khác nhau trên máy tính chạy Linux là rất bình thường.

Giờ bạn chỉ muốn giữ và ép máy chỉ nhận phiên bản của Anaconda thì phải làm sao? Tôi đã tham khảo một câu trả lời trên StackExchange.

Thêm Anaconda vào $PATH

Mở ~/.profile bằng một trình chỉnh sửa text trên máy (vim, sublime,…).

Thêm dòng sau đây vào và lưu sự thay đổi.

export PATH=/home/thi/anaconda3/bin:$PATH

Sau đó, bạn cần chạy source ~/.profile để thay đổi có tác dụng.

Thử check bằng which python, nếu nó hiện ra đại đường dẫn có chứa anaconda như ví dụ bên dưới tức là đã thành công.

/home/thi/anaconda3/bin/python

Kể từ đây, mỗi lần bạn dùng lệnh python, nó sẽ tự động hiểu và chọn phiên bản của Anaconda.

Trong trường hợp bạn muốn quay lại phiên bản mặc định của hệ thống, hãy mở .bashrc lên, comment dòng nào có chứa Anaconda bằng cách để # trước dòng đó. Sau đó chạy lại lệnh source.

Với Jupyer Notebook, xem giới thiệu về nó ở mục Windows.

Cài và chạy Jupyter Notebook trên Linux

Cài JN thông qua lệnh sau

# Update/Upgrade pip
python3 -m pip install --upgrade pip

# Cài JN bằng pip
pip install --user jupyter

Từ giờ, mỗi lần muốn chạy JN tại một thư mục nào đó, giả dụ /home/thi/working_folder,

# Di chuyển đến thư mục làm việc
cd /home/thi/working_folder

# Chạy JN
python3 -m notebook

Mở trang http://localhost:8888 để có thể làm việc với JN. Math2IT sẽ có một bài riêng về JN sau.

Cài IDE

Bản thân Anaconda đã có một IDE rất mạnh (thứ mà bạn dùng để code Python), đó chính là Spyder. Tuy nhiên trình này chỉ nên dùng để code các dự án hoặc để check các thứ liên quan như biến, môi trường tích hợp,…

Trong trường hợp bạn muốn code và chạy nhanh gọn Python, hoặc là bạn có thể chạy trực tiếp python trong môi trường dòng lệnh (chỉ cần mở terminal lên, gõ python là bạn vào ngay môi trường code python bằng dòng lệnh) hoặc là bạn nên dùng Sublime Text.

Thiết lập Sublime Text để chạy Python

Bạn có thể theo dõi video hướng dẫn chi tiết của anh Corey Schafer.

Cài theme đẹp và thuận mắt:

  1. Nhấn Ctrl + Shift + P để mở Command Palette (Tool > Command Palette…)
  2. Gõ tìm và cài Package Control (trong trường hợp bạn chưa cài Package Control, bạn có thể tham khảo link này để cài)
  3. Gõ tìm và cài tiếp PredawnMaterial Theme.

Sau đó mở Preferences > Settings và xóa hết các cái không cần thiết bên -User và dán cái sau vào (đây là thiết lập sẵn).

{
  "bold_folder_labels": true,
  "caret_extra_width": 1,
  "caret_style": "phase",
  "close_windows_when_empty": false,
  "theme": "Material-Theme-Darker.sublime-theme",
  "color_scheme": "Packages/Predawn/predawn.tmTheme",
  "copy_with_empty_selection": false,
  "drag_text": false,
  "draw_minimap_border": true,
  "enable_tab_scrolling": false,
  "ensure_newline_at_eof_on_save": true,
  "file_exclude_patterns":
  [
      "*.pyc",
      "*.pyo",
      "*.exe",
      "*.dll",
      "*.obj",
      "*.o",
      "*.a",
      "*.lib",
      "*.so",
      "*.dylib",
      "*.ncb",
      "*.sdf",
      "*.suo",
      "*.pdb",
      "*.idb",
      ".DS_Store",
      "*.class",
      "*.psd",
      "*.sublime-workspace"
  ],
  "font_face": "Source Code Pro",
  "font_options":
  [
      "no_round"
  ],
  "font_size": 15,
  "highlight_line": true,
  "highlight_modified_tabs": true,
  "ignored_packages":
  [
      "Vintage"
  ],
  "line_padding_bottom": 1,
  "line_padding_top": 1,
  "match_brackets_content": false,
  "match_selection": false,
  "match_tags": false,
  "material_theme_accent_graphite": true,
  "material_theme_compact_sidebar": true,
  "open_files_in_new_window": false,
  "overlay_scroll_bars": "enabled",
  "preview_on_click": false,
  "scroll_past_end": true,
  "scroll_speed": 5.0,
  "show_definitions": false,
  "show_encoding": true,
  "show_errors_inline": false,
  "show_full_path": false,
  "sidebar_default": true,
  "theme": "Default.sublime-theme",
  "translate_tabs_to_spaces": true,
  "trim_trailing_white_space_on_save": true,
  "use_simple_full_screen": true,
  "word_wrap": true
}

Tìm và cài thêm các packages sau (cũng bằng cách mở Package Control như ở trên)

  • BracketHighlighter: Hiện đóng và mở ngoặc ở một cột nhỏ bên trái để biết cụm code nào là chung nhau.
  • SidebarEnhancement: thêm option vào trong thanh sidebar bên trái.
  • Anaconda: cài để ST nhận ra Anaconda chúng ta đã cài. Sau khi cài xong package này, bạn vào Preferences > Package settings > Anaconda > Settings – Users và dán đoạn code sau vào đó (trong đây có option auto_formatting sẽ tự động xóa khoảng trắng thừa nếu như mình có nhập nhiều khoảng trắng quá):
    {       "auto_formatting": true,       "autoformat_ignore":       [               "E309",               "E501"       ],       "pep8_ignore":       [               "E309",               "E501"       ],       "anaconda_linter_underlines": false,       "anaconda_linter_mark_style": "none",       "display_signatures": false,       "disable_anaconda_completion": true }

Trong trường hợp bạn có nhiều phiên bản python khác nhau và muốn mỗi cái có một cách build riêng trong ST, hãy vào Tools > Build System > New Build System… rồi dán cái sau vào

{
  "cmd": ["/home/thi/anaconda3/bin/python", "-u", "$file"],
  "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
  "quiet": true
}

Sau khi chọn được build thích hợp, mỗi lần chạy code, bạn chỉ cần nhấn Ctrl + B.

bài tiếp theo, chúng ta sẽ thử xem khi chạy một đoạn code python thì điều gì thực sự diễn ra đằng sau “hậu trường”?