Trong bài này mình sẽ hướng dẫn các bạn cách chuyển đổi và ép kiểu dữ liệu trong Python, đây là thao tác thường được sử dụng trong thực tế khi làm việc với Python. Trước khi vào bài mới thì bạn hãy quay lại bài cũ để xem các kiểu dữ liệu trong Python đã nhé, sau đó chúng ta sẽ tiếp tục với phần dưới đây.
Để kiểm tra kiểu dữ liệu của một biến thì ta dùng hàm type
nhé các bạn, cú pháp như sau:
1
|
type (variable) |
1. Chuyển đổi dữ liệu ngầm
Trong chuyển đổi loại ngầm định, Python tự động chuyển đổi một loại dữ liệu sang loại dữ liệu khác. Quá trình này không cần bất kỳ sự tham gia của lập trình viên.
Chúng ta hãy xem một ví dụ trong đó Python thúc đẩy chuyển đổi kiểu dữ liệu thấp hơn (số nguyên) sang kiểu dữ liệu cao hơn (float) để tránh mất dữ liệu.
1
2
3
4
5
6
7
8
9
10
|
num_int = 123 num_flo = 1.23 num_new = num_int + num_flo print ( "datatype of num_int:" , type (num_int)) print ( "datatype of num_flo:" , type (num_flo)) print ( "Value of num_new:" ,num_new) print ( "datatype of num_new:" , type (num_new)) |
Kết quả của chương trình này như sau:
1
2
3
4
5
|
datatype of num_int: <class 'int'> datatype of num_flo: <class 'float'> Value of num_new: 124.23 datatype of num_new: <class 'float'> |
Trong chương trình trên,
- Mình đã định nghĩa hai biến
num_int
vànum_flo
, sau đó tạo một biếnnum_new
để lưu trữ tổng của hai biến đó. - Tiếp theo sẽ dùng hàm type để kiểm tra kiểu dữ liệu của cả ba biến, thật bất ngờ vì
num_new
đã mang kiểu float vì đây là kiểu số lớn hơn kiểu int. Như vậy biếnnum_new
đã được chuyển đổi ngầm.
Bây giờ, hãy thử thêm một chuỗi và một số nguyên và xem Python xử lý thế nào.
Ví dụ: Bổ sung kiểu dữ liệu chuỗi (cao hơn) và kiểu dữ liệu số nguyên (thấp hơn)
1
2
3
4
5
6
7
|
num_int = 123 num_str = "456" print ( "Data type of num_int:" , type (num_int)) print ( "Data type of num_str:" , type (num_str)) print (num_int + num_str) |
Khi chạy chương trình trên, kết quả sẽ là:
1
2
3
4
5
6
|
Data type of num_int: <class 'int'> Data type of num_str: <class 'str'> Traceback (most recent call last): File "python", line 7, in <module> TypeError: unsupported operand type(s) for +: 'int' and 'str' |
Như vậy mặc định Python không thể tự động chuyển đổi ngầm giữa string và number.
2. Chuyển đổi tường minh
Trong chuyển đổi tường minh, người dùng chuyển đổi loại dữ liệu của một đối tượng thành loại dữ liệu cần thiết. Chúng ta sử dụng các hàm được xác định trước như int()
, float()
, str()
, v.v để thực hiện chuyển đổi loại rõ ràng.
Chuyển đổi loại này cũng được gọi là typecasting vì người dùng ép (thay đổi) kiểu dữ liệu của các đối tượng. Cú pháp như sau:
1
|
(required_datatype)(expression) |
Ví dụ dưới đây sẽ thể hiện việc ép kiểu từ string sang int tường minh, chương trình sẽ không báo lỗi.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
num_int = 123 num_str = "456" print ( "Data type of num_int:" , type (num_int)) print ( "Data type of num_str before Type Casting:" , type (num_str)) num_str = int (num_str) print ( "Data type of num_str after Type Casting:" , type (num_str)) num_sum = num_int + num_str print ( "Sum of num_int and num_str:" ,num_sum) print ( "Data type of the sum:" , type (num_sum)) |
Chạy lên kế quả sẽ như sau:
1
2
3
4
5
6
7
|
Data type of num_int: <class 'int'> Data type of num_str before Type Casting: <class 'str'> Data type of num_str after Type Casting: <class 'int'> Sum of num_int and num_str: 579 Data type of the sum: <class 'int'> |
Trong ví dụ trên thì bạn thấy mình đã sử dụng hàm int()
để thực hiện chuyển đổi, ép kiểu một cách rõ ràng.
1
|
num_str = int (num_str) |
3. Lời kết
Như vậy là bạn đã tìm hiểu xong việc chuyển đổi, ép kiểu dữ liệu trong Python, đây là kiến thức căn bản nên bạn cần phải nắm vững để sau này có thể học nâng cao lên nhé. Sau đây là một vài lời tổng kết:
- Chuyển đổi kiểu dữ liệu là chuyển đổi đối tượng từ một kiểu dữ liệu này sang kiểu dữ liệu khác.
- Chuyển đổi kiểu ngầm định được trình thông dịch Python thực hiện tự động.
- Python tự động chọn kiểu dữ liệu cao hơn để tránh mất dữ liệu trong chuyển đổi loại ngầm định.
- Chuyển đổi loại rõ ràng cũng được gọi là ép kiểu, các loại dữ liệu của đối tượng được chuyển đổi bằng cách sử dụng các hàm của người dùng.
- Trong ép kiểu việc mất dữ liệu có thể xảy ra khi chúng ta thực thi đối tượng theo kiểu dữ liệu cụ thể.
Theo:https://freetuts.net