CodeGym /Các khóa học /Python SELF VI /Chuyển đổi kiểu dữ liệu

Chuyển đổi kiểu dữ liệu

Python SELF VI
Mức độ , Bài học
Có sẵn

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 :)

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION