2.1 Xác định kiểu
Đôi khi, tại một đoạn code nào đó, tụi mình không biết chắc dữ liệu nào đang được lưu trong
một biến. Trong Python, chúng ta có
hàm type()
để nhận biết kiểu của đối tượng.
Đây là một hàm built-in, trả về kiểu của đối tượng được truyền vào. Nó siêu hữu ích khi debug, xác thực dữ liệu hoặc khi viết logic dựa trên kiểu dữ liệu.
Cách hoạt động của type()
Khi bạn gọi type(x)
, Python sẽ trả về một đối tượng đặc biệt
type
đại diện cho kiểu của biến x. Ví dụ:
x = 1
print(type(x)) # Hiển thị: <class 'int'>
x = "xin chào"
print(type(x)) # Hiển thị: <class 'str'>
x = [1, 2, 3]
print(type(x)) # Hiển thị: <class 'list'>
Lưu ý rằng từ "class" cũng xuất hiện trong kết quả. Đó là bởi vì các kiểu như int, str, list, và nhiều cái khác thực chất cũng là lớp (class). Những lớp này là các lớp built-in, không cần tự tạo vì Python đã cung cấp sẵn rồi.
Ứng dụng thực tế
type()
thường được dùng khi cần xác định hành động dựa trên kiểu dữ liệu.
- Thực hiện các hành động khác nhau tùy thuộc vào kiểu của biến.
- Trong các hàm/method để đảm bảo tham số có kiểu đúng như mong đợi.
Nếu muốn chắc chắn biến chứa một số, bạn có thể viết code kiểu như sau:
arg = 123
if type(arg) == int:
print(arg + 10) # Hiển thị: 133
Một ví dụ thực tế hơn, kiểm tra kiểu của đối tượng lưu trong biến:
arg = "123"
if type(arg) == int:
print(arg + 10) # Không chạy, vì arg là chuỗi
elif type(arg) == str:
print(arg + " thế giới") # Hiển thị: 123 thế giới
else:
print("Kiểu không xác định")
2.2 Gán kiểu rõ ràng
Trong Python, việc gán kiểu rõ ràng cho một đối tượng được thực hiện qua các hàm chuyển đổi kiểu như int()
, float()
,
str()
, tuple()
và các hàm khác. Những hàm này rất hữu ích khi xử lý dữ liệu đầu vào từ người dùng, thực hiện các phép toán hoặc làm việc với chuỗi và các tập hợp dữ liệu.
Ví dụ về các hàm chuyển đổi kiểu
int()
: Chuyển đổi dữ liệu thành số nguyên. Nếu bạn truyền vào một chuỗi có số, thì int()
sẽ chuyển nó thành số nguyên tương ứng.
num = int("123") # num là số nguyên 123
float()
: Một hàm quen thuộc khác. Chuyển đổi thành số thực (float).
num = float("123.45") # num là 123.45
str()
: Chuyển đổi mọi đối tượng Python thành chuỗi (string).
s = str(10.5) # s là '10.5'
tuple()
: Chuyển đổi một sequence thành tuple.
t = tuple([1, 2, 3]) # t là (1, 2, 3)
list()
: Chuyển đổi một iterable (VD: chuỗi hoặc tuple) thành danh sách (list). Iterable là những thứ có thể duyệt, như chuỗi, danh sách hoặc tuple.
l = list("abc") # l là ['a', 'b', 'c']
dict()
: Tạo dictionary từ các cặp key-value.
d = dict([(1, 'a'), (2, 'b')]) # d là {1: 'a', 2: 'b'}
Chúng mình sẽ nói kỹ hơn về dictionary và tuple ở phần sau, nhưng hy vọng bạn đã hiểu ý chính: nếu cần phải xác định kiểu rõ ràng, bạn luôn có thể dùng các hàm trên.
2.3 Chuyển đổi kiểu dữ liệu
Trong Python, chuyển đổi kiểu dữ liệu cho phép lập trình viên kiểm soát và thay đổi kiểu của biến. Điều này hữu ích khi đảm bảo tính tương thích của dữ liệu trong các phép toán hoặc khi chỉnh sửa kiểu dữ liệu lấy từ đầu vào của người dùng hoặc từ file. Thực tế, "chuyển đổi kiểu" và "ép kiểu" đều chỉ cùng một ý — quá trình thay đổi kiểu của một đối tượng sang kiểu khác.
Chúng ta đã quen với việc chuyển đổi kiểu rõ ràng chút ít. Nó được thực hiện qua các hàm built-in
như int()
, float()
, str()
,
tuple()
, list()
, dict()
,
set()
và nhiều cái khác.
Để củng cố, xem thêm vài ví dụ:
Hàm | Mô tả | Ví dụ input | Ví dụ output |
---|---|---|---|
int() |
Chuyển thành số nguyên | int("10") | 10 |
float() |
Chuyển thành số thực | float("20.5") | 20.5 |
str() |
Chuyển thành chuỗi | str(15) | "15" |
tuple() |
Chuyển thành tuple | tuple([1, 2, 3]) | (1, 2, 3) |
list() |
Chuyển thành danh sách | list("abc") | ['a', 'b', 'c'] |
dict() |
Tạo dictionary từ cặp key-value | dict([(1, 'one'), (2, 'two')]) | {1: 'one', 2: 'two'} |
set() |
Tạo set từ một danh sách | set([1, 1, 2, 2, 3, 3]) | {1, 2, 3} |
Ứng dụng
Chuyển đổi kiểu rõ ràng được dùng trong nhiều trường hợp, ví dụ:
- Xử lý đầu vào từ người dùng: Bảo đảm dữ liệu đầu vào có đúng kiểu như mong đợi.
- Phối hợp dữ liệu: Khi dữ liệu từ các nguồn hoặc API khác nhau cần được kết hợp hoặc so sánh.
- Tránh lỗi: Ngăn lỗi runtime bằng cách chuyển dữ liệu sang kiểu phù hợp trước khi thực hiện phép toán.
Best practices và lưu ý
Chuyển đổi kiểu cần làm cẩn thận để tránh mất mát dữ liệu (VD: khi chuyển float
sang int
) hoặc lỗi chuyển đổi (VD: cố gắng chuyển chuỗi không phải số sang số).
Ngoài ra, hãy nhớ rằng một số chuyển đổi có thể không rõ ràng và gây ra kết quả bất ngờ, nên cần kiểm tra kỹ dữ liệu. Chẳng hạn, chuyển int
sang bool
và ngược lại có thể có hiệu ứng không mong muốn :)
GO TO FULL VERSION