Hướng dẫn type coercion in python with example - gõ cưỡng chế trong python với ví dụ

Đăng nhập vào tài khoản Python Barsels của bạn để lưu cài đặt screencast của bạn.

Vẫn chưa có tài khoản? Đăng ký tại đây.

Nhiều ngôn ngữ lập trình có một thứ gọi là ép buộc loại; Đó là nơi ngôn ngữ sẽ ngầm chuyển đổi một đối tượng sang loại đối tượng khác trong một số trường hợp nhất định.implicitly convert one object to another type of object in certain circumstances.

Python không có sự ép buộc loại.

Các loại và ép buộc số

Nếu chúng ta thêm một số nguyên [2] và số điểm nổi [3.5] trong Python, chúng ta sẽ lấy lại số điểm nổi:

>>> x = 2
>>> y = 3.5
>>> x + y
5.5

Python đã không ép buộc số nguyên vào số điểm nổi; Chúng tôi không có sự ép buộc loại trong Python. Thay vào đó, Python đã ủy thác cho các số lượng số nguyên và nổi và yêu cầu những đối tượng đó tự thêm vào.did not coerce the integer into a floating-point number; we don't have type coercion in Python. Instead, Python delegated to the integer and floating point numbers and asked those objects to add themselves together.

Bất cứ khi nào Python nhìn thấy x + y, nó sẽ gọi phương thức __add__ vào x chuyển y cho nó:

>>> x.__add__[y]
NotImplemented

Trong trường hợp này, Python đã trở lại

>>> x.__add__[y]
NotImplemented
0 vì các số nguyên không biết cách thêm bản thân vào các số điểm nổi. Giá trị
>>> x.__add__[y]
NotImplemented
0 đặc biệt này đã được trả về bằng phương thức ____ của đối tượng số nguyên để cho Python biết rằng x [A
>>> x.__add__[y]
NotImplemented
4] không biết cách hỗ trợ toán tử
>>> x.__add__[y]
NotImplemented
5 với y [A
>>> x.__add__[y]
NotImplemented
7].

Khi Python nhìn thấy giá trị

>>> x.__add__[y]
NotImplemented
0 đặc biệt này, sau đó, nó cố gắng hỏi y liệu nó có biết cách tự thêm vào x hay không. Để thực hiện Python này, hãy gọi phương thức
>>> name = "Trey"
>>> x
2
>>> name + x
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: can only concatenate str [not "int"] to str
1 trên y, vượt qua nó x:

Điều này thêm số điểm nổi vào số nguyên từ phía bên phải của dấu cộng [

>>> name = "Trey"
>>> x
2
>>> name + x
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: can only concatenate str [not "int"] to str
4 là "phải" trong
>>> name = "Trey"
>>> x
2
>>> name + x
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: can only concatenate str [not "int"] to str
1] và trả về
>>> name = "Trey"
>>> x
2
>>> name + x
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: can only concatenate str [not "int"] to str
6.

Vì vậy, không có sự ép buộc loại nào được thực hiện ở đây, thay vào đó, một trong những loại đối tượng này biết cách hoạt động với loại đối tượng khác khi được sử dụng với toán tử cộng.one of these types of objects knows how to operate with the other type of object when used with the plus operator.

Đối tượng Python không hỗ trợ cưỡng chế loại

Một ví dụ của điều này là chuỗi.

Điều gì xảy ra nếu chúng ta cố gắng sử dụng toán tử

>>> x.__add__[y]
NotImplemented
5 giữa một chuỗi và một số trong Python?

>>> name = "Trey"
>>> x
2
>>> name + x
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: can only concatenate str [not "int"] to str

Nhiều ngôn ngữ lập trình sẽ làm cho chuỗi

>>> name = "Trey"
>>> x
2
>>> name + x
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: can only concatenate str [not "int"] to str
8 ở trên: chúng sẽ kết hợp chuỗi đó và số đó, bằng cách ép số vào chuỗi. Trong Python, chúng ta gặp lỗi thay thế [xem [typeerror: chỉ có thể kết nối str [không phải "int"] để str] [concat str] để biết thêm về lỗi cụ thể đó].

Lý do là các chuỗi trong Python không biết cách sử dụng toán tử cộng với các số và số trong Python không biết cách sử dụng toán tử cộng với chuỗi, điều đó có nghĩa là mã của chúng tôi không hoạt động.

Vì vậy, để thực sự hoàn thành những gì chúng tôi đang tìm kiếm, chúng tôi cần chuyển đổi rõ ràng số thành một chuỗi:we need to explicitly convert the number to a string:

>>> name + str[x]
'Trey2'

Chúng tôi đã tạo một chuỗi mới trong số đó 2 và chúng tôi kết nối nó vào chuỗi

>>> name + str[x]
'Trey2'
0 của chúng tôi để có được một chuỗi khác.

