Wednesday, 13 April 2011

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI
Updated: 130617
Sau đây là các tài liệu khuyên dùng:

Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017)

Chuẩn bị:
1. biết bật tắt máy
2. biết cài python
3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất.

Tài liệu
- Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại
http://www.familug.org/2016/12/free-ebook.html

Căn bản, mới học

1.1 Python PyMI.vn https://pymi.vn/tutorial/
1.2. Python offical tutorial
kết hợp làm bài tập trên HackerRank (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm).

Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả.

Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ python (để biết Python có những gì, xem ở đây )

1.3 Các tut how-to của python.org https://docs.python.org/3/howto/index.html
1.5 FAQ: https://docs.python.org/3/faq/programming.html

2. Học lại từ đầu một lần nữa sau khi đã hoàn thành [1] với Dive Into Python #người đã từng lập trình các ngôn ngữ khác, hậu newbie

Đọc các câu hỏi / trả lời trên Stackoverflow: http://stackoverflow.com/questions/tagged/python
Học thêm về làm web, deploy tại FullStack Python  
Một website khác tổng hợp các nguồn tài liệu học Python: http://wiht.link/python-guide
Tham khảo lớp học Python của Google: https://developers.google.com/edu/python/?csw=1


 Những điều cần biết/ nên biết/ phải biết
  • Pythonic : pep8
  • python -c 'import this' 
  • Virtualenv
  • Pip
  • Pypi
  • IPython (the better you know it, the easier your life is)
  • pdb / ipdb
  • ...

Tài liệu cho các "chuyên ngành" hẹp
Bên dưới chỉ là những cái tên, cho nó vào google và bạn có thể tìm được các tài liệu liên quan đến nó. Thông thường, document của các trang này rất đầy đủ, nhiều thông tin bổ ích (ví dụ: flask)

Web
Flask
Django
CherryPy
Bottlepy
...

Game
Pygame
...

Tính toán khoa học
Numpy
Scipy
Pandas
scikit-learn 
Theano
...

Scripting - quản trị hệ thống
Chủ yếu sử dụng library có sẵn :  
- subprocess để gọi các câu lệnh CLI
- os, sys để xử lý các thông tin liên quan đến hệ điều hành, hệ thống, path ...
- nagiosplugin để viết plugin NRPE
...



Networking/system
twisted https://twistedmatrix.com/trac/
Scapy 

Reverse engineering
...


Crawler
Scrapy


Async
gevent

Các tài liệu tham khảo có thể tìm ở đây: http://www.familug.org/search/label/Book

IDE/Editor
Pycharm (chỉ free 30 ngày, cực xịn :3) (Win-Linux-Mac)
Emacs
Vim
Sublime Text 3
PyScripter (Windows)

http://stackoverflow.com/questions/81584/what-ide-to-use-for-python

