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

Python: Return Multiple Values from a Function (การคืนค่าหลายค่าจากฟังก์ชัน)

Python: Return Multiple Values from a Function

คุณสามารถคืนค่าหลายค่าได้โดยการรวมค่าเหล่านั้นในดิกชันนารี (dictionary), ทูเพิล (tuple), หรือลิสต์ (list) ชนิดข้อมูลเหล่านี้ให้คุณจัดเก็บค่าที่คล้ายกันหลายค่า คุณสามารถแยกค่าแต่ละค่าออกมาในโปรแกรมหลัก หรือส่งค่าหลายค่าและคั่นด้วยคอมมา

ฟังก์ชัน Python สามารถคืนค่าหลายค่าได้ เพื่อคืนค่าหลายค่า คุณสามารถคืนดิกชันนารี, ทูเพิล Python, หรือลิสต์ไปยังโปรแกรมหลัก

คู่มือนี้อธิบายวิธีคืนค่าหลายค่าไปยังโปรแกรมหลักด้วยสองวิธี มาเริ่มกัน

Python: Return Multiple Values

คุณสามารถคืนค่าหลายค่าจากฟังก์ชัน Python ได้โดยใช้:

  • ลิสต์ที่มีหลายค่า
  • ทูเพิลที่มีหลายค่า
  • ดิกชันนารีที่มีหลายเรคคอร์ด
  • ค่าหลายค่าคั่นด้วยคอมมา

ชนิดข้อมูลทั้งหมดข้างต้นให้จัดเก็บหลายค่า วิธีคืนค่าหลายค่าคั่นด้วยคอมมาเป็นวิธีที่สง่างามที่สุด เนื่องจากวิธีนี้ชี้เจตนาชัดเจน: คืนค่าหลายค่าแยกกันกลับไปยังโปรแกรมหลัก

คำสั่ง return ของ Python ส่งค่าจากฟังก์ชันไปโปรแกรมหลัก คำสั่งนี้มักใช้คืนค่าหนึ่งค่าไปโปรแกรมหลัก แต่สามารถใช้คืนค่าหลายค่าไปโปรแกรมหลักได้

Python: Return Multiple Values ด้วยคอมมา (Commas)

คุณสามารถคืนค่าหลายค่าได้โดยแยกค่าที่ต้องการคืนด้วยคอมมา ค่าเหล่านี้ควรปรากฏหลังคำสั่ง return ของ Python

เราจะเขียนโปรแกรมคำนวณจำนวนการขายที่ร้านอุปกรณ์อิเล็กทรอนิกส์ เราจะนับเฉพาะการขายที่มีค่ามากกว่า $500 โปรแกรมยังคำนวณค่าเฉลี่ยของแต่ละการขาย

เริ่มต้น กำหนดอาร์เรย์ Python ที่มีรายการขาย:

sales = [59.99, 240.00, 655.25, 75.99]

ต่อไป เขียนฟังก์ชัน Python คำนวณจำนวนการขายมากกว่า $500 และค่าเฉลี่ยมูลค่าการซื้อ:

def calculate_data(sales):
    over_limit = 0
    for s in sales:
        if s > 500:
            over_limit += 1
    average_purchase = sum(sales) / len(sales)
    return over_limit, average_purchase

ฟังก์ชันของเราวนผ่านทุกการขายในลิสต์ด้วยลูป for หากการขายมีค่ามากกว่า $500 ตัวแปร over_limit ของ Python เพิ่มขึ้น 1 เราคำนวณค่าเฉลี่ยมูลค่าการซื้อโดยหารมูลค่ารวมของทุกการขายด้วยจำนวนการขาย

ท้ายฟังก์ชัน ใช้คำสั่ง return คืนค่า over_limit และ average_purchase ไปโปรแกรมหลัก

สิ่งที่เหลือคือ เรียกฟังก์ชันและแสดงข้อมูลที่โปรแกรมคำนวณไปที่คอนโซล:

over_limit, average_purchase = calculate_data(sales)
print("{} sales were made over $500. The average purchase was ${}.".format(over_limit, round(average_purchase)))

เราปัดเศษค่าเฉลี่ยการซื้อเป็นทศนิยมสองตำแหน่งด้วยเมธอด round() โค้ดพิมพ์ข้อความแจ้งค่าที่เราคำนวณ มารันโปรแกรม:

1 sales were made over $500. The average purchase was $258.

โปรแกรมของเราบอกสำเร็จว่ามีการขายมากกว่า $500 กี่ครั้ง และราคาเฉลี่ยการซื้อเท่าไหร่

โค้ดนี้ทำงานเพราะคำสั่ง return แปลงค่าของเราเป็นทูเพิล และคืนรายการทูเพิลไปโปรแกรมหลัก เรา unpack ทูเพิลนี้เป็นสองตัวแปรในบรรทัด:

