Str và repr trong Python là gì?

Nói về các hàm tích hợp trong Python, hãy xem thêm một hàm nữa. Hôm nay, chúng ta sẽ nói về Python repr, kết thúc bằng một số ví dụ để đưa điểm về nhà

Ngoài ra, chúng ta sẽ thảo luận về Python str vs repr. Hơn nữa, chúng ta sẽ thấy làm việc với các đối tượng lớp.  

Vì vậy, hãy bắt đầu Hàm repr Python. Hy vọng bạn thích lời giải thích của chúng tôi

Str và repr trong Python là gì?

Chức năng repr Python với ví dụ

repr() trong Python là gì?

Hãy hỏi IDLE

Str và repr trong Python là gì?

Chức năng repr Python là gì

Điều này cho chúng ta biết năm điều

  • Đây là một chức năng tích hợp
  • Điều này có một đối tượng
  • Điều này trả về biểu diễn chuỗi chuẩn của đối tượng này
  • Nó có cú pháp sau

lặp lại (đối tượng, /)

  • Nó đúng với nhiều loại đối tượng và hầu hết các nội trang eval(repr(obj))=obj

Bây giờ, tuyên bố cuối cùng này có nghĩa là gì?

>>> s='Hello'
>>> eval(repr(s))

đầu ra

'Xin chào'

>>> s

đầu ra

‘Xin chào’ Còn số nguyên thì sao?

>>> x=7
>>> eval(repr(x))==x

True Bây giờ, theo tài liệu chính thức của Python, repr() trả về một chuỗi chứa biểu diễn có thể in được của một đối tượng.

Đối với hầu hết các loại trong Python, điều này sẽ cung cấp cho bạn một chuỗi mang lại một đối tượng có cùng giá trị như khi chúng ta chuyển nó tới eval(). Đối với một số loại khác, nó trả về một chuỗi được phân cách bằng dấu ngoặc nhọn

Cái này chứa loại đối tượng và thông tin khác như tên và địa chỉ của đối tượng đó

Đối với chúng tôi, đây là hàm repr(). Đối với Python, đây là một lớp kiểm soát những gì nó trả về cho các thể hiện của nó thông qua phương thức ma thuật __repr__()

Ví dụ đại diện Python

Hãy lấy một ví dụ về hàm repr Python

>>> msg='Hello, world!'
>>> repr(msg)

đầu ra

"'Chào thế giới. ’”

Nhìn kỹ hơn điều này cho chúng ta biết điều này trả về 'Xin chào, thế giới. ' trong dấu ngoặc kép. Nếu chúng ta chuyển cái này trở lại eval, nó sẽ cho chúng ta

>>> eval("'Hello, world!'")

đầu ra

'Chào thế giới. ’

Điều này sẽ không làm việc

>>> eval('Hello, world!')

đầu ra

Traceback (most recent call last):File “”, line 1, in

