Python là gì?
Bạn sẽ học được
- Python là gì và vì sao nó phổ biến trong phân tích dữ liệu.
- Một chương trình Python chạy qua những bước nào.
- Vì sao thụt lề là một phần của cú pháp, không phải trang trí.
- Python khác SQL ở đâu và hai công cụ phối hợp thế nào.
- Phiên bản nào nên cài và lộ trình học tiếp.
Khái niệm cốt lõi
Python là ngôn ngữ lập trình thông dịch, kiểu động, đa mục đích, ra đời năm 1991 và hiện là một trong những ngôn ngữ phổ biến nhất thế giới. Ba tính từ đó cần hiểu đúng:
Thông dịch nghĩa là mã nguồn được đọc và thực thi từng bước, không cần biên dịch thành file chạy riêng như C hay Go. Bạn sửa file, chạy lại, thấy kết quả ngay — vòng phản hồi ngắn, rất hợp để khám phá dữ liệu.
Kiểu động nghĩa là biến không cần khai báo kiểu. Cùng một tên có thể chứa số rồi chứa chuỗi. Thuận tiện khi viết nhanh, nhưng cái giá là một số lỗi chỉ lộ ra lúc chạy, không phải lúc viết.
Đa mục đích nghĩa là cùng một ngôn ngữ dùng được cho web, tự động hoá, khoa học dữ liệu, học máy. Với người học dữ liệu, đây là điểm mạnh lớn: bạn học một ngôn ngữ, dùng cho nhiều việc.
Hệ sinh thái là lý do thực tế nhất khiến Python thắng trong phân tích dữ liệu:
| Thư viện | Việc nó làm |
|---|---|
pandas | Bảng dữ liệu, đọc CSV/Excel, gom nhóm, nối bảng |
numpy | Mảng số, tính toán vector hoá |
matplotlib / seaborn | Biểu đồ |
scikit-learn | Học máy cổ điển |
requests | Gọi API |
pathlib / csv / json | Xử lý file có sẵn trong thư viện chuẩn |
Chương trình đầu tiên:
print("Xin chào, DataHọc!")Xin chào, DataHọc!print là một hàm có sẵn. Dấu ngoặc đơn bao đối số; chuỗi đặt trong dấu nháy. Không có dấu chấm phẩy kết câu, không có main, không cần khai báo kiểu.
Một chương trình chạy qua những bước nào
Khi bạn gõ python hello.py:
- Đọc file mã nguồn, kiểm tra cú pháp.
- Biên dịch sang bytecode — một dạng trung gian không phụ thuộc cú pháp.
- Máy ảo Python (PVM) thực thi bytecode từng lệnh.
Bước 2 giải thích vì sao Python không chậm như người ta tưởng: cú pháp chỉ được phân tích một lần, sau đó máy ảo chạy các lệnh đã tối giản. Bytecode được cache trong thư mục __pycache__ để lần chạy sau nhanh hơn.
Điều này cũng giải thích một lỗi quen thuộc:
print("dòng 1")
print("dòng 2" File "hello.py", line 2
print("dòng 2"
^
SyntaxError: '(' was never closedPython báo lỗi trước khi chạy bất kỳ dòng nào, vì bước 1 thất bại. Toàn bộ file bị từ chối. Đây là điểm khác với lỗi lúc chạy (NameError, ValueError), chỉ xuất hiện khi chương trình đi đến đúng dòng đó.
Thụt lề là cú pháp
Trong nhiều ngôn ngữ, khối lệnh được bao bằng { }. Python dùng thụt lề:
age = 20
if age >= 18:
print("Người lớn")
print("Được mở tài khoản")
print("Luôn chạy dòng này")Bốn dấu cách (hoặc một tab, nhưng phải nhất quán) đánh dấu hai lệnh nằm trong if. Dòng cuối không thụt lề nên nằm ngoài, luôn chạy.
Quy ước cộng đồng: 4 dấu cách, không dùng tab. Trộn tab và dấu cách trong cùng file là lỗi cú pháp khó nhìn:
IndentationError: unindent does not match any outer indentation levelThụt lề sai không chỉ gây lỗi mà còn có thể thay đổi ý nghĩa mà chương trình vẫn chạy:
for i in range(3):
print("trong vòng lặp", i)
print("vẫn trong vòng lặp")
for i in range(3):
print("trong vòng lặp", i)
print("ngoài vòng lặp")Khối thứ hai in "ngoài vòng lặp" đúng một lần; khối thứ nhất in nó ba lần. Cùng các dòng lệnh, khác thụt lề, khác hành vi.
Python và SQL
Nếu bạn đã học SQL, hai công cụ này không thay thế nhau:
| Việc | Công cụ phù hợp |
|---|---|
| Lọc, gom nhóm, nối bảng trong cơ sở dữ liệu | SQL |
| Làm sạch dữ liệu phức tạp, xử lý văn bản, gọi API | Python |
| Huấn luyện mô hình | Python |
| Báo cáo định kỳ trong kho dữ liệu | SQL, đôi khi Python |
Mô hình phổ biến: SQL lấy dữ liệu đã tổng hợp từ cơ sở dữ liệu, Python xử lý tiếp và trực quan hoá. Biết cả hai là lợi thế, không phải học lại từ đầu.
Một điểm khác biệt về tư duy: SQL mô tả kết quả mong muốn, Python mô tả các bước thực hiện. SQL nói "lấy trung bình doanh thu theo tháng"; Python nói "duyệt từng dòng, cộng vào một từ điển, chia cho số dòng". Cùng bài toán, hai cách diễn đạt.
Chọn phiên bản
Khóa học dùng Python 3.12 trở lên. Hai lý do:
match-case(chương 2) cần Python 3.10+.- Các phiên bản cũ hơn đã hết hỗ trợ bảo mật.
Python 2 đã ngừng hỗ trợ từ 2020. Nếu thấy tài liệu dùng print "hello" không có ngoặc, đó là Python 2 — bỏ qua.
Trên macOS và Linux thường có sẵn python3. Trên Windows, cài từ python.org và nhớ tick "Add python.exe to PATH". Bài tiếp theo đi vào chi tiết cài đặt, môi trường ảo và REPL.
Thực hành
- Chạy
print("Xin chào, DataHọc!")trong trình soạn thảo hoặc REPL. - Viết ba dòng
print, cố ý bỏ một dấu ngoặc đóng, chạy và đọc thông báo lỗi. Xác định số dòng Python báo. - Viết một
ifin ra hai dòng khi tuổi >= 18 và một dòng luôn chạy ở ngoài. - Thử thụt lề dòng cuối vào trong
ifvà quan sát số lần in thay đổi. - Liệt kê ba việc trong công việc hiện tại của bạn mà Python có thể tự động hoá.
Lỗi thường gặp
| Triệu chứng | Nguyên nhân | Cách sửa |
|---|---|---|
SyntaxError: '(' was never closed | Thiếu dấu đóng | Đếm lại ngoặc trên dòng được báo |
IndentationError | Trộn tab và dấu cách | Cấu hình editor dùng 4 dấu cách |
NameError: name 'x' is not defined | Dùng biến trước khi gán, hoặc gõ sai tên | Kiểm tra thứ tự và chính tả |
python: command not found | Chưa cài hoặc chưa vào PATH | Dùng python3, hoặc cài lại có PATH |
| Chạy file nhưng không có gì xảy ra | File chỉ định nghĩa hàm, không gọi | Thêm lời gọi ở cuối |
In ra None ngoài ý muốn | print(print(...)) hoặc hàm không return | Kiểm tra giá trị trả về |
Tóm tắt
- Python là ngôn ngữ thông dịch, kiểu động, mạnh nhất ở hệ sinh thái dữ liệu.
- Mã nguồn được kiểm tra cú pháp trước khi chạy; lỗi cú pháp chặn toàn bộ file.
- Thụt lề là cú pháp, quy ước 4 dấu cách, không trộn tab.
- SQL và Python bổ sung nhau: SQL cho cơ sở dữ liệu, Python cho xử lý và mô hình.
- Dùng Python 3.12+;
match-casecần 3.10+.
Use ← → to move between lessons