Nhảy đến nội dung chính

Kỹ thuật lập trình Python

Kiểu dữ liệu

Literal

Literal là một tính năng được cung cấp bởi module typing (hoặc typing_extensions nếu bạn dùng Pyt...

TypedDict

TypedDict là một lớp đặc biệt trong module typing (hoặc typing_extensions cho Python < 3.8), cho ...

Enum

Enum là một kiểu dữ liệu cho phép bạn định nghĩa tập hợp các hằng số có tên. Mỗi giá trị trong en...

Union (hoặc | từ Python 3.10+)

Union cho phép một biến hoặc một tham số có thể có nhiều kiểu giá trị. Nó đến từ module typing, ...

Optional

Giống như Union[X, None], dùng cho giá trị có thể bị bỏ qua: from typing import Optional def ...

Any

Biến có thể là bất kỳ kiểu gì – dùng khi không thể đoán trước kiểu hoặc muốn bỏ qua kiểm tra: fr...

Callable

Trong Python, Callable là một kiểu dữ liệu đặc biệt dùng để đại diện cho một hàm (function) hoặc ...

Annotated

Dùng để thêm metadata cho type (hữu ích với Pydantic hoặc FastAPI): from typing import Annotated...

NewType

Tạo kiểu mới dựa trên kiểu cũ, nhưng giúp rõ ràng hơn về mặt ngữ nghĩa: from typing import NewTy...

Final

Dùng để đánh dấu rằng biến hoặc class không nên bị ghi đè hoặc kế thừa: from typing import Final...

Self (Python 3.11+)

Cho phép annotate chính class đang được định nghĩa: class Counter: def increment(self) -> S...

Generic

Generics cho phép bạn xác định kiểu dữ liệu một cách tổng quát, giúp viết code linh hoạt và an to...

Một số kỹ thuật hay dùng

Monkey patch

Monkey patch là kỹ thuật thay đổi hoặc mở rộng hành vi của một hàm, method, class, hoặc module tạ...

Monkey patch phù hợp từng trường hợp trong Django

I. Monkey patch một model method Ví dụ: bạn muốn override method save của User model trong Djang...

Decorator – Gói thêm chức năng cho hàm

Decorator là một khái niệm cực kỳ mạnh mẽ và phổ biến trong Python – đặc biệt khi bạn muốn gói th...

Annotated

Annotated trong Python là cách để gắn thêm thông tin (metadata) vào một kiểu dữ liệu. Cú pháp: ...

Context Manager (with) – Quản lý tài nguyên

Dùng để xử lý logic mở/đóng tự động: file, kết nối, khóa, transaction... with open("file.txt", "...

Metaclass – Tùy biến hành vi của class

Metaclass cho phép bạn thay đổi cách class được tạo ra. class Meta(type): def __new__(cls, ...

Dynamic import (runtime import)

Giúp bạn import module hoặc class dựa theo tên chuỗi, rất mạnh khi viết plugin hoặc hệ thống mở r...

Signal/Event Hooks

Frappe/Django dùng signal để gọi logic khi có sự kiện xảy ra. from frappe.model.document import ...

Strategy Pattern với Dictionary

Dùng dict để map các hàm theo key, tiện xử lý logic thay vì if-elif dài dòng: def add(x, y): ret...

Caching / Memoization

Dùng để lưu kết quả tạm để tránh tính toán lại: from functools import lru_cache @lru_cache(ma...

Metadata

Metadata nghĩa là "dữ liệu về dữ liệu" — tức là thông tin mô tả về một dữ liệu nào đó. Hay nói c...

lambda

lambda trong Python là một hàm ẩn danh (anonymous function) – tức là một hàm không cần đặt tên. ...

functools

functools là một module chuẩn trong Python, cung cấp các công cụ giúp thao tác và cải tiến hàm – ...

MyPy

MyPy là một trình kiểm tra kiểu tĩnh (static type checker) cho ngôn ngữ lập trình Python. Mặc dù ...

yield

yield là một từ khóa trong Python, dùng để tạm dừng một hàm và trả về một giá trị, nhưng không kế...

yeild nâng cao

yield nâng cao – tức là những cách dùng yield ở mức cao hơn, như: yield như kênh giao tiếp 2...

Kỹ thuật hay và gọn gàng khi thao tác với danh sách (list)

1. List Comprehension – Viết gọn vòng lặp trong danh sách Cơ bản: numbers = [1, 2, 3, 4, 5] sq...

Pydantic

Pydantic là một thư viện Python dùng để: Tạo các class dữ liệu kiểu an toàn (type-safe) ...

Dataclass

dataclass là một decorator được thêm vào từ Python 3.7 trong module dataclasses. Nó giúp bạn tự đ...

defaultdict

defaultdict là một lớp trong module collections, giống như dict, nhưng khi bạn truy cập một key k...