Python 1 — Nhập môn & Môi trường
Python là gì và vì sao nó phổ biến
Python là một ngôn ngữ lập trình bậc cao, thông dịch (interpreted), với cú pháp gần với ngôn ngữ tự nhiên. Thay vì phải khai báo kiểu dữ liệu rườm rà hay quản lý bộ nhớ thủ công, bạn viết những dòng lệnh ngắn gọn, dễ đọc, và máy tính sẽ thực thi từng dòng một.
Điều làm Python đặc biệt là triết lý thiết kế của nó, được tóm gọn trong "The Zen of Python" (gõ import this trong Python để xem). Ba ý quan trọng nhất:
- Dễ đọc hơn dễ viết: code được đọc nhiều hơn được viết, nên ưu tiên sự rõ ràng.
- Tường minh hơn ngầm định: hạn chế những "phép màu" khó hiểu.
- Đơn giản hơn phức tạp: luôn có một cách hiển nhiên để làm một việc.
Vì sao data và AI chọn Python
Python thống trị lĩnh vực dữ liệu và trí tuệ nhân tạo không phải vì nó nhanh (thực ra nó khá chậm so với C hay Rust), mà vì hệ sinh thái thư viện khổng lồ và độ dễ tiếp cận:
- NumPy / Pandas: xử lý mảng số và bảng dữ liệu cực mạnh, phần lõi viết bằng C nên vẫn nhanh.
- scikit-learn / PyTorch / TensorFlow: học máy và học sâu.
- Matplotlib / Plotly: trực quan hóa.
- Jupyter: môi trường thử nghiệm tương tác, lý tưởng cho phân tích dữ liệu.
Người làm khoa học dữ liệu thường không phải là kỹ sư phần mềm chuyên nghiệp; họ cần một ngôn ngữ cho phép thử ý tưởng nhanh. Python đáp ứng điều đó: bạn có thể viết một đoạn phân tích trong vài phút thay vì vài giờ.
Lưu ý: Trong nền tảng này, các khối
pythonchỉ là ví dụ minh hoạ. Code Python không chạy trong SQL Builder. Để thực hành, hãy cài Python trên máy của bạn theo hướng dẫn bên dưới.
Cài đặt và chọn phiên bản
Quy tắc đầu tiên: luôn dùng Python 3. Python 2 đã ngừng hỗ trợ từ năm 2020. Trên hầu hết hệ thống, lệnh là python3 chứ không phải python (trên một số máy python có thể trỏ tới Python 2 cũ hoặc không tồn tại).
Kiểm tra xem đã có Python chưa
Mở terminal (hoặc Command Prompt trên Windows) và gõ:
# Đây là lệnh terminal, KHÔNG phải code Python.
# Gõ trong cửa sổ dòng lệnh:
python3 --version
# Kết quả mong đợi, ví dụ:
# Python 3.12.4
Nếu thấy số phiên bản 3.x thì bạn đã sẵn sàng. Nếu báo lỗi "command not found", hãy cài đặt theo hệ điều hành:
- Windows: tải bộ cài từ python.org, nhớ tích chọn "Add Python to PATH" khi cài.
- macOS: dùng
brew install python3(Homebrew) hoặc tải từ python.org. - Linux (Ubuntu/Debian): thường đã có sẵn; nếu chưa thì
sudo apt install python3.
Phiên bản nào nên dùng
Nên dùng phiên bản ổn định gần nhất (ví dụ 3.11, 3.12 hoặc mới hơn). Tránh phiên bản quá mới vừa ra mắt vì một số thư viện có thể chưa kịp hỗ trợ. Khi làm dự án thực tế, ta sẽ dùng môi trường ảo (virtual environment) để mỗi dự án có bộ thư viện riêng, nhưng đó là chủ đề nâng cao hơn.
REPL và script: hai cách chạy Python
Có hai cách chính để thực thi code Python, và bạn cần hiểu sự khác biệt.
REPL: chạy tương tác từng dòng
REPL viết tắt của Read-Eval-Print-Loop: đọc lệnh, thực thi, in kết quả, lặp lại. Gõ python3 (không kèm tên file) để vào REPL:
# Sau khi gõ python3 và Enter, bạn thấy dấu nhắc >>>
>>> 2 + 3
5
>>> ten = "Lan"
>>> print("Xin chao", ten)
Xin chao Lan
>>> exit() # thoát REPL
REPL rất hợp để thử nhanh một biểu thức, kiểm tra cách một hàm hoạt động, hoặc tính toán nhanh. Nhược điểm: code không được lưu lại.
Script: lưu code vào file và chạy
Khi cần viết chương trình dài hơn vài dòng, bạn lưu code vào một file .py rồi chạy nó:
# Đây là nội dung file: hello.py
ten = "Lan"
print("Xin chao", ten)
print("Chao mung den voi Python")
Sau đó trong terminal:
# Lệnh terminal (không phải code Python):
python3 hello.py
# Kết quả in ra:
# Xin chao Lan
# Chao mung den voi Python
Sơ đồ dưới đây tóm tắt luồng quyết định nên dùng cách nào:
Biến và phép gán
Biến là một cái tên trỏ tới một giá trị. Trong Python, bạn tạo biến đơn giản bằng dấu =, không cần khai báo kiểu trước:
tuoi = 25 # số nguyên
chieu_cao = 1.72 # số thực
ten = "An" # chuỗi
da_dang_ky = True # giá trị đúng/sai
print(ten, tuoi, chieu_cao, da_dang_ky)
# In ra: An 25 1.72 True
Vài điểm quan trọng về biến:
- Gán lại được: một biến có thể trỏ tới giá trị mới bất cứ lúc nào, kể cả kiểu khác.
- Tên biến nên viết bằng chữ thường, dùng dấu gạch dưới ngăn cách (snake_case), ví dụ
so_luong_san_pham. - Tên biến phân biệt hoa thường:
Tenvàtenlà hai biến khác nhau. - Không bắt đầu bằng số, không chứa dấu cách, không dùng từ khóa (như
if,for,class).
x = 10
x = "bay gio la chuoi" # hoan toan hop le, x doi sang kieu chuoi
print(x) # In ra: bay gio la chuoi
Các kiểu dữ liệu cơ bản
Python có một số kiểu dữ liệu nền tảng mà bạn sẽ gặp hằng ngày.
int — số nguyên
Số không có phần thập phân: 0, 42, -7. Python xử lý số nguyên rất lớn không giới hạn (khác nhiều ngôn ngữ khác).
so = 1000000
binh_phuong = so * so
print(binh_phuong) # In ra: 1000000000000
float — số thực
Số có phần thập phân: 3.14, -0.5, 2.0. Lưu ý: float dùng biểu diễn nhị phân nên đôi khi có sai số nhỏ.
print(0.1 + 0.2) # In ra: 0.30000000000000004 (sai so nhi phan)
print(round(0.1 + 0.2, 2)) # Lam tron 2 chu so: 0.3
str — chuỗi ký tự
Văn bản, đặt trong dấu nháy đơn '...' hoặc nháy kép "...":
loi_chao = "Xin chao"
ho_ten = 'Nguyen Van A'
# Noi chuoi bang dau +
cau = loi_chao + ", " + ho_ten
print(cau) # In ra: Xin chao, Nguyen Van A
print(len(cau)) # Do dai chuoi
bool — giá trị logic
Chỉ có hai giá trị: True và False (viết hoa chữ cái đầu). Thường là kết quả của phép so sánh.
print(5 > 3) # True
print(10 == 10) # True
print("a" == "b") # False
None — giá trị rỗng
None đại diện cho "không có giá trị". Nó khác với 0, khác với chuỗi rỗng "". Thường dùng làm giá trị mặc định khi chưa có dữ liệu.
ket_qua = None
print(ket_qua) # In ra: None
print(ket_qua is None) # True - cach kiem tra dung
Xem kiểu của một giá trị
Dùng hàm type():
print(type(42)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type("hi")) # <class 'str'>
print(type(True)) # <class 'bool'>
print(type(None)) # <class 'NoneType'>
Ép kiểu (type conversion)
Đôi khi bạn cần chuyển một giá trị từ kiểu này sang kiểu khác. Python cung cấp các hàm dựng sẵn: int(), float(), str(), bool().
# Tu chuoi sang so
tuoi_chuoi = "30"
tuoi_so = int(tuoi_chuoi)
print(tuoi_so + 5) # In ra: 35
# Tu so sang chuoi
diem = 9.5
thong_bao = "Diem cua ban la " + str(diem)
print(thong_bao) # In ra: Diem cua ban la 9.5
# Tu float sang int (cat phan thap phan, KHONG lam tron)
print(int(3.99)) # In ra: 3
Cẩn thận: ép kiểu sai sẽ gây lỗi. int("abc") sẽ báo ValueError. Đây là lỗi thường gặp khi xử lý dữ liệu nhập từ người dùng.
f-string: định dạng chuỗi hiện đại
Cách nối chuỗi bằng + rất phiền vì phải tự ép kiểu. Python có f-string (từ phiên bản 3.6) gọn và dễ đọc hơn nhiều. Đặt chữ f trước dấu nháy, rồi nhúng biến trong dấu {}:
ten = "Mai"
diem = 8.75
# Cach cu, dai dong:
print("Hoc vien " + ten + " co diem " + str(diem))
# Cach moi voi f-string:
print(f"Hoc vien {ten} co diem {diem}")
# Ca hai in ra: Hoc vien Mai co diem 8.75
f-string còn cho phép tính toán và định dạng ngay trong dấu ngoặc:
gia = 100000
so_luong = 3
print(f"Tong tien: {gia * so_luong} dong") # Tong tien: 300000 dong
# Dinh dang so thuc 2 chu so thap phan:
ty_le = 0.8523
print(f"Ty le: {ty_le:.2%}") # Ty le: 85.23%
print(f"PI xap xi {3.14159:.2f}") # PI xap xi 3.14
input và print: giao tiếp với người dùng
print() in ra màn hình, input() đọc dữ liệu người dùng nhập từ bàn phím. Lưu ý quan trọng: input() luôn trả về chuỗi, nên nếu cần số phải ép kiểu.
ten = input("Nhap ten cua ban: ")
print(f"Xin chao, {ten}!")
# input tra ve chuoi, phai ep sang int de tinh toan
nam_sinh = int(input("Nhap nam sinh: "))
tuoi = 2026 - nam_sinh
print(f"Ban {tuoi} tuoi.")
print() có thể nhận nhiều giá trị, ngăn cách bằng dấu phẩy, và tự thêm khoảng trắng:
print("a", "b", "c") # a b c
print("a", "b", sep="-") # a-b (doi ky tu ngan cach)
print("khong xuong dong", end=" ") # khong tu them dau xuong dong
print("cung dong") # khong xuong dong cung dong
Comment và quy ước PEP8 cơ bản
Comment — chú thích
Comment là dòng giải thích, máy bỏ qua khi chạy. Dùng dấu #:
# Day la mot comment, Python bo qua dong nay
gia = 50000 # comment cung co the dat cuoi dong code
# Comment giai thich "tai sao", khong phai "lam gi":
# Dung VAT 10% theo quy dinh hien hanh
thanh_tien = gia * 1.1
PEP8 — phong cách viết code chuẩn
PEP8 là tài liệu quy ước cách viết Python "đẹp" mà cộng đồng tuân theo. Người mới nên nhớ vài quy tắc cốt lõi:
- Thụt lề bằng 4 dấu cách (không dùng Tab lẫn lộn). Thụt lề ở Python là bắt buộc, không phải để cho đẹp — nó xác định khối lệnh.
- Đặt dấu cách quanh toán tử: viết
x = a + bchứ không phảix=a+b. - Tên biến và hàm: snake_case (
tinh_tong). - Tên hằng số: VIẾT_HOA (
MAX_SIZE = 100). - Mỗi dòng không nên quá dài (truyền thống là dưới 79–99 ký tự).
- Một dòng trống ngăn cách các khối logic để dễ đọc.
# Tot - tuan theo PEP8
def tinh_dien_tich(chieu_dai, chieu_rong):
dien_tich = chieu_dai * chieu_rong
return dien_tich
# Khong tot - kho doc, vi pham PEP8
def f(a,b):return a*b
Bạn không cần thuộc lòng toàn bộ PEP8. Các công cụ như black (tự định dạng) hay flake8 (kiểm tra) sẽ giúp bạn sau này.
Tóm tắt
Trong bài này bạn đã nắm được nền tảng để bắt đầu với Python:
- Python là ngôn ngữ dễ đọc, mạnh về hệ sinh thái, nên thống trị data và AI.
- Luôn dùng Python 3 và lệnh
python3; kiểm tra bằngpython3 --version. - REPL để thử nhanh, script
.pyđể lưu và chạy chương trình bằngpython3 file.py. - Tạo biến không cần khai báo kiểu; các kiểu cơ bản là
int,float,str,bool,None. - Ép kiểu bằng
int(),float(),str(); nhớ rằnginput()luôn trả về chuỗi. - f-string là cách định dạng chuỗi hiện đại, gọn gàng.
- Viết comment để giải thích, tuân PEP8 (thụt lề 4 dấu cách, snake_case) để code dễ đọc.
Tự kiểm tra
- Sự khác nhau giữa REPL và chạy script là gì? Khi nào nên dùng cách nào?
- Vì sao
int("30") + 5cho ra35nhưng"30" + 5lại báo lỗi? - Hàm
input()trả về kiểu dữ liệu gì? Nếu muốn dùng giá trị nhập vào để tính toán số học thì phải làm gì? - Viết một f-string in ra "Gia tien: 99000 dong" với biến
gia = 99000. - Kể tên ba quy tắc PEP8 cơ bản mà bạn nên áp dụng ngay từ đầu.
Đọc tiếp
Bài viết liên quan
Vì sao Python là ngôn ngữ số một của data engineer: vai trò trong pipeline (ingest/transform/orchestrate), hệ sinh thái thư viện (pandas/polars/pyarrow/sqlalchemy), quản lý môi trường (venv/uv/poetry), và khi nào dùng Python vs SQL/Spark.
Định nghĩa hàm, tham số, *args/**kwargs, lambda, module/package, pip và virtualenv.
Lớp, kế thừa, đa hình, dunder methods, dataclass, type hints và nguyên tắc viết code sạch.
Exception handling, context manager (with), đọc/ghi file, JSON/CSV và logging đúng cách.