Python f-strings: คู่มือฉบับสมบูรณ์
f-strings ใน Python ใช้สำหรับฝังนิพจน์ (expression) ลงในสตริง นิพจน์อาจเป็นค่าของตัวแปร ผลลัพธ์ของการคำนวณทางคณิตศาสตร์ หรือค่า Python อื่นๆ f-strings แตกต่างจากสตริงทั่วไปที่มีตัวอักษร f นำหน้าสตริง
เมื่อเขียนสตริง คุณอาจต้องการเปลี่ยนส่วนหนึ่งของสตริงให้ใช้ค่าเฉพาะ เช่น ต้องการให้สตริงแสดงค่าที่ผู้ใช้ป้อนเข้ามาในคอนโซล
Python รองรับการจัดรูปแบบสตริงมานานแล้ว แต่ Python 3.6 ได้นำเสนอวิธีใหม่ในการเปลี่ยนสตริงให้รวมค่าใหม่: f-strings
บทช่วยสอนนี้จะอธิบายพื้นฐานของ f-strings ใน Python พร้อมตัวอย่าง หลังจากอ่านจบ คุณจะกลายเป็นผู้เชี่ยวชาญในการใช้ f-strings
การจัดรูปแบบสตริงใน Python (ก่อน Python 3.6)
ก่อน Python 3.6 มีสองวิธีจัดรูปแบบสตริง: การจัดรูปแบบด้วยเครื่องหมายเปอร์เซ็นต์ (%) และ str.format()
การจัดรูปแบบด้วยเครื่องหมายเปอร์เซ็นต์ (%)
การจัดรูปแบบแบบนี้มีมาตั้งแต่แรกเริ่ม และอนุญาตให้จัดรูปแบบสตริงด้วยค่าหนึ่งหรือหลายค่า
ตัวอย่างการใช้งาน:
email = "lindsay.ballantyne@gmail.com" new_string = "Your email address is %s." % email print(new_string)
ผลลัพธ์:
Your email address is lindsay.ballantyne@gmail.com
ในโค้ด เราใช้ %s เป็นตัวแทน (placeholder) สำหรับสตริงใหม่ใน "Your email address is %s." ที่ท้ายบรรทัด ใช้เครื่องหมายเปอร์เซ็นต์ตามด้วย email เพื่อแทนที่ %s ด้วยอีเมลของผู้ใช้
เมธอด str.format()
ใน Python 2.6 ได้นำเสนอวิธีใหม่: ฟังก์ชัน format()
สมมติต้องการจัดรูปแบบสตริงด้วยสองค่า สามารถทำได้ด้วย format():
name = "Lindsay Ballantyne"
email = "lindsay.ballantyne@gmail.com"
new_string = "Hello, {}. Your email address is {}.".format(name, email)
ผลลัพธ์:
Hello, Lindsay Ballantyne. Your email address is lindsay.ballantyne@gmail.com.
ในโค้ด เรากำหนดตัวแปร name และ email แล้วใช้ไวยากรณ์ .format() เพื่อแทรกค่าเข้าไปในสตริง
รูปแบบ f-string ใน Python
f-strings ฝังนิพจน์ลงในสตริงลิเทอรัล (string literal) สามารถใช้ฝังตัวแปร สตริง หรือผลลัพธ์ของฟังก์ชันเข้าไปในสตริงได้ f-strings เริ่มต้นด้วย f ก่อนสตริง
นำเสนอใน Python 3.6 ทำให้การจัดรูปแบบสตริงง่ายขึ้น
f-strings ใช้วงเล็บปีกกา {} เพื่อเก็บค่าที่ควรจัดรูปแบบเข้าไปในสตริง สามารถใช้ F ตัวใหญ่แทน f ได้เช่นกัน
พิจารณาไวยากรณ์นี้:
f"This is a string."
เราเพิ่งกำหนด formatted string literal สามารถเพิ่มค่าเข้าไปในสตริงด้วยวงเล็บปีกกา: {}
บางคนเรียกการจัดรูปแบบสตริงว่า string interpolation ทั้งสองแนวคิดหมายถึงสิ่งเดียวกัน: การเพิ่มค่าลงในอีกสตริงหนึ่ง
มาดูตัวอย่าง f-string ในการทำงานจริง
ตัวอย่าง f-string ใน Python
สมมติต้องการเพิ่มชื่อ "Lindsay Ballantyne" ลงในสตริง ทำได้ด้วยโค้ดนี้:
name = "Lindsay Ballantyne"
print(f"Your name is {name}.")
ผลลัพธ์:
Your name is Lindsay Ballantyne.
ในโค้ด เราประกาศตัวแปร name เก็บชื่อผู้ใช้ แล้วใช้ f-string แทรกค่าเข้าไปในสตริง แสดงว่าสามารถแทรกค่าตัวแปรโดยตรงได้ ไวยากรณ์ง่ายกว่าตัวเลือกอื่นๆ เช่น format() หรือ %
ไม่ chỉเท่านั้น f-strings ยังรองรับฟังก์ชันหรือนิพจน์ใดๆ ที่ประเมินค่าภายในสตริง สมมติต้องการทำการคำนวณคณิตศาสตร์ใน f-string:
name = "Lindsay Ballantyne"
print(f"Your name is {name}. On your next birthday, you will be {22 + 1}.")
ผลลัพธ์:
Your name is Lindsay Ballantyne. On your next birthday, you will be 23.
เราสามารถทำฟังก์ชันคณิตศาสตร์ได้ เนื่องจากนิพจน์ใน string literals ถูกประเมินค่าในขณะรันไทม์ (run-time) และเป็นส่วนหนึ่งของโปรแกรมหลัก ฟังก์ชันคณิตศาสตร์ของเราคือ 22 + 1 ซึ่งทำได้โดยการปิดล้อมฟังก์ชันด้วยวงเล็บปีกกา
f-strings หลายบรรทัด (Multiline)
ไวยากรณ์ f-string รองรับการจัดรูปแบบสตริงหลายบรรทัด สามารถสร้าง multiline f-string โดยการปิดล้อม f-string หลายตัวด้วยวงเล็บปีกกา
สมมติต้องการจัดรูปแบบค่าในสตริงหลายบรรทัด:
name = "Lindsay Ballantyne"
email = "lindsay.ballantyne@gmail.com"
age = 22
profile = (
f"Name: {name} \n"
f"Email: {email} \n"
f"Age: {age} \n"
)
print(profile)
ผลลัพธ์:
Name: Lindsay Ballantyne Email: lindsay.ballantyne@gmail.com Age: 22
ในโค้ด เราประกาศตัวแปรสามตัว — name, email, age — เก็บข้อมูลผู้ใช้ แล้วสร้างสตริงหลายบรรทัดจัดรูปแบบด้วยตัวแปรเหล่านั้น
สังเกตว่าในโค้ด เราวาง f นำหน้าแต่ละบรรทัดในสตริงหลายบรรทัด เนื่องจากหากไม่วาง f ไวยากรณ์ f-string จะไม่ทำงาน
อักขระพิเศษใน f-strings
ยังมีหนึ่งสิ่งที่ต้องเรียนรู้ก่อนใช้ f-strings: การจัดการอักขระพิเศษ
นี่คือกฎที่ควรจำ:
เครื่องหมายคำพูด (Quotation Marks)
เมื่อใช้ f-strings สามารถใช้เครื่องหมายคำพูดในนิพจน์ได้ แต่ต้องใช้ประเภทที่ต่างจากที่ใช้ภายนอก f-string ตัวอย่าง:
print(f"{'It is Thursday!'}")
ผลลัพธ์:
It is Thursday
สังเกตว่าเราใช้เครื่องหมายคำพูดเดี่ยว (') ภายใน f-string (ซึ่งถูกปิดล้อมด้วยวงเล็บปีกกา) และเครื่องหมายคำพูดคู่ (") สำหรับสตริงทั้งหมด
ดิกชันนารี (Dictionaries)
เพื่ออ้างอิงค่าในดิกชันนารี Python ต้องใช้เครื่องหมายคำพูด ควรใช้ประเภทเครื่องหมายคำพูดที่ต่างกันเมื่ออ้างอิงแต่ละค่าในดิกชันนารี
ตัวอย่างการทำงานกับดิกชันนารีและ f-string:
user = {"name": "Lindsay Ballantyne", "email": "lindsay.ballantyne@gmail.com"}
print(f"Hello, {user['name']}. Your email address is: {user['email']}.")
ผลลัพธ์:
Hello, Lindsay Ballantyne. Your email address is: lindsay.ballantyne@gmail.com
สังเกตว่าเมื่ออ้างอิงค่าในดิกชันนารี เราใช้เครื่องหมายคำพูดเดี่ยว ('') ส่วน f-string หลักใช้เครื่องหมายคำพูดคู่ ("") ป้องกันข้อผิดพลาดการจัดรูปแบบสตริง
วงเล็บปีกกา (Curly Braces)
เพื่อใช้วงเล็บปีกกาใน f-string ต้องใช้คู่ปีกกาสองชั้น ตัวอย่าง:
print(f"{{This is a test}}")
ผลลัพธ์:
{This is a test}
เห็นว่ามีเพียงชุดปีกกาเดียวปรากฏในผลลัพธ์ เนื่องจากชุดหนึ่งถูกใช้โดย f-string เพื่อระบุว่าจะมีการจัดรูปแบบสตริง ดังนั้นเพียงชุดปีกกาภายในเท่านั้นที่จะปรากฏ
ความคิดเห็น (Comments)
เมื่อเขียน f-string f-string ไม่ควรมีเครื่องหมายแฮช (#) เนื่องจากเครื่องหมายนี้หมายถึงความคิดเห็นใน Python และจะทำให้เกิด syntax error
หากต้องการใช้แฮชในสตริง ให้จัดรูปแบบมันในสตริง ไม่ใช่ใน f-string ตัวอย่าง:
user_id = "202"
print(f"User ID: #{user_id}")
ผลลัพธ์:
User ID: #202
เราเพิ่มแฮชก่อนวงเล็บปีกกาของ f-string เพื่อให้แฮชปรากฏอย่างถูกต้องในสตริง
สรุป
Python f-strings เป็นเครื่องมือใหม่สำหรับฝังนิพจน์ลงใน string literals
ข้อดีของ f-strings มากมาย: อ่านง่าย ทำงานดีแม้กับค่าจำนวนมาก
บทช่วยสอนนี้อธิบายเปรียบเทียบ f-strings กับตัวเลือกจัดรูปแบบสตริงอื่นๆ และวิธีใช้ f-strings ในโค้ด ตอนนี้คุณมีความรู้พร้อมทำงานกับ f-strings อย่างมืออาชีพแล้ว!
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Python ดูคู่มือ How to Learn Python ของเรา