การใช้ '{}' ภายในรูปแบบสตริงถือว่าเป็น Pythonic หรือไม่


9

ฉันเพิ่งรู้ว่าคุณสามารถเขียน

'{}{}'.format(string_a, string_b)

แทน

'{0}{1}'.format(string_a, string_b)

ใน Python เช่นคุณสามารถละเว้นตัวเลขสำหรับพารามิเตอร์รูปแบบสตริงเมื่อคุณต้องการสิ่งที่จะสล็อตในหนึ่งโดยหนึ่งในการสั่งซื้อ

สิ่งนี้ถือว่าเป็น Pythonic หรือไม่

หมายเหตุ: "Pythonic" เป็นคำที่ใช้กันทั่วไปในหมู่ Python โปรแกรมเมอร์เพื่อหมายถึงรหัส Python ภายในวัฒนธรรม Python มีความเห็นพ้องที่ชัดเจนเกี่ยวกับคำถามสไตล์โดยเฉพาะอย่างยิ่งสำหรับคำถามที่เฉพาะเจาะจงเช่นนี้เนื่องจากปรัชญาการออกแบบที่ชัดเจนของภาษาที่ว่า "ควรมีอย่างใดอย่างหนึ่งและดีกว่าเพียงวิธีเดียวเท่านั้นที่จะทำได้" นี่คือคำพูดที่มาจาก "The Zen of Python" ซึ่งเป็นชุดของคำพังเพยที่จะกำหนดนิยามของ "Pythonic" และรวมอยู่ในทุก ๆ การแจกจ่ายของ Python (ที่บรรทัดคำสั่งใด ๆ ของ Python interpreter ให้ป้อนimport thisเพื่อดู)


4
@ GregHewgill: "Pythonic" เป็นคำศัพท์ที่ใช้กันอย่างแพร่หลายซึ่งโดยทั่วไปหมายถึง "idiomatic Python"; การเรียงลำดับของรหัส Python ที่ผู้สนใจรักในรหัส Python ที่มีคุณภาพจะได้รับความพึงพอใจอย่างมาก
Carson63000

1
คุณลักษณะเฉพาะนี้รวมอยู่ใน Python อย่างชัดเจน (ไม่ใช่คำถามสไตล์จริงๆ) ดังนั้นทำไมจึงไม่ถือว่า "Pythonic" โดยคำจำกัดความที่สมเหตุสมผล เท่าที่ฉันรู้ไม่มีคุณสมบัติของภาษาที่เรียกว่า "unPythonic"
Greg Hewgill

4
สำหรับการอ้างอิง{}คุณลักษณะถูกนำมาใช้ใน Python 3.1 การเพิ่มประสิทธิภาพที่ได้รับแจ้งนอกจากนี้เป็นปัญหา 5237 กุยโด้มีความคิดเห็นหลายประการเกี่ยวกับปัญหานั้นรวมถึง "โปรดไปข้างหน้าและทำสิ่งนี้ให้เสร็จฉันดีใจที่สิ่งนี้เกิดขึ้น!" หากไม่ได้รับการพิจารณาว่าเป็น "Pythonic" ฉันไม่รู้ว่ามันคืออะไร
Greg Hewgill

4
สำหรับคนที่โหวตให้ปิดคำถามนี้ฉันขอชี้ให้เห็นว่าสิ่งที่เป็นหรือไม่ Pythonic เป็นส่วนสำคัญของวัฒนธรรมการเข้ารหัสของ Python และฉันขอยืนยันว่าวัฒนธรรมการเข้ารหัสเป็นองค์ประกอบที่สำคัญของวิศวกรรมซอฟต์แวร์ เว็บไซต์นี้
Ghopper21

2
@ Andrea - นั่นเป็นสิ่งที่ฉันคิดไว้ครั้งแรก แต่มันยากที่จะเถียงว่า BDFL คิดว่ามันไม่ได้เป็น Pythonic หลังจากเห็นคำพูดของเขาในเรื่องนี้ฉันกลับไปดู Zen ของ Python อีกครั้งและคิดว่านี่อาจเป็นกรณีของ เหตุผลในการสนทนา (เชื่อมโยงกับคำตอบของ Greg) มีความสะดวกสบายสำหรับผู้เขียนโค้ด และในกรณีใด ๆ วิธีที่ชัดเจนที่สุดในการใช้การจัดรูปแบบสตริง"{a}{b}".format(a=string_a, b=string_b)ไม่ใช่การกำหนดหมายเลข ทั้งนี้เป็นเพียงการเก็งกำไรและการอ่านระหว่างบรรทัดในความคิดของฉัน ...
Ghopper21

คำตอบ:


12

{}คุณลักษณะถูกนำมาใช้ในหลาม 3.1 (และยัง backported หลาม 2.7) การเพิ่มประสิทธิภาพที่ได้รับแจ้งนอกจากนี้เป็นปัญหา 5237 Guido มีความคิดเห็นหลายประการเกี่ยวกับปัญหาดังกล่าว ได้แก่ :

โปรดไปข้างหน้าและทำสิ่งนี้ให้สำเร็จ ฉันดีใจที่มีสิ่งนี้เกิดขึ้น!

คุณลักษณะที่มีการรับรองจากBDFLนั้นจะได้รับการพิจารณาว่าเป็น "Pythonic" อย่างแน่นอน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.