PS:
Học theo kiểu HVN hướng dẫn: 
1. Học các khái niệm cơ bản ở đây và sau đó đọc thêm trong Python tutorial
2. Làm 20 bài PE. (kết hợp như bài tập khi học các chương ở bước 1) http://projecteuler.net/
2.1 Làm tới 500 điểm HackerRank
2.5 : học nốt chương 9 là điều tuyệt vời, nên biết cách tự định nghĩa 1 class, tạo instance của 1 class đã có sẵn.
3. Đến đây coi như biết lập trình cơ bản rồi, chọn vũ khí để nhét vào bao đồ xách đi chiến tiếp: (phần này tùy chọn, nhưng phải chọn ít nhất 3 cái)
- SQL (import sqlite3)
- JSON + requests (http://www.python-requests.org/en/latest/)
- Web framework: flask / django (CẢ HAI)
- logging (import logging) / debugger (import pdb)
- multiprocess / gevent

4. Tất nhiên là không phải đợi xong bước 3, bước này kết hợp với quá trình học bước 3 để viết code chuẩn /đẹp / xinh + hiệu quả:
- pep8 + import this  + ipython + pip + virtualenv

5. Đến đây thì tự biết mình phải học gì rồi, bye :D

23 comments:

  1. A byte of python: http://www.ibiblio.org/g2swap/byteofpython/files/120/byteofpython_120.pdf

    Dive Into Python 2: http://www.diveintopython.net/

    ReplyDelete
  2. http://learnpythonthehardway.org/book/

    http://inventwithpython.com/chapters/

    ReplyDelete
  3. t có ý định update bài này thành 1 bài hướng dẫn đày đủ +Lưư Hải +Trần Dũng có tài liệu gì thì comment để t update nhé

    ReplyDelete
  4. quên không nói thêm, đây cũng là tài liệu rất hay về Image Processing trên python nên bạn nào thích khám phá có thể triển luôn rồi ngồi đàn đạo với mình cũng hay đấy.

    Được cái tiền kiếm được không bằng các pro khác thôi !

    ReplyDelete
    Replies
    1. khoe mà không share hả?
      thế về nhà mà khoe nhé \m/

      Delete
    2. bị nghẽn băng thông đấy ông tướng ạ, cái cm trước éo hiện.

      programming computer vision with python
      http://it-ebooks.info/book/836/

      phải học ngôn ngữ mới rồi, code ngắn vãi chưởng :((

      Delete
  5. website python việt nam
    http://pythonvietnam.info
    http://vithon.org

    ReplyDelete
    Replies
    1. mình thì không khuyến khích người học đọc tài liêu Tiếng Việt nhưng rất khuyến khích họ VIẾT tài liệu Tiếng Việt.

      Delete
    2. câu dưới đá câu trên rồi mày ơi

      Delete
    3. viết cho người khác đọc (vì không phải ai cũng đọc được tiếng Anh), đập đầu vào tường đi Chung

      Delete
    4. từ ngày tôi đi làm, tôi chưa 1 lần phải nói / nghe / nghĩ đến các từ như: danh sách, từ điển, blah blah...
      Thứ mà tôi học là list, dict, tuple, và khi tôi cần google, cần StackOverflow, tôi cũng chỉ có những từ đấy. Còn nếu anh muốn học danh sách, từ điển, và cái j đó nữa tôi không rõ thì đến lúc anh cần, anh lại phải tìm xem tiếng Anh nó là từ gì... vậy là anh làm nhiều việc hơn tôi rồi :3
      Ngày đi học tôi được học từ "tuyến tính" và công nhận là tôi ngu thật, vì chả thể hiểu nó nghĩa là gì. Một từ hán Việt! đến khi tôi biết tiếng Anh nó là linear, tôi biết nó là thứ gì đó có tính chất của "line - đường thẳng", mọi thứ rõ ràng hơn nhiều. Đều là 1 công học, anh học từ tuyến tính còn tôi học từ linear, đến lúc google, hi vọng anh tìm được nhiều kết quả tốt hơn tôi :3... chưa bàn đến sự giới hạn (số lượng) và thiếu chính xác của các tài liệu dịch.

      Delete
  6. new pep8 http://hg.python.org/peps/rev/fb24c80e9afb

    ReplyDelete
  7. Testing: py.test (http://pytest.org/) hoặc http://docs.python.org/2/library/unittest.html

    ReplyDelete
  8. Template: jinja2 http://jinja.pocoo.org/

    ReplyDelete
  9. Meta class
    http://www.python.org/doc/essays/metaclasses/meta-vladimir.txt

    ReplyDelete
  10. http://tmp.devcharm.com/pages/python-modules-you-should-know

    ReplyDelete
  11. Super micro web-framework http://bottlepy.org/docs/dev/tutorial.html

    ReplyDelete
  12. Crypto: https://pypi.python.org/pypi/pycrypto
    Tại thời điểm comment này, Crypto đã khá stable và là lựa chọn được yêu thích hơn là M2Crypto (đã không còn được maintain nữa)

    ReplyDelete
  13. update: add SO Link http://stackoverflow.com/questions/tagged/python

    ReplyDelete
  14. update: thêm gevent, twisted, nagiosplugin

    ReplyDelete