Theo quan điểm lập trình, ép kiểu là chuyển đổi một đối tượng của một kiểu này sang kiểu khác. Ở đây, ptdulieu và bạn cùng tìm hiểu về ép kiểu trong lập trình Python (type casting in Python).
Table of Contents
Chuyển đổi kiểu trong Python
Trong lập trình, chuyển đổi kiểu (Type Casting) là quá trình chuyển đổi dữ liệu từ kiểu này sang kiểu khác. Ví dụ: chuyển đổi int dữ liệu sang str.
Ví dụ, nếu bạn có một biến chứa một số chuỗi, chẳng hạn như "27", bạn có thể cần chuyển đổi nó thành một số nguyên trước khi thực hiện các phép toán số học. Nếu không, Python sẽ diễn giải nó "27" thành một chuỗi và thêm nó vào các chuỗi khác thay vì thực hiện phép toán số học.
Hãy xem một ví dụ trong đó chúng ta thử cộng một số chuỗi với một số nguyên.
# Example of Type Casting
a = "23" # Đây là một chuỗi
b = 3 # Đây là một số nguyên
# Direct addition without casting
result = a + str(b) # Điều này sẽ nối thay vì cộng
print(result)
#kết quả: 233Tại sao nên sử dụng Type Casting trong Python?
Hãy lấy một ví dụ thực tế để hiểu nhu cầu về ép kiểu trong Python. Giả sử một người đang đi du lịch đến Mỹ từ Ấn Độ và người đó muốn mua một thứ gì đó từ một cửa hàng ở Mỹ. Nhưng người đó chỉ có tiền mặt là INR (Rupee Ấn Độ). Vì vậy, người đó đến một ngân hàng địa phương ở Mỹ để đổi tiền từ INR sang USD (Đô la Mỹ). Phép loại suy này tương tự như ép kiểu trong Python.
Các loại ép kiểu trong Python
Python cung cấp hai loại ép kiểu:
- Ép kiểu rõ ràng: Khi lập trình viên chuyển đổi thủ công 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: Python tự động chuyển đổi một kiểu dữ liệu sang kiểu dữ liệu khác để tránh mất dữ liệu hoặc lỗi.
Ép kiểu rõ ràng
Chuyển đổi rõ ràng yêu cầu bạn sử dụng các hàm Python tích hợp để chuyển đổi giá trị từ kiểu này sang kiểu khác theo cách thủ công. Khi bạn chỉ định ép kiểu rõ ràng, bạn có toàn quyền kiểm soát kiểu dữ liệu bạn muốn.
Sau đây là một ví dụ về ép kiểu rõ ràng, trong đó cả a và b đều được chuyển đổi từ chuỗi sang số nguyên trước khi được thêm vào:
a = "1" # String
b = "2" # String
# Explicitly converting a and b to integers
result = int(a) + int(b)
print(result)
#kết quả: 3
Trong ví dụ này, a và b được chuyển đổi rõ ràng thành số nguyên bằng hàm int(), giúp phép cộng hoạt động như mong đợi.
Những điểm chính về ép kiểu rõ ràng
- Phương pháp chuyển đổi : Nhà phát triển khởi tạo.
- Các hàm được sử dụng : int(), float(), str(), tuple(), set(), dict(), v.v.
- Ví dụ : int("123"),float("45.67")
Việc ép kiểu rõ ràng được thực hiện theo yêu cầu và tránh việc không khớp kiểu trong Python.
Ép kiểu ngầm định
Trong ép kiểu ngầm định, Python xử lý việc chuyển đổi kiểu dữ liệu tự động. Quá trình này thường xảy ra khi cần sử dụng nhiều kiểu khác nhau cùng nhau trong một biểu thức. Python chuyển đổi kiểu có độ chính xác thấp hơn thành kiểu có độ chính xác cao hơn để tránh mất dữ liệu.
Ví dụ, nếu bạn thêm một số nguyên vào một số float, Python sẽ tự động chuyển đổi số nguyên thành số float trước khi thực hiện phép cộng:
c = 1.9 # Float
d = 8 # Integer
# Implicit type casting by Python
result = c + d
print(result)
#kết quả: 9.9
Trong ví dụ này, Python tự động chuyển đổi d từ số nguyên sang số thực để khớp với c. Quá trình này được gọi là ép kiểu ngầm định và giúp đảm bảo các hoạt động chạy trơn tru mà không cần can thiệp thủ công
Những điểm chính về ép kiểu ngầm định
- Phương pháp chuyển đổi : Python tự động thực hiện.
- Ví dụ : Cộng một số nguyên và một số float sẽ chuyển đổi kết quả thành một số float.
- Lợi ích : Đảm bảo tính toàn vẹn của dữ liệu và giảm nhu cầu chuyển đổi thủ công trong những trường hợp đơn giản.
Hàm ép kiểu trong Python
Python cung cấp một số hàm tích hợp để ép kiểu rõ ràng. Sau đây là tổng quan nhanh:
| Function | Description |
|---|---|
| int() | Converts data to an integer type |
| float() | Converts data to a floating-point number |
| str() | Converts data to a string |
| ord() | Converts a character to its Unicode integer |
| hex() | Converts an integer to a hexadecimal string |
| oct() | Converts an integer to an octal string |
| tuple() | Converts data to a tuple |
| set() | Converts data to a set |
| list() | Converts data to a list |
| dict() | Converts data to a dictionary |
Các hàm này có thể hỗ trợ chuyển đổi giữa các kiểu dữ liệu khác nhau trong Python khi cần.
Hàm int() của Python
Nếu giá trị của một biến chuỗi thực sự là một số (ví dụ "222"), chúng ta có thể chuyển đổi nó thành số nguyên bằng cách sử dụng hàm int().
Sau khi chuyển đổi kiểu, chúng ta có thể thực hiện toán tử số học trên biến
#Python int() Function
number_int = 111
number_str = '222'
#number_int + number_str
#raise TypeError: không được hỗ trợ
#kiểu toán hạng cho +: 'int' và 'str
#cần ép kiểu number_str thành int số_chuỗi
number_str = int(number_str)
number_sum = number_int + number_str
print('Sum of 2 variables:' , number_sum)
print('Data type:', type(number_sum))
#kết quả:
Sum of 2 variables: 333
Data typle: <class 'int'>
Hàm float() của Python
Nếu chúng ta thực hiện các toán tử số học trên một biến số nguyên và một biến số thực, kiểu của biến số nguyên sẽ tự động được chuyển đổi thành số thực trước khi thực hiện phép toán.
Tuy nhiên, chúng ta có thể sử dụng hàm float() để chuyển đổi một số nguyên hoặc một chuỗi có giá trị số thành số float.
#Python float() Function
number_int = 111
number_str = '222'
number_float = 2.2
#kiểu number_int được tự động chuyển đổi thành float
number_subtract = number_int - number_float
print('Subtract of 2 varibales:', number_subtract)
print('Data type:', type(number_subtract)) #kiểm tra từng biến
#kết quả:
Subtract of 2 varibales: 108.8
Data type: <class 'float'>
#hoặc chúng ta có thể chủ động thay đổi kiểu của number_str
number_subtract2 = float(number_str) - number_float
print('Subtract of 2 varibales:', number_subtract2)
print('Data type:', type(number_subtract2)) #kiểm tra từng biến
#kết quả:
Subtract of 2 varibales: 219.8
Data type: <class 'float'>
Hàm str() của Python
Chúng ta có thể chuyển đổi kiểu dữ liệu số thành chuỗi bằng cách sử dụng hàm str().
Sau khi ép kiểu, chúng ta có thể thực hiện các phương thức chuỗi trên biến mới như nối (+) hoặc nhân (*).
#Python str() Function
number_int = 111
number_float = 2.2
number_sum = number_int + number_float
number_str = str(number_int) + str(number_float)
print('Sum of 2 varibales:',number_sum)
print('Sum of 2 varibales after castring:', number_str)
#kết quả:
Sum of 2 varibales: 113.2
Sum of 2 varibales after castring: 1112.2 #nối chuỗi 2 string
#nhân chuỗi sau khi truyền
number_mul = str(number_int)*int(number_float)
print('Multiply after casting',number_mul)
#kết quả: Multiply after casting: 111111
Chuyển đổi các loại chuỗi
List, Tuple và String là các kiểu tuần tự của Python. Chúng là tập hợp các mục được sắp xếp hoặc lập chỉ mục.
Chúng ta có thể chuyển đổi một list thành một tuple bằng cách sử dụng hàm tạo tuple()
Hoặc ta có thể chuyển đổi một tuple thành một list bằng cách sử dụng hàm tạo list()
a_list = ['red', 'green', 'blue']
converted_list = tuple(a_list)
print('convert list to tuple:',converted_list)
print('Date type of convered_list:', type(converted_list))
#kết quả:
convert list to tuple: ('red', 'green', 'blue')
Date type of convered: <class 'tuple'>
a_tuple = (1, 1, 2, 3, 4, 5, 16, 57)
coverted_tuple = list(a_tuple)
print('convert tuple to list:', coverted_tuple )
print('Date type of con', type(coverted_tuple ))
#kết quả:
convert tuple to list: [1, 1, 2, 3, 4, 5, 16, 57]
Date type of con <class 'list'>
Hy vọng bài viết này hữu ích với bạn để hiểu về ép kiểu trong Python (Chuyển đổi kiểu trong Python). Những bài viết trên đây đã ví dụ minh họa về cách bạn có thể sử dụng kiểu ép kiểu và các hàm dựng sẵn để thao tác và định dạng dữ liệu trong Python.