over_limit, average_purchase = calculate_data(sales)

Python: Return Multiple Values ด้วยลิสต์หรือทูเพิล (List or Tuple)

ทั้งลิสต์และทูเพิลให้จัดเก็บหลายค่าได้ หมายถึงเราสามารถใช้พวกมันคืนค่าหลายค่าไปโปรแกรมหลัก

การใช้ลิสต์หรือทูเพิลเหมาะหากค่าที่คุณคืนมีความสัมพันธ์กันบ้าง แต่คุณสามารถใช้วิธีนี้คืนชุดค่าใดๆ ได้

เราจะคืนขนาดการซื้อเฉลี่ย และจำนวนการซื้อมากกว่า $500 ไปโปรแกรมหลัก เพื่อทำเช่นนั้น อ้างอิงตัวอย่างก่อนหน้าและเปลี่ยนเล็กน้อยเพื่อใช้ลิสต์:

def calculate_data(sales):
    over_limit = 0
    for s in sales:
        if s > 500:
            over_limit += 1
    average_purchase = sum(sales) / len(sales)
    return [over_limit, average_purchase]

เราเพียงแยกค่าของเราเป็นลิสต์เดียว ลิสต์ของเรามีจำนวนการซื้อมากกว่า $500 และมูลค่าการซื้อเฉลี่ย ตามลำดับ

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

เพื่อเข้าถึงค่าเหล่านี้ในโปรแกรมหลัก เราต้องใช้ดัชนี (indexing):

values = calculate_data(sales)
print("{} sales were made over $500. The average purchase was ${}.".format(values[0], round(values[1])))

เราใช้ไวยากรณ์ values[0] เข้าถึงค่าแรกในลิสต์ที่ฟังก์ชัน calculate_data() คืนค่า สอดคล้องกับค่า over_limit ในฟังก์ชัน เราใช้ values[1] เข้าถึงมูลค่าการซื้อเฉลี่ย

โค้ดคืนค่า:

1 sales were made over $500. The average purchase was $258.

โค้ดทำงานเหมือนตัวอย่างก่อน แต่คราวนี้เราใช้ลิสต์แยกค่าในโค้ด

Python: Return Multiple Values ด้วยดิกชันนารี (Dictionary)

เราสามารถคืนค่าหลายค่าจากฟังก์ชันด้วยดิกชันนารี

ในตัวอย่างก่อน เราคืนแค่สองค่าไปโปรแกรมหลัก ทำให้ syntax การ unpack (การแยกค่าออกเป็นตัวแปรหลายตัว) สะดวก

หากเราทำงานกับค่ามากกว่านี้ อาจง่ายกว่าที่จะคืนดิกชันนารีที่เชื่อมโยงแต่ละค่ากับฉลาก (label) มาปรับปรุงฟังก์ชันล่าสุดให้ใช้ดิกชันนารีคืนค่าหลายค่าไปโปรแกรมหลัก:

def calculate_data(sales):
    over_limit = 0
    for s in sales:
        if s > 500:
            over_limit += 1
    average_purchase = sum(sales) / len(sales)
    return {
        "limit": over_limit,
        "average": average_purchase
    }

ฟังก์ชันคืนดิกชันนารีด้วยสองคีย์และค่า คีย์ "limit" และ "average" ใช้ระบุแต่ละค่าได้อย่างเฉพาะเจาะจง ตอนนี้เราต้องปรับการเรียกฟังก์ชันและคำสั่ง print ให้รองรับไวยากรณ์ใหม่:

values = calculate_data(sales)
print("{} sales were made over $500. The average purchase was ${}.".format(values["limit"], round(values["average"])))

เราคืนดิกชันนารีกลับโปรแกรมหลัก กำหนดดิกชันนารีนี้ให้ตัวแปร values จากนั้นใช้ดัชนีดึงค่า "limit" และ "average"

มารันโปรแกรม:

1 sales were made over $500. The average purchase was $258.

โปรแกรมคืนคำตอบเหมือนก่อนหน้า คาดหมายเพราะเราเพียงเปลี่ยนวิธีคืนค่าไปโปรแกรมหลัก ตรรกะการคำนวณยังคงเดิม

สรุป

คุณสามารถคืนค่าหลายค่าจากฟังก์ชันได้ด้วยดิกชันนารี, ทูเพิล, หรือลิสต์ ชนิดข้อมูลเหล่านี้ทั้งหมดให้จัดเก็บหลายค่า ไม่มีไวยากรณ์เฉพาะสำหรับคืนค่าหลายค่า แต่วิธีเหล่านี้ทำหน้าที่แทนได้ดี

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

ต้องการเร่งการเดินทางเรียนภาษา Python? ดูคู่มือ How to Learn Python สำหรับคำแนะนำคอร์ส Python ชั้นนำและแหล่งทรัพยากรออนไลน์