eval('Xin chào, thế giới. ’)

File “”, line 1

Chào thế giới

^

Lỗi cú pháp. EOF không mong muốn trong khi phân tích cú pháp

Điều này là do chúng tôi không có biến có tên đó (Xin chào, thế giới. )

Làm việc với các đối tượng lớp

Chúng tôi đã nói repr() nội bộ thực hiện cuộc gọi đến phương thức __repr__(). Hãy thử điều này với một trong các lớp của chúng ta

>>> class Color:
       color='orange'
       def __repr__(self):
              return repr(self.color)
>>> o=Color()
>>> repr(o)

đầu ra

"'trái cam'"

Ở đây, chúng ta ghi đè phương thức __repr__() để nó làm những gì chúng ta muốn. Khi chúng ta nói từ override, lưu ý rằng Color đã có phương thức __repr__(). Điều này là do nó kế thừa từ đối tượng lớp và đối tượng có một .

>>> issubclass(Color,object)

đầu ra

Thật

________số 8_______

đầu ra

['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '

Hãy nhớ khi bắt đầu, chúng tôi đã nói repr trả về một chuỗi trong dấu ngoặc nhọn đối với một số loại?

>>> class Orange:
       def __init__(self,color,size):
               self.color=color
               self.size=size
>>> o=Orange('orange',7)
>>> o

đầu ra

<__chính__. Đối tượng màu cam tại 0x02C6C1D0>

>>> s
0

đầu ra

<__chính__. Đối tượng màu cam tại 0x02C6C1D0>

Đây là các chuỗi có tên lớp và id của thể hiện đối tượng (địa chỉ bộ nhớ của nó trong CPython). Để in cái này tốt hơn, chúng ta sử dụng thông tin mà hàm print() gọi phương thức __str__ dunder/

>>> s
1

đầu ra

<__chính__. Đối tượng màu cam ở 0x02D40E70>

>>> s
0

đầu ra

tôi 7 tuổi và màu da cam

Điều đó thật tuyệt. Trong Java, chúng ta sẽ sử dụng phương thức toString() cho việc này

str() so với repr() trong Python

Cả hai phương thức __str__() và __repr__() đều trả lại cho chúng ta các chuỗi. Vì vậy, những gì phân biệt chúng?

  • Mục tiêu của __repr__ là rõ ràng và của __str__ là có thể đọc được
  • __repr__ là loại chính thức và __str__ hơi không chính thức

Lấy một ví dụ để đảm bảo bạn hiểu sự khác biệt

>>> s
3

đầu ra

Xin chào

>>> s
4

đầu ra

'Xin chào'

  • Câu lệnh in và hàm str() thực hiện .
  • Bất kỳ chuỗi nào tại dấu nhắc trình thông dịch đều thực hiện cuộc gọi tới __str__(), nhưng một đối tượng tại dấu nhắc thực hiện cuộc gọi tới __repr__()

Muốn chuẩn bị cho Phỏng vấn Python – Bấm vào đây >>>

Hãy xem

>>> s
5

đầu ra

'3'

>>> s
6

đầu ra

'3'

Chúng xuất hiện giống nhau. Được rồi, bây giờ hãy xem cái này

>>> s
7

đầu ra

‘2018-09-07 17. 33. 24. 261778'

>>> s
8

đầu ra

'ngày giờ. ngày giờ (2018, 9, 7, 17, 33, 24, 261778)'

>>> s
9

đầu ra

ngày giờ. ngày giờ(2018, 9, 7, 17, 33, 24, 261778)

Sử dụng biểu diễn 'chính thức' này, chúng ta có thể tái tạo lại đối tượng, nhưng không phải với những gì str() mang lại cho chúng ta

>>> x=7
>>> eval(repr(x))==x
0

đầu ra

ngày giờ. ngày giờ(2018, 9, 7, 17, 33, 24, 261778)

>>> x=7
>>> eval(repr(x))==x
1

đầu ra

Traceback (most recent call last):File “”, line 1, in

eval(‘2018-09-07 17. 33. 24. 261778’)

File “”, line 1

2018-09-07 17. 33. 24. 261778

^

Lỗi cú pháp. Mã không hợp lệ

Hãy lấy một ví dụ khác

>>> x=7
>>> eval(repr(x))==x
2

đầu ra

__repr__ cho bản trình diễn

>>> x=7
>>> eval(repr(x))==x
3

đầu ra

__str__ cho bản trình diễn

>>> x=7
>>> eval(repr(x))==x
4

đầu ra

'__str__ cho bản demo'

>>> x=7
>>> eval(repr(x))==x
5

đầu ra

'__repr__ cho bản demo'

>>> x=7
>>> eval(repr(x))==x
6

đầu ra

'__str__ cho bản demo'

Vì vậy, đây là tất cả trong hướng dẫn repr Python. Hy vọng bạn thích lời giải thích của chúng tôi

Câu hỏi phỏng vấn Python về hàm repr

  1. Hàm repr trong Python là gì?
  2. Sự khác biệt giữa repr và str trong Python là gì?
  3. repr có nghĩa là gì trong Python?
  4. Việc sử dụng chức năng repr trong Python là gì?
  5. Cho ví dụ về hàm repr trong Python

Phần kết luận

Trình thông dịch tương tác cũng sử dụng repr() để cung cấp cho bạn đầu ra của biểu thức

kết quả=expr; . in lại (kết quả)

Do đó, trong hướng dẫn repr Python này, chúng ta đã thảo luận về ý nghĩa của repr trong Python. Ngoài ra, chúng ta đã xem ví dụ repr Python và làm việc với các đối tượng lớp. Hơn nữa, chúng tôi đã thấy str vs repr trong Python

Tuy nhiên, nếu bạn có bất kỳ câu hỏi nào liên quan đến hướng dẫn lặp lại Python, hãy hỏi trong tab nhận xét.  

Nếu bạn hài lòng với DataFlair, đừng quên làm chúng tôi hài lòng với phản hồi tích cực của bạn trên Google. Facebook

__ REPR __ trong Python là gì?

Phương thức __repr__() trả về một biểu diễn chuỗi giàu thông tin hoặc chính thức hơn của một đối tượng . Phương thức này được gọi bởi hàm repr() tích hợp. Nếu có thể, chuỗi được trả về phải là một biểu thức Python hợp lệ có thể được sử dụng để tạo lại đối tượng.

str() trong Python là gì?

Python có một lớp chuỗi dựng sẵn tên là "str" ​​với nhiều tính năng tiện dụng (có một mô-đun cũ hơn tên là "string" mà . Chuỗi ký tự có thể được đặt trong dấu nháy kép hoặc dấu nháy đơn, mặc dù dấu nháy đơn được sử dụng phổ biến hơn.

Mục đích của __ repr __ là gì?

Theo tài liệu chính thức, __repr__ được sử dụng để tính toán biểu diễn chuỗi "chính thức" của một đối tượng và thường được sử dụng để gỡ lỗi.

Mục đích của việc định nghĩa các hàm __ STR __ và __ REPR __ trong một lớp Hai hàm này khác nhau như thế nào?

__str__ được sử dụng để hiển thị một chuỗi đại diện cho đối tượng của bạn để người khác dễ dàng đọc được. __repr__ được sử dụng để hiển thị biểu diễn chuỗi của đối tượng. Lưu câu trả lời này