Bản tóm tắt

Python không có sự ép buộc loại. Python không bao giờ ngầm chuyển đổi một đối tượng sang loại đối tượng khác.

Bạn sẽ luôn dựa vào ít nhất một trong các đối tượng bạn đang làm việc với việc biết cách hoạt động với loại đối tượng khác hoặc bạn sẽ phải chuyển đổi rõ ràng một trong các đối tượng của mình sang loại đối tượng khác.

Ảnh của Raphael Schaller trên unplash

Đây là bài thứ tư trong số nhiều bài viết về các nguyên tắc cơ bản của Python cho tất cả mọi người, một loạt bài hướng dẫn Python tập trung vào các nguyên tắc cơ bản của Python.Python Fundamentals for Everyone, a python tutorial series which focuses on python fundamentals.

Bạn có thể tham khảo bài viết trước được viết trong loạt bài này dưới đây.

Vào cuối bài viết này, bạn sẽ hiểu sự khác biệt giữa chuyển đổi loại và ép buộc loại.

Loại chuyển đổi

Chuyển đổi loại, giống như tên cho thấy, là quá trình chuyển đổi loại đối tượng từ loại dữ liệu này sang loại dữ liệu khác theo yêu cầu.

Python hỗ trợ các hàm chuyển đổi loại tích hợp khác nhau như int [], long [], float [], str [], v.v.

Loại chuyển đổi này cũng được gọi là chuyển đổi loại rõ ràng hoặc đúc loại.

Chuyển đổi loại rõ ràng [hình ảnh của tác giả]

Trong ví dụ trên, A là một số nguyên trong khi B là một chuỗi. Khi chúng ta thêm A+B, trình biên dịch ném KiểuError.

Chương trình trên đang cố gắng thêm một chuỗi và một số nguyên. Vì Python không cho phép một chuỗi và số nguyên được thêm vào, nên cả hai nên được chuyển đổi thành cùng một loại dữ liệu. Do đó, chúng tôi chuyển đổi rõ ràng B thành int datatype [int [b]].

Điều đáng ghi nhớ là trong chuyển đổi loại rõ ràng, có thể có cơ hội mất dữ liệu khi chúng tôi thực thi một đối tượng cho một kiểu dữ liệu được chỉ định.

Loại cưỡng chế

Chuyển đổi loại tự động từ loại dữ liệu này sang loại dữ liệu khác được gọi là ép buộc loại. Điều này cũng được gọi là chuyển đổi loại ngầm.

Sự khác biệt chính giữa chuyển đổi loại và ép buộc loại là, chuyển đổi loại được thực hiện thủ công bằng cách sử dụng các chức năng tích hợp trong đó khi ép buộc loại được thực hiện tự động.

Chuyển đổi loại cưỡng chế/ ẩn danh [hình ảnh của tác giả]

Trong ví dụ trên, A là một số nguyên và loại dữ liệu của B là nổi. Khi cả hai được thêm vào, chúng ta có thể thấy rằng kết quả có kiểu dữ liệu của float. Điều này là do, Python luôn chuyển đổi các kiểu dữ liệu nhỏ hơn thành các loại dữ liệu lớn hơn để tránh mất dữ liệu.

Bây giờ bạn đã biết loại cưỡng chế và chuyển đổi loại nào là, hãy tiếp tục và thực hiện nó!

Trong bài viết tiếp theo, chúng tôi sẽ xem xét các chức năng. Cho đến lúc đó, hãy theo dõi! :]

Loại cưỡng chế loại trong Python là gì?

Loại cưỡng chế là chuyển đổi tự động hoặc ẩn các giá trị từ loại dữ liệu này sang loại dữ liệu khác [chẳng hạn như chuỗi thành số].the automatic or implicit conversion of values from one data type to another [such as strings to numbers].

Chuyển đổi loại trong Python với ví dụ là gì?

Chuyển đổi loại rõ ràng trong Python.

Sự khác biệt giữa == và === và loại ép buộc loại là gì?

Một toán tử không kích hoạt sự ép buộc loại ngầm là ===, được gọi là toán tử bình đẳng nghiêm ngặt.Toán tử bình đẳng lỏng lẻo == Mặt khác thực hiện cả so sánh và ép buộc loại nếu cần.The loose equality operator == on the other hand does both comparison and type coercion if needed.

Chức năng ép buộc là gì?

Trong toán học, một chức năng cưỡng chế là một hàm "phát triển nhanh chóng" ở các thái cực của không gian mà nó được xác định.Tùy thuộc vào bối cảnh các định nghĩa chính xác khác nhau của ý tưởng này đang được sử dụng.a function that "grows rapidly" at the extremes of the space on which it is defined. Depending on the context different exact definitions of this idea are in use.

Bài Viết Liên Quan

Chủ Đề