1. Python là gì?
Python là một ngôn ngữ lập trình cấp cao (high-level programing language) mã nguồn mở và đa năng, được sử dụng rộng rãi trong nhiều lĩnh vực như phát triển web, khoa học dữ liệu, trí tuệ nhân tạo, và tự động hóa hệ thống, ...
Python là ngôn ngữ kịch bản (scripting language) giống với Javascript hay Ruby, thay vì biên dịch toàn bộ chương trình thành mã máy như các ngôn ngữ như C, C++, Golang hoặc Java, các ngôn ngữ scripting thường được diễn giải (interpreted) trực tiếp khi chạy. Điều này giúp quá trình phát triển nhanh hơn, vì lập trình viên có thể viết, chạy và sửa lỗi một cách dễ dàng mà không cần qua nhiều bước biên dịch.
2. Những đặc điểm nổi bật của Python
2.1 Cú pháp đơn giản và dễ đọc
Cú pháp của Python gần giống với tiếng Anh tự nhiên, giúp lập trình viên hay những bạn mới bắt đầu, tiếp cận với việc lập trình một cách dễ dàng, đây là một trong những lý do chính khiến python trở nên ngày càng phổ biến. Dưới đây là so sánh giữa code Python và ngôn ngữ C++ khi bạn muốn cộng một dãy số.
numbers = [1, 2, 3, 4, 5]
total = sum(numbers)
print("Tổng:", total)
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
int total = 0;
for(int number : numbers) {
total += number;
}
std::cout << "Tổng: " << total << std::endl;
return 0;
}
2.2 Interpreted Language
Interpreted Language (ngôn ngữ được diễn giải) là một loại ngôn ngữ lập trình trong đó mã nguồn không cần phải được biên dịch thành mã máy trước khi thực thi. Thay vào đó, mã nguồn được thực thi trực tiếp bởi một trình thông dịch (interpreter). Python là một ngôn ngữ như vậy, bạn có thể dễ dàng thử nghiệm các đoạn mã nhỏ, kiểm tra kết quả ngay lập tức, và gỡ lỗi dễ dàng hơn.
Ví dụ: Bạn có file code hello.py
như bên dưới, để chạy chương trình này, bạn chỉ cần mở terminal hoặc command prompt và nhập python hello.py
. Trình thông dịch Python đọc tệp hello.py
, mỗi dòng mã được dịch và thực thi ngay lập tức, kết quả Hello, World!
được in ra màn hình.
# hello.py
print("Hello, World!")
Để chạy chương trình này bằng Java bạn cần thực hiện hai bước: chạy lện javac HelloWorld.java
để trình biên dịch Java (javac) chuyển đổi mã nguồn (HelloWorld.java
) thành mã bytecode (HelloWorld.class
). Sau đó chạy lệnh java HelloWorld
để máy ảo Java (JVM) thực thi mã bytecode trong tệp HelloWorld.class
.
// HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
Tuy nhiên, do phải dịch và thực thi mã trong thời gian thực, ngôn ngữ diễn giải như Python thường chậm hơn so với các ngôn ngữ biên dịch.
2.3 High-level Language
High-level Language (ngôn ngữ cấp cao) là loại ngôn ngữ lập trình được thiết kế để dễ đọc, dễ hiểu và gần gũi với ngôn ngữ tự nhiên của con người hơn so với ngôn ngữ máy hay còn gọi là ngôn ngữ assembly (ngôn ngữ cấp thấp).
Python là một ngôn ngữ cấp cao, nghĩa là nó trừu tượng hóa nhiều chi tiết về cách máy tính vận hành, giúp lập trình viên tập trung vào việc giải quyết các vấn đề phức tạp mà không phải lo lắng về các chi tiết kỹ thuật cấp thấp như quản lý bộ nhớ hay xử lý trực tiếp với phần cứng.
Ví dụ: So sánh Python và ngôn ngữ Assembly cùng tính tổng của hai số sau đó in ra kết quả. Môn học làm mình ám ảnh nhất khi ở trường đại học chính là môn "ngôn ngữ máy".
# Tính tổng của hai số và in ra kết quả
a = 5
b = 10
sum = a + b
print("Tổng:", sum)
section .data
result db 0 ; Nơi lưu kết quả
section .text
global _start
_start:
mov al, 5 ; Đưa giá trị 5 vào thanh ghi AL
add al, 10 ; Cộng 10 vào giá trị trong AL
mov [result], al ; Lưu kết quả vào bộ nhớ
; In kết quả
mov eax, 4 ; Sử dụng syscall để in
mov ebx, 1 ; Đặt STDOUT
mov ecx, result ; Đặt địa chỉ của kết quả
mov edx, 1 ; Kích thước dữ liệu cần in (1 byte)
int 0x80 ; Thực hiện syscall
; Thoát chương trình
mov eax, 1 ; Thoát chương trình
xor ebx, ebx ; Trả về 0
int 0x80 ; Thực hiện syscall
2.4 Kiểu dữ liệu động
Python là một ngôn ngữ lập trình kiểu dữ liệu động (dynamically typed), có nghĩa là bạn không cần phải khai báo kiểu của biến trước khi sử dụng, và một biến có thể lưu trữ các giá trị với các kiểu dữ liệu khác nhau trong suốt vòng đời của nó.
Ví dụ: Trong C, bạn phải khai báo rõ ràng kiểu dữ liệu của mỗi biến trước khi sử dụng (int
, float
, char
, v.v.). Biến x
được khai báo là số nguyên (int
), và bạn không thể gán một giá trị chuỗi ("Hello"
) cho x
vì C không cho phép thay đổi kiểu dữ liệu của biến sau khi đã khai báo, bạn hoàn toàn có thể làm được điều này với Python.
# Khai báo biến với kiểu dữ liệu khác nhau
x = 10 # x là số nguyên (int)
print(x, type(x))
x = "Hello" # x giờ là chuỗi (str)
print(x, type(x))
x = 3.14 # x giờ là số thực (float)
print(x, type(x))
# Kết quả
10 <class 'int'>
Hello <class 'str'>
3.14 <class 'float'>
#include <stdio.h>
int main() {
int x = 10; // Khai báo x là một số nguyên (int)
printf("%d\n", x);
// x = "Hello"; // Lỗi: Không thể gán chuỗi vào biến kiểu int
// printf("%s\n", x);
float y = 3.14; // Khai báo y là một số thực (float)
printf("%f\n", y);
return 0;
}
2.5 Hỗ trợ nhiều mô hình lập trình
Python là một ngôn ngữ lập trình đa mô hình (multi-paradigm), có nghĩa là nó hỗ trợ nhiều mô hình lập trình khác nhau:
- Lập trình thủ tục (Procedural Programming): mô hình lập trình truyền thống, trong đó chương trình được cấu trúc thành các thủ tục hoặc hàm
- Lập trình hướng đối tượng (Object-Oriented Programming): mô hình lập trình dựa trên khái niệm "đối tượng", nơi dữ liệu và các hành vi liên quan được nhóm lại với nhau thành các đối tượng
- Lập trình hàm (Functional Programming): mô hình lập trình trong đó các hàm được coi là các đơn vị cơ bản của việc xây dựng chương trình
2.6 Kho thư viện phong phú
Python cung cấp một loạt các module và package sẵn có trong thư viện chuẩn, giúp lập trình viên dễ dàng thực hiện nhiều tác vụ khác nhau mà không cần cài đặt thêm phần mềm bên ngoài hoặc viết lại mã từ đầu. Ngoài ra bạn cũng có thể cài thêm các thư viện mã nguồn mở nổi tiếng khác như Pandas, Numpy dành riêng cho việc xử lý và phân tích dữ liệu.
2.7 Đa nền tảng
Python là một ngôn ngữ lập trình đa nền tảng, có nghĩa là bạn có thể viết mã Python trên một hệ điều hành và chạy mã đó trên nhiều hệ điều hành khác (Windows, macOS, Linux) mà không cần phải thực hiện các thay đổi đáng kể.
Khi bạn chạy một chương trình Python, mã nguồn được chuyển đổi thành bytecode bởi trình thông dịch Python (Python interpreter). Bytecode này không bị phụ thuộc nền tảng, có nghĩa là nó có thể chạy trên bất kỳ hệ điều hành nào có trình thông dịch Python cài đặt sẵn.
3. Bạn có thể làm được gì với Python?
3.1 Phát triển Web
Python là một trong những ngôn ngữ phổ biến được sử dụng trong phát triển web (Web Development) , nhờ vào các framework mạnh mẽ như Django và Flask. Những framework này giúp lập trình viên phát triển các ứng dụng web một cách nhanh chóng và an toàn. Một vài ứng dụng nổi tiếng xây dựng trên nền tảng Django như: Instagram, Spotify, YouTube (đời đầu).
Ví dụ: Tạo ứng dụng web đơn giản với Flask.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Chào mừng bạn đến với ứng dụng web của tôi!"
if __name__ == '__main__':
app.run(debug=True)
3.2 Phân tích và trực quan hóa dữ liệu
Python là một trong những ngôn ngữ lập trình phổ biến nhất trong lĩnh vực phân tích và trực quan hóa dữ liệu, nhờ vào sự hỗ trợ mạnh mẽ từ các thư viện như NumPy, pandas, Matplotlib, Seaborn, và Plotly. Trong đó:
- NumPy: Thư viện này cung cấp các công cụ để làm việc với mảng số học và thực hiện các phép tính trên mảng lớn với hiệu suất cao.
- Pandas: Là thư viện phổ biến nhất để làm việc với dữ liệu dạng bảng (dataframes). Nó cung cấp các công cụ để đọc, viết, xử lý, và phân tích dữ liệu từ nhiều nguồn khác nhau (như CSV, Excel, SQL databases).
- Matplotlib: Đây là thư viện giúp tạo ra các biểu đồ đường, cột, tán xạ, và nhiều loại biểu đồ khác.
3.3 Machine Learning và AI
Machine Learning (Học máy) là một lĩnh vực của trí tuệ nhân tạo (AI) cho phép các hệ thống học hỏi từ dữ liệu, phát hiện các pattern và đưa ra quyết định mà không cần phải lập trình cụ thể cho từng nhiệm vụ.Python đã hỗ trợ công việc này bằng hàng hoạt các thư viện hữu ích như:
- SciPy: là một thư viện mở rộng của NumPy, cung cấp các hàm và module chuyên dụng cho các phép toán khoa học như tối ưu hóa, tích phân, giải phương trình vi phân, và xử lý tín hiệu.
- scikit-learn: Là thư viện phổ biến nhất cho machine learning trong Python. Nó cung cấp các công cụ đơn giản và hiệu quả cho việc phân loại, phân cụm, regression, dimensionality reduction và model evaluation.
- TensorFlow: Là một thư viện mã nguồn mở của Google, được thiết kế để xây dựng và huấn luyện các mô hình machine learning và deep learning. TensorFlow hỗ trợ tính toán song song trên CPU và GPU, giúp xử lý các tác vụ phức tạp và dữ liệu lớn một cách hiệu quả.
Ví dụ : Phân loại hoa Iris với scikit-learn
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# Tải dữ liệu hoa Iris
data = load_iris()
X = data.data # Các đặc điểm của hoa
y = data.target # Nhãn của hoa (loại)
# Chia dữ liệu thành tập huấn luyện và kiểm tra
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Khởi tạo mô hình RandomForest và huấn luyện
model = RandomForestClassifier()
model.fit(X_train, y_train)
# Dự đoán trên tập kiểm tra
y_pred = model.predict(X_test)
# Đánh giá độ chính xác của mô hình
accuracy = accuracy_score(y_test, y_pred)
print(f"Độ chính xác của mô hình: {accuracy * 100:.2f}%")
3.4 Công cụ Tự động hóa
Nếu bạn muốn tìm một ngôn ngữ dễ dàng viết chương trình tự động hóa các tác vụ lặp đi lặp lại, giúp tiết kiệm thời gian và giảm thiểu lỗi so với việc thực hiện thủ công, thì Python chính là lựa chọn hoàn hảo dành cho bạn với cú pháp đơn giản, dễ nhớ. Ví dụ: Tự động gửi email thông báo.
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
# Cấu hình email gửi đi
sender_email = "youremail@example.com"
receiver_email = "receiver@example.com"
subject = "Báo cáo hàng ngày"
body = "Báo cáo hàng ngày đã hoàn thành và được gửi đến bạn."
# Tạo email
msg = MIMEMultipart()
msg['From'] = sender_email
msg['To'] = receiver_email
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))
# Kết nối tới máy chủ SMTP và gửi email
server = smtplib.SMTP('smtp.example.com', 587)
server.starttls()
server.login(sender_email, "yourpassword")
server.sendmail(sender_email, receiver_email, msg.as_string())
server.quit()
print("Đã gửi email thành công!")
3.5 Phát triển trò chơi
Python, mặc dù không phải là ngôn ngữ lập trình chính trong ngành công nghiệp phát triển game so với C++ hay C#, tuy nhiên nó vẫn được sử dụng rộng rãi trong các dự án game nhỏ, game giáo dục, hoặc các nguyên mẫu (prototypes) nhờ vào sự hỗ trợ của các thư viện như Pygame, Pyglet, và Arcade.
3.6 Ứng dụng máy tính
Với sự hỗ trợ của các thư viện như Tkinter, PyQt, và Kivy, bạn có thể xây dựng các ứng dụng Desktop từ đơn giản đến phức tạp, đáp ứng nhu cầu của nhiều lĩnh vực khác nhau với Python. Ví dụ: Tạo một ứng dụng máy tính đơn giản với Tkinter.
import tkinter as tk
# Hàm xử lý các nút bấm
def click(event):
text = event.widget.cget("text")
if text == "=":
try:
result = str(eval(entry.get()))
entry.delete(0, tk.END)
entry.insert(tk.END, result)
except Exception as e:
entry.delete(0, tk.END)
entry.insert(tk.END, "Error")
elif text == "C":
entry.delete(0, tk.END)
else:
entry.insert(tk.END, text)
# Tạo cửa sổ chính
root = tk.Tk()
root.title("Simple Calculator")
# Tạo một Entry widget để nhập và hiển thị kết quả
entry = tk.Entry(root, font=("Arial", 20), bd=10, insertwidth=4, width=14, borderwidth=4)
entry.grid(row=0, column=0, columnspan=4)
# Danh sách các nút bấm của máy tính
buttons = [
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'C', '0', '=', '+'
]
# Tạo các nút bấm và sắp xếp chúng vào lưới (grid)
row = 1
col = 0
for button in buttons:
btn = tk.Button(root, text=button, padx=20, pady=20, font=("Arial", 18))
btn.grid(row=row, column=col)
btn.bind("<Button-1>", click)
col += 1
if col > 3:
col = 0
row += 1
# Khởi chạy vòng lặp sự kiện chính
root.mainloop()
3.6 Networking và Cybersecurity
Python cung cấp các công cụ để xây dựng các ứng dụng mạng như: tạo server và client TCP/UDP, quản lý kết nối, và tương tác với các giao thức mạng khác nhau. Python cũng có thể được sử dụng để viết các công cụ kiểm tra mạng, theo dõi và phân tích lưu lượng mạng, thực hiện các tác vụ tự động hóa trong quản trị mạng.
Ví dụ: Tạo một máy chủ TCP đơn giản
import socket
# Khởi tạo socket TCP/IP
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Ràng buộc socket với địa chỉ và cổng
server_socket.bind(('0.0.0.0', 8080))
# Lắng nghe kết nối
server_socket.listen(5)
print("Máy chủ đang lắng nghe trên cổng 8080...")
while True:
# Chấp nhận kết nối từ máy khách
client_socket, client_address = server_socket.accept()
print(f"Kết nối từ {client_address}")
# Gửi thông báo tới máy khách
client_socket.send(b"Xin chào! Bạn đã kết nối với máy chủ.\n")
# Đóng kết nối với máy khách
client_socket.close()
4. Kết luận
Python là một ngôn ngữ lập trình lý tưởng cho người mới bắt đầu nhờ vào cú pháp đơn giản, dễ đọc và dễ hiểu. Với thiết kế thân thiện và tài liệu phong phú, Python giúp người học nhanh chóng nắm bắt các khái niệm cơ bản và tiến xa hơn trong lập trình, đặt việt với những bạn đam mê phân tích dữ liệu, machine learning, AI thì Python là một ngôn ngữ tuyệt vời không thể bỏ qua.
Các bài viết liên quan tại Blog 200Lab:
Bài viết liên quan
Giới thiệu Kiến trúc Backend for Frontend (BFF)
Nov 16, 2024 • 10 min read
Flask là gì? Hướng dẫn tạo Ứng dụng Web với Flask
Nov 15, 2024 • 7 min read
Webhook là gì? So sánh Webhook và API
Nov 15, 2024 • 8 min read
Spring Boot là gì? Hướng dẫn Khởi tạo Project Spring Boot với Docker
Nov 14, 2024 • 6 min read
Two-Factor Authentication (2FA) là gì? Vì sao chỉ Mật khẩu thôi là chưa đủ?
Nov 13, 2024 • 7 min read
Test-Driven Development (TDD) là gì? Hướng dẫn thực hành TDD
Nov 13, 2024 • 6 min read