ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

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

     Parameter (พารามิเตอร์) คือข้อมูลที่รับจากภายนอกเข้ามาใช้งานฟังก์ชันต่างๆ โดยฟังก์ชันจะประมวลผลไปตามพารามิเตอร์ที่ได้รับมา ซึ่งผลลัพธ์ที่ได้ก็จะแปรเปลี่ยนไปตามค่าของพารามิเตอร์ที่ส่งเข้ามานั่นเอง ดังนั้นพารามิเตอร์จึงช่วยให้ฟังก์ชันต่างๆทำงานได้อย่างหลากหลาย

Variadic Parameter

     Variadic Parameter คือ พารามิเตอร์ที่เราจะกำหนดค่าให้กับมันกี่จำนวนก็ได้ คล้ายกับตัวแปรแบบทูเพิล ที่สามารถเก็บข้อมูลได้มากกว่า 1 ค่า โดยมีลักษณะดังนี้

- ภายในฟังก์ชันเราจะสามารถเข้าถึงแต่ละค่าโดยใช้วิธีเดียวกับทูเพิล

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

- ในฟังก์ชันสามารถมีทั้งพารามิเตอร์แบบปกติและแบบ Variadic ร่วมกันได้ แต่จะสามารถมี Variadic ได้เพียงอันเดียวเท่านั้น

     ส่วนวิธีในการสร้างพารามิเตอร์แบบนี้คือให้วางเครื่องหมาย * ไว้หน้าชื่อพารามิเตอร์ตั้วนั้น 

ตัวอย่าง

def product_list(brand, *products):
    print(f'{brand} ',end='')
    x = 'products: ' if len(products) > 1 else 'product :'
    x += ','.join(products)
    print(x)

product_list('Apple','iPhone','iPad','MacBook')
product_list('Google','Pixel')
product_list('Samsung','Galaxy A','Galaxy Note','Galaxy S','Galaxy J')

ผลลัพธ์

ผลลัพธ์ที่ได้จากตัวอย่าง
ผลลัพธ์จากตัวอย่าง

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

def product_list(*products, brand):
    print(f'{brand} ',end='')
    x = 'products: ' if len(products) > 1 else 'product :'
    x += ','.join(products)
    print(x)

product_list('iPhone','iPad','MacBook',brand='Apple')
product_list('Pixel',brand='Google')
product_list('Galaxy A','Galaxy Note','Galaxy S','Galaxy J',brand='Samsung')

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

 

 

ช่องทางการศึกษาเพิ่มเติมเกี่ยวกับ : Python

Default Parameter พารามิเตอร์แบบมีค่าดีฟอลต์

Positional Argument ลำดับของอาร์กิวเมนต์ในไพทอน

การเรียกใช้ฟังก์ชันแบบ Recursion ในไพทอน ฟังชันก์ทำงานซ้ำเรียกตัวเอง

การใช้งานตัวแปรแบบ Global และ Local

การแยกและตัดช่องว่างข้อมูลชนิด String (สตริง) ในไพทอน

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
อัพเดทความปลอดภัย 7 จุด!!! ใน Joomla เวอร์ชั่นใหม่ 3.9.23
โดย tsukasaz พ 25 พ.ย. 2020 11:36 am บอร์ด MindPHP News & Feedback
1
4
พ 25 พ.ย. 2020 12:46 pm โดย prmindphp
แนะนำหนังสือ Pre-Order PHP - high-performance ด้วย Swoole
โดย mindphp อ 24 พ.ย. 2020 4:47 pm บอร์ด Programming - PHP
0
11
อ 24 พ.ย. 2020 4:47 pm โดย mindphp
จ่ายเงินสมทบประกันสังคม มาตรา 33 , 39
โดย milk2533 อ 24 พ.ย. 2020 3:08 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
8
อ 24 พ.ย. 2020 3:08 pm โดย milk2533
ออกหัก ณ ที่จ่าย ค่าขนส่งคน , ค่าขนส่งของ ต่างกันอย่างไร
โดย milk2533 อ 24 พ.ย. 2020 2:51 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
8
อ 24 พ.ย. 2020 2:51 pm โดย milk2533
การเขียนสั่งจ่ายเช็ค อย่างไร
โดย milk2533 อ 24 พ.ย. 2020 1:29 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
6
อ 24 พ.ย. 2020 1:29 pm โดย milk2533
การจัดสินค้าขาย
โดย milk2533 อ 24 พ.ย. 2020 12:49 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
17
อ 24 พ.ย. 2020 12:49 pm โดย milk2533
คำว่า FIFO สินค้า ที่ถูกเรียกกันใน 7-11 คืออะไร
โดย milk2533 อ 24 พ.ย. 2020 11:17 am บอร์ด Share Knowledge
0
13
อ 24 พ.ย. 2020 11:17 am โดย milk2533
เครื่องตรวจนับสินค้า ช่วยอะไรเราได้บ้าง
โดย milk2533 อ 24 พ.ย. 2020 11:15 am บอร์ด Share Knowledge
0
12
อ 24 พ.ย. 2020 11:15 am โดย milk2533