จัดโครงสร้างโค้ดของคุณให้เป็นฟังก์ชันที่นำกลับมาใช้ซ้ำได้ เชี่ยวชาญค่าเริ่มต้น และเข้าใจขอบเขตของตัวแปร
เปิดบทเรียนนี้ใน Kodokonคุณเขียนลูปและเงื่อนไขเป็นแล้ว ถึงเวลาจัดโครงสร้างโค้ดของคุณ ฟังก์ชันแยกงานเฉพาะอย่างหนึ่งออกมาไว้หลังชื่อที่ชัดเจน คุณเขียนมันครั้งเดียว ทดสอบมันครั้งเดียว แล้วเรียกใช้มันได้ทุกที่ def ประกาศฟังก์ชัน พารามิเตอร์รับค่าที่ส่งเข้ามา และ return ส่งผลลัพธ์กลับไปยังจุดที่เรียก จำสิ่งหนึ่งที่มักถูกมองข้ามไว้ให้ดี ฟังก์ชันที่ไม่มี return จะคืนค่า None
def net_price(price, tax_rate):
total = price * (1 + tax_rate)
return round(total, 2)
result = net_price(100, 0.2)
print(result) # 120.0ค่าเริ่มต้น (default values) ทำให้ฟังก์ชันยืดหยุ่นโดยไม่ต้องสร้างเวอร์ชันแยกมากมาย จงประกาศมันไว้หลังพารามิเตอร์ที่จำเป็น ตอนเรียกใช้ อาร์กิวเมนต์แบบระบุชื่อ (keyword arguments) (currency="USD") จะบอกเจตนาของคุณอย่างชัดเจน ในโค้ดระดับมืออาชีพ คุณจะใช้มันทันทีที่ฟังก์ชันมีพารามิเตอร์มากกว่าสองตัว การเรียกจะอ่านเข้าใจได้ทันทีโดยไม่ต้องเปิดดูตัวฟังก์ชัน
def format_price(amount, currency="EUR", digits=2):
return f"{amount:.{digits}f} {currency}"
print(format_price(19.9)) # 19.90 EUR
print(format_price(19.9, currency="USD")) # 19.90 USD
print(format_price(19.9, digits=0)) # 20 EURdef add_item(item, items=None):
if items is None:
items = []
items.append(item)
return items
print(add_item("pen")) # ['pen']
print(add_item("book")) # ['book']ขอบเขต (scope) กำหนดว่าตัวแปรมีอยู่ที่ใดบ้าง ตัวแปรที่สร้างขึ้นภายในฟังก์ชันเป็นตัวแปร เฉพาะที่ (local) มันจะหายไปเมื่อการเรียกจบลง ฟังก์ชันสามารถ อ่าน ตัวแปรส่วนกลางได้ แต่การกำหนดค่าใด ๆ จะสร้างตัวแปรเฉพาะที่ตัวใหม่ขึ้นมา - ตัวแปรส่วนกลางยังคงเดิมไม่เปลี่ยนแปลง นิสัยที่ดีคือ แทนที่จะแก้ไขตัวแปรส่วนกลาง จงส่งพารามิเตอร์เข้าไปและคืนผลลัพธ์กลับออกมา โค้ดของคุณจะคาดเดาได้และทดสอบได้
rate = 0.2
def apply_tax(price):
return round(price * (1 + rate), 2)
def set_rate(new_rate):
rate = new_rate # local variable, no effect
print(apply_tax(100)) # 120.0
set_rate(0.1)
print(apply_tax(100)) # 120.0, the global is untouched