Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python f-strings: คู่มือฉบับสมบูรณ์สำหรับการจัดรูปแบบสตริง

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 ของเรา