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
Chức năng repr Python với ví dụ
repr[] trong Python là gì?
Hãy hỏi IDLE
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
ĐÚNG VẬY
________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
>>> s0
đầu ra
Đâ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/
>>> s1
đầu ra
>>> s0
đầ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
>>> s3
đầu ra
Xin chào
>>> s4
đầ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
>>> s5
đầu ra
'3'
>>> s6
đầ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
>>> s7
đầu ra
‘2018-09-07 17. 33. 24. 261778'
>>> s8
đầu ra
'ngày giờ. ngày giờ [2018, 9, 7, 17, 33, 24, 261778]'
>>> s9
đầ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]]==x0
đầu ra
ngày giờ. ngày giờ[2018, 9, 7, 17, 33, 24, 261778]
>>> x=7 >>> eval[repr[x]]==x1
đầ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]]==x2
đầu ra
__repr__ cho bản trình diễn
>>> x=7 >>> eval[repr[x]]==x3
đầu ra
__str__ cho bản trình diễn
>>> x=7 >>> eval[repr[x]]==x4
đầu ra
'__str__ cho bản demo'
>>> x=7 >>> eval[repr[x]]==x5
đầu ra
'__repr__ cho bản demo'
>>> x=7 >>> eval[repr[x]]==x6
đầ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
- Hàm repr trong Python là gì?
- Sự khác biệt giữa repr và str trong Python là gì?
- repr có nghĩa là gì trong Python?
- Việc sử dụng chức năng repr trong Python là gì?
- Cho ví dụ về hàm repr trong Python
Sự 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