Hướng dẫn what is coercion in python? - ép buộc trong python là gì?

  • Bài viết
  • Screencasts
  • Bài tập
  • Khóa học
  • PASTEBIN
  • Quà tặng
  • Đăng ký
  • Đăng nhập

Đọc 2 phút • Python 3.7. Python 3.7—3.10

Xem dưới dạng video

02:31

Đă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 tôi nhận được một lỗi thay 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.

Sê -ri: Nguyên tắc cơ bản bị bỏ qua

Những chủ đề này thường bị bỏ qua bởi các lập trình viên Python mới.

Để theo dõi tiến trình của bạn trên con đường chủ đề Python Barsels này, đăng nhập hoặc đăng ký.

Một mẹo Python mỗi tuần

Cần lấp đầy khoảng trống trong các kỹ năng trăn của bạn? Tôi gửi email hàng tuần được thiết kế để làm điều đó.fill-in gaps in your Python skills? I send weekly emails designed to do just that.

Xem dưới dạng video

02:31

Đă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. 03:49

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.

Sự ép buộc trong Python với ví dụ là gì?

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. Python không có sự ép buộc loại.Python does not have type coercion.

Sự ép buộc trong lập trình là gì?

Nhiều ngôn ngữ lập trình hỗ trợ chuyển đổi giá trị thành một loại dữ liệu khác.Loại chuyển đổi loại này có thể được thực hiện một cách ngầm hoặc rõ ràng.Chuyển đổi ẩn, còn được gọi là ép buộc, được tự động thực hiện.Implicit conversion, which is also called coercion, is automatically done.

Các quy tắc ép buộc số trong Python là gì?

Sự ép buộc này được thực hiện trong hai bước.Đầu tiên, các thành viên bị ép buộc với các bộ dữ liệu, và sau đó các bộ dữ liệu bị ép buộc theo loại mục tiêu.Giá trị của ô tại giao điểm khối được chỉ định bởi bộ tuple.Biểu thức tương đương là giá trị [toán hạng hoặc tham số].First, members are coerced to tuples, and then tuples are coerced to the target type. The value of the cell at the cube intersection specified by the tuple. The equivalent expression is value [operand or parameter].

Chuyển đổi loại và ép buộc loại trong Python là gì?

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.type conversion is done manually using built-in functions where as type coercion is done automatically.

Bài Viết Liên Quan

Chủ Đề