01/10/2018, 15:49

Sao lại dùng {} trong return

Hi all.

Mình mới nhập môn Python theo tut Python-3in1-udemy

Mình có research case này nhưng ko có clear lắm trong lúc theo dõi course. Đến phần return trong Method của 1 class có đoạn

    def __str__(self):
        return "{} is {} years old".format(self.name, self.age)

Cho mình hỏi sao lại có {} và kết hợp .format phía sau mà không dùng kiểu như.

return "%s is %d years old",  %(name , age)

Mong được mọi người giúp đỡ.

---- UPDATE —
Using % and .format() for great good!
Mình đã tìm được đáp án thanks. Nhờ AD close post

Đào An viết 18:04 ngày 01/10/2018

Mình có research case này nhưng ko có clear lắm trong lúc theo dõi course.

Uncelvel viết 17:59 ngày 01/10/2018

Lầm lỡ thôi bro. Tại trước đó có đọc qua mấy cái py2 toàn thấy dùng % nên mới ra nông nỗi.

Bao lần học ko đến nơi đến chốn rồi, giờ mò lại chắp chắp vá vá nên mới tùm lum.

Phan Bá Hải viết 17:54 ngày 01/10/2018

Mình thấy.format() có điểm hay so với dùng % là mình không cần phải nhớ %s format chỗi, %d format số,… như trước

Uncelvel viết 17:58 ngày 01/10/2018

Không cần phải nhớ? có đúng là không cần phải nhớ ko?. Vì trong PyFormat mình thấy vẫn cần đấy.

Old
'%s %r' % (Data(), Data())
New
'{0!s} {0!r}'.format(Data())



class Data(object):

    def __repr__(self):
        return 'räpr'

Old
'%r %a' % (Data(), Data())
New
'{0!r} {0!a}'.format(Data())

Output

räpr r\xe4pr

HK boy viết 18:04 ngày 01/10/2018

Không cần phải nhớ? có đúng là không cần phải nhớ ko?. Vì trong PyFormat mình thấy vẫn cần đấy.

Bạn bỏ nó đi cũng đâu có chết ai đâu, họ đưa ra ví dụ thế thôi mà? Với lại in gì là tuỳ vào mục đích của bạn, bạn dùng hay không thì cũng là tuỳ bạn. Mấy cái %s %r %d có gì khó nhớ đâu?

Đọc standard documentation xem:

https://docs.python.org/3/library/string.html#format-string-syntax

conversion ::= "r" | "s" | "a"

Chỉ có 3 cái này thôi, có gì mà khó nhớ?


Nhớ mấy cái đơn giản như %s, %r, %d thôi (mà cũng chỉ có từng đó thôi). Những cái khó hơn thì mở documentation ra xem, có ai cấm?

Bài liên quan
0