Python là ngôn ngữ lập trình thông dịch cấp cao, nổi tiếng với cú pháp ngắn gọn và hệ sinh thái thư viện phong phú. Trong phát triển di động, Python được sử dụng cho các tập lệnh phụ trợ tự động hóa build, huấn luyện mô hình AI/ML và viết logic máy chủ với Django hoặc FastAPI. Theo PYPL (2026), Python đứng đầu thế giới về mức độ phổ biến trong số các ngôn ngữ lập trình.
Những điểm chính
Python là ngôn ngữ thông dịch với kiểu động mạnh và quản lý bộ nhớ tự động. Được tạo bởi Guido van Rossum vào năm 1991. Triết lý ngôn ngữ (The Zen of Python) khuyến khích khả năng đọc mã: «rõ ràng tốt hơn ngầm hiểu», «đơn giản tốt hơn phức tạp». Python 3.12+ hỗ trợ so khớp mẫu (match-case) và generics cải tiến.
Thư viện chuẩn của Python bao gồm các mô-đun để làm việc với JSON (json), HTTP (urllib), lưu trữ (zipfile), biểu thức chính quy (re) và cơ sở dữ liệu (sqlite3). Bên thứ ba — hàng chục nghìn gói trên PyPI với tổng số lượt tải xuống hơn 500 tỷ. PyPI (Python Package Index) là kho lưu trữ gói Python lớn nhất.
Python sử dụng trình thông dịch CPython được viết bằng C. Các triển khai thay thế: PyPy (biên dịch JIT, nhanh hơn 2–5 lần cho Python thuần), Cython (biên dịch Python sang C), Numba (JIT cho tính toán số). Đối với tập lệnh di động, CPython là đủ — tốc độ thông dịch không quan trọng đối với các tác vụ tự động hóa.
Python 2 đã ngừng hỗ trợ vào năm 2020. Tất cả các dự án hiện đại đều sử dụng Python 3. Phiên bản hiện tại là 3.13 (2025) với trình biên dịch JIT cải tiến và hỗ trợ thử nghiệm cho free-threaded Python. Đối với phát triển di động, các phiên bản 3.11–3.12 ổn định và tương thích với tất cả các thư viện chính.
| Phiên bản | Năm | Cải tiến chính |
|---|---|---|
| Python 3.6 | 2016 | f-strings, gợi ý kiểu cho biến |
| Python 3.8 | 2019 | toán tử walrus (:=), tham số chỉ vị trí |
| Python 3.10 | 2021 | match-case, kiểu chính xác, toán tử Union |
| Python 3.11 | 2022 | Tăng tốc CPython 10–60%, nhóm ngoại lệ |
| Python 3.12 | 2023 | Hỗ trợ nạp chồng hàm trong kiểu |
| Python 3.13 | 2025 | Trình biên dịch JIT, chế độ free-threaded |
Python là ngôn ngữ chính cho tập lệnh tự động hóa trong phát triển di động. Nó được sử dụng để build APK và IPA, xử lý tài nguyên chuỗi, tạo màn hình từ bố cục và triển khai lên cửa hàng ứng dụng. Theo Bitrise (2025), hơn 60% đường ống CI/CD của ứng dụng di động bao gồm các bước Python.
Kịch bản phổ biến nhất — Fastlane với Ruby không đáp ứng được mọi nhu cầu và Python bổ sung cho nó: logic xử lý ảnh phức tạp, làm việc với API App Store Connect, phân tích báo cáo Xcode và tạo ảnh chụp màn hình. Tập lệnh Python được gọi qua các bước sh trong Fastfile hoặc trực tiếp trong GitHub Actions.
# Tập lệnh tự động thay đổi kích thước ảnh chụp màn hình ứng dụng
import os
from PIL import Image
def resize_screenshots(input_dir: str, output_dir: str, size: tuple) -> None:
"""Thay đổi kích thước tất cả ảnh chụp PNG theo kích thước cửa hàng yêu cầu."""
for filename in os.listdir(input_dir):
if not filename.lower().endswith(".png"):
continue
path = os.path.join(input_dir, filename)
img = Image.open(path)
resized = img.resize(size, Image.LANCZOS)
out_path = os.path.join(output_dir, filename)
resized.save(out_path, "PNG")
print(f"Resized {filename} -> {out_path}")
resize_screenshots("screenshots_raw", "screenshots_resized", (1242, 2208))Trong ví dụ, tập lệnh duyệt qua tất cả tệp PNG trong thư mục, thay đổi kích thước chúng về kích thước iPhone 6.5" (1242x2208) với bộ lọc LANCZOS để có chất lượng tốt nhất. f-string trong print thay thế tên tệp. Tập lệnh này tiết kiệm hàng giờ làm việc thủ công khi chuẩn bị cửa hàng.
Đối với Android, Python hữu ích khi xử lý tài nguyên chuỗi (strings.xml), tạo tệp dimen cho các mật độ màn hình khác nhau và chuyển đổi đồ họa vector. LXML và xml.etree.ElementTree cho phép phân tích và sửa đổi tài nguyên XML của Android.
# Tạo strings.xml từ tệp CSV có bản dịch
import csv
from xml.etree import ElementTree as ET
from xml.dom import minidom
def csv_to_strings(csv_path: str, lang: str) -> str:
root = ET.Element("resources")
with open(csv_path, "r") as f:
reader = csv.DictReader(f)
for row in reader:
el = ET.SubElement(root, "string")
el.set("name", row["key"])
el.text = row[lang]
rough = ET.tostring(root, encoding="unicode")
parsed = minidom.parseString(rough.encode())
return parsed.toprettyxml(indent=" ")
print(csv_to_strings("translations.csv", "ru"))Python là ngôn ngữ chính cho máy học. TensorFlow, PyTorch, scikit-learn, JAX và Hugging Face Transformers được viết cho Python. Nhà phát triển di động sử dụng Python để huấn luyện mô hình, sau đó được chuyển đổi sang TFLite (Android) hoặc Core ML (iOS) để thực thi trên thiết bị.
TensorFlow Lite là framework của Google cho máy học trên thiết bị. Mô hình được huấn luyện bằng Python được chuyển đổi sang .tflite qua TensorFlow Converter và tải vào ứng dụng Android qua API Interpreter. Đối với iOS, một đường ống tương tự sử dụng PyTorch -> Core ML.
# Huấn luyện mô hình đơn giản để phân loại cử chỉ
import tensorflow as tf
from tensorflow import keras
model = keras.Sequential([
keras.layers.Input(shape=(64, 64, 3)),
keras.layers.Conv2D(32, (3, 3), activation="relu"),
keras.layers.MaxPooling2D(2, 2),
keras.layers.Conv2D(64, (3, 3), activation="relu"),
keras.layers.Flatten(),
keras.layers.Dense(128, activation="relu"),
keras.layers.Dropout(0.2),
keras.layers.Dense(4, activation="softmax")
])
model.compile(optimizer="adam",
loss="sparse_categorical_crossentropy",
metrics=["accuracy"])
# Chuyển đổi sang TFLite sau khi huấn luyện
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
with open("gesture_model.tflite", "wb") as f:
f.write(tflite_model)
print(f"Model size: {len(tflite_model)} bytes")Mô hình Sequential bao gồm hai lớp tích chập (Conv2D) với pooling, một lớp kết nối đầy đủ (Dense) và Dropout để điều chuẩn. Sau khi chuyển đổi, mô hình .tflite chiếm dung lượng ít hơn 4–6 lần so với SavedModel gốc và chạy trên CPU hoặc GPU di động.
Cách tiếp cận hiện đại — huấn luyện trực tiếp trên thiết bị với TensorFlow Federated hoặc MLX (Apple). Tập lệnh Python xác định kiến trúc, trong khi huấn luyện chạy trên dữ liệu người dùng mà không gửi lên máy chủ. Điều này cải thiện quyền riêng tư nhưng phức tạp hơn để triển khai. Hầu hết các dự án sử dụng đường ống cổ điển: huấn luyện Python -> TFLite -> suy luận trên thiết bị.
Python là lựa chọn phổ biến cho backend ứng dụng di động. Django REST Framework (DRF) và FastAPI cho phép tạo nhanh API REST hoặc máy chủ GraphQL. Backend Python xử lý yêu cầu từ khách hàng di động, quản lý xác thực và đồng bộ dữ liệu qua WebSocket.
FastAPI là framework hiện đại với hỗ trợ bất đồng bộ, tạo đặc tả OpenAPI tự động và xác thực qua Pydantic. Hiệu suất của FastAPI tương đương Node.js và Go — lên đến 10.000 yêu cầu/giây trên một lõi. Đối với backend di động, FastAPI được chọn vì tốc độ phát triển và tài liệu tích hợp.
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import List
import sqlite3
app = FastAPI(title="Mobile App API")
class UserCreate(BaseModel):
username: str
email: str
avatar_url: str | None = None
@app.post("/users", status_code=201)
async def create_user(payload: UserCreate):
conn = sqlite3.connect("app.db")
cur = conn.execute(
"INSERT INTO users (username, email) VALUES (?, ?)",
(payload.username, payload.email)
)
conn.commit()
user_id = cur.lastrowid
conn.close()
return {"id": user_id, "username": payload.username}
@app.get("/users/{user_id}")
async def get_user(user_id: int):
conn = sqlite3.connect("app.db")
row = conn.execute(
"SELECT id, username, email FROM users WHERE id = ?",
(user_id,)
).fetchone()
conn.close()
if not row:
raise HTTPException(status_code=404, detail="User not found")
return {"id": row[0], "username": row[1], "email": row[2]}Mô hình Pydantic UserCreate xác thực dữ liệu đầu vào: username và email là chuỗi bắt buộc, avatar_url là tùy chọn. Các endpoint bất đồng bộ (async def) không chặn máy chủ trong khi chờ cơ sở dữ liệu. Mã trạng thái 201 được trả về khi tạo người dùng thành công.
Python hỗ trợ WebSocket qua FastAPI WebSocket hoặc thư viện websockets. Đối với trò chuyện, thông báo thời gian thực và chỉnh sửa cộng tác, WebSocket là phương tiện truyền tải tối ưu. FastAPI sử dụng asyncpg để truy cập PostgreSQL bất đồng bộ và aioredis để lưu cache.
Python không thể thiếu cho việc tạo mẫu thử nhanh. Nhà phát triển có thể viết API mẫu thử trong Flask trong 15 phút và kiểm tra ý tưởng với người dùng trước khi triển khai bằng Kotlin/Swift cho sản xuất. Chi phí của lỗi ở giai đoạn tạo mẫu thử là tối thiểu và thời gian kiểm tra giả thuyết giảm từ vài tuần xuống còn vài giờ.
Công cụ tạo mẫu thử: Flask (REST tối thiểu), Streamlit (bảng điều khiển), Jupyter Notebooks (phân tích dữ liệu), Flet và Kivy (MVP di động). Mẫu thử Python thường trở thành đặc tả cho triển khai sản xuất: kiểu dữ liệu, logic kinh doanh và kiểm thử được chuyển sang Kotlin hoặc Swift.
Python được sử dụng để kiểm tra tải API di động với Locust — một framework mô phỏng hàng nghìn người dùng. Tập lệnh Locust mô tả kịch bản hành vi người dùng và giao diện web hiển thị RPS, độ trễ và phân vị.
from locust import HttpUser, task, between
class MobileApiUser(HttpUser):
wait_time = between(1, 5)
@task(2)
def get_posts(self):
self.client.get("/api/v1/posts?page=1")
@task(1)
def create_post(self):
self.client.post("/api/v1/posts", json={
"title": "Test",
"body": "Content"
})@task(2) chỉ định trọng số — yêu cầu GET /posts được thực thi gấp đôi tần suất so với yêu cầu POST /posts. wait_time mô phỏng khoảng dừng 1–5 giây giữa các yêu cầu. Locust được khởi chạy từ dòng lệnh và hiển thị kết quả thời gian thực qua giao diện web trên cổng 8089.
Python và các ngôn ngữ gốc di động giải quyết các vấn đề khác nhau. Kotlin và Swift dành cho UI, điều hướng và truy cập trực tiếp API nền tảng. Python dành cho tự động hóa, AI/ML, logic máy chủ và tạo mẫu thử. Hãy so sánh các tham số chính.
| Tiêu chí | Python | Kotlin / Swift |
|---|---|---|
| Ứng dụng UI | Không (Kivy — thích hợp) | Mục đích chính |
| Tự động hóa build | Công cụ chính | Hiếm khi |
| Huấn luyện AI/ML | Ngôn ngữ chính của ngành | Chỉ suy luận |
| Backend máy chủ | Django, FastAPI, Flask | Ktor, Vapor (ít phổ biến) |
| Tốc độ phát triển | Cao (ít mã hơn) | Trung bình |
| Hiệu suất | Thấp (thông dịch) | Cao (JIT/gốc) |
| Truy cập API thiết bị | Qua Chaquopy/BeeWare | Trực tiếp (100% API) |
Kiến trúc tối ưu: Python cho huấn luyện AI/mô hình, tập lệnh CI/CD và phía máy chủ; Kotlin/Swift cho UI và tích hợp gốc.
Lỗi đầu tiên — sử dụng phiên bản Python sai. macOS được cài sẵn Python 3.9, nhưng tập lệnh tự động hóa cần phiên bản được cố định qua pyenv hoặc .python-version. Sự khác biệt giữa 3.9 và 3.12 có thể làm hỏng cú pháp (ví dụ: match-case chỉ khả dụng từ 3.10).
Lỗi thứ hai phổ biến — bỏ qua môi trường ảo. Các phụ thuộc Python xung đột toàn cục giữa các dự án. Sử dụng venv hoặc poetry để cách ly. Tệp requirements.txt hoặc pyproject.toml phải có trong kho lưu trữ để đảm bảo build tái tạo được.
Thiếu xử lý lỗi — vấn đề phổ biến thứ ba. Tập lệnh gặp sự cố khi thiếu tệp hoặc lỗi mạng sẽ dừng toàn bộ đường ống CI/CD. Sử dụng try-except-finally, ghi nhật ký qua mô-đun logging và trả về mã khác không khi có lỗi (sys.exit(1)).
Trộn cú pháp Python 2 và Python 3 — một lỗi khác. print không có dấu ngoặc, except Exception, e cũ và xrange hoạt động trong Python 2 nhưng không hoạt động trong Python 3. Luôn kiểm tra mã bằng flake8 và mypy để phân tích kiểu tĩnh.
# Thực hành tốt nhất: xử lý lỗi trong tập lệnh tự động hóa
import sys
import logging
from pathlib import Path
logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")
log = logging.getLogger(__name__)
def build_apk(project_dir: str) -> bool:
path = Path(project_dir)
if not path.exists():
log.error(f"Directory {project_dir} not found")
return False
try:
# lệnh build ở đây
log.info("Build started")
return True
except Exception as e:
log.exception(f"Build failed: {e}")
return False
if __name__ == "__main__":
success = build_apk("android/app")
sys.exit(0 if success else 1)Câu hỏi thường gặp
Có, thông qua các framework Kivy, BeeWare và Chaquopy (cho Android). Tuy nhiên, ứng dụng gốc bằng Kotlin/Swift chạy nhanh hơn và cung cấp quyền truy cập đầy đủ vào API nền tảng. Python thường được sử dụng để tạo mẫu thử và công cụ phụ trợ.
Python tự động hóa việc build IPA/APK, tạo báo cáo kiểm thử, xử lý nhật ký, thay đổi kích thước màn hình, chuyển đổi tài nguyên và triển khai lên Firebase App Distribution qua plugin Python Fastlane.
Mô hình được huấn luyện bằng Python (TensorFlow, PyTorch), sau đó chuyển đổi sang TFLite hoặc Core ML để suy luận trên thiết bị. Thư viện ML gốc trong Kotlin/Swift tải mô hình đã sẵn sàng, trong khi Python phụ trách huấn luyện và xuất khẩu.
Đối với backend di động, Python (Django/FastAPI) là lựa chọn tuyệt vời. Nó phát triển nhanh hơn và có hệ sinh thái thư viện phong phú. Kotlin (Ktor) và Swift (Vapor) cung cấp hiệu suất tốt hơn và an toàn kiểu.
Python là ngôn ngữ thông dịch chậm hơn C++ và Kotlin. Nhưng đối với tập lệnh build, tạo mã và tạo mẫu thử, tốc độ của Python không quan trọng. Đối với AI/ML, huấn luyện mô hình được thực hiện trên máy chủ GPU, không phải trên thiết bị.
Tổng kết
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm