อาร์กิวเมนต์ Python ครบ: ตำแหน่ง, คีย์เวิร์ด, *args, **kwargs

目次

1. อาร์กิวเมนต์ใน Python คืออะไร?

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

บทบาทพื้นฐานของฟังก์ชันและอาร์กิวเมนต์

ฟังก์ชันคือชุดของคำสั่งสำหรับดำเนินงานเฉพาะอย่าง อาร์กิวเมนต์คือข้อมูลอินพุตที่ส่งให้กับฟังก์ชัน โดยใช้งานได้ดังนี้
def greet(name):
    print(f"สวัสดี, {name}!")
ในตัวอย่างนี้ การส่งชื่อใดๆ ให้กับอาร์กิวเมนต์name จะทำให้แสดงข้อความเฉพาะบุคคลได้
greet("佐川")  # ผลลัพธ์: สวัสดี, 佐川!

2. พื้นฐานของอาร์กิวเมนต์ใน Python

ต่อไปนี้เราจะเรียนรู้วิธีใช้อาร์กิวเมนต์ใน Python จากมุมมองของอาร์กิวเมนต์ตามลำดับ อาร์กิวเมนต์แบบคีย์เวิร์ด และอาร์กิวเมนต์ค่าเริ่มต้น

อาร์กิวเมนต์ตามลำดับและความสำคัญ

อาร์กิวเมนต์ตามลำดับจะถูกส่งให้กับพารามิเตอร์ของฟังก์ชันตามลำดับที่ระบุเมื่อมีการเรียกใช้ฟังก์ชัน
def add(a, b):
    return a + b

result = add(5, 3)  # ผลลัพธ์: 8

ใช้อาร์กิวเมนต์แบบคีย์เวิร์ด

การใช้อาร์กิวเมนต์แบบคีย์เวิร์ดทำให้สามารถส่งค่าให้ฟังก์ชันได้อย่างชัดเจนโดยไม่ต้องกังวลเกี่ยวกับลำดับของอาร์กิวเมนต์
def introduce(name, age):
    print(f"ฉันชื่อ{name} อายุ {age} ปี")

introduce(age=25, name="佐川")  # เอาต์พุต: ฉันชื่อ佐川 อายุ 25 ปี

การใช้อาร์กิวเมนต์ค่าเริ่มต้น

การกำหนดอาร์กิวเมนต์ค่าเริ่มต้นช่วยให้เมื่อมีการละเว้นอาร์กิวเมนต์ สามารถใช้ค่าดีฟอลต์แทนได้
def greet(name="ผู้เยี่ยมชม"):
    print(f"สวัสดี, {name}!")

greet()  # เอาต์พุต: สวัสดี, ผู้เยี่ยมชม!

ลำดับของอาร์กิวเมนต์

เมื่อใช้อาร์กิวเมนต์ตามลำดับร่วมกับอาร์กิวเมนต์แบบคีย์เวิร์ด ต้องระบุอาร์กิวเมนต์ตามลำดับก่อน แล้วจึงระบุอาร์กิวเมนต์แบบคีย์เวิร์ด หากสลับลำดับจะเกิดข้อผิดพลาด
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. อาร์กิวเมนต์แบบแปรผันของ Python(*args และ **kwargs)

*args วิธีใช้

*args ใช้เพื่อส่งอาร์กิวเมนต์แบบตำแหน่งได้ตามจำนวนที่ต้องการให้กับฟังก์ชัน สิ่งนี้ช่วยให้สร้างฟังก์ชันที่ยืดหยุ่นมากขึ้นได้。
def print_numbers(*args):
    for number in args:
        print(number)

print_numbers(1, 2, 3)  

**kwargs วิธีใช้

**kwargs ช่วยให้คุณสามารถรับคีย์เวิร์ดอาร์กิวเมนต์ใดๆ ในรูปแบบดิกชันนารีได้。
def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="佐川", age=30, job="นักเขียน")  

*args และ **kwargs การใช้งานร่วมกัน

*args และ **kwargs เมื่อใช้ร่วมกัน คุณสามารถสร้างฟังก์ชันที่ยืดหยุ่นซึ่งรับได้ทั้งอาร์กิวเมนต์แบบตำแหน่งและแบบคีย์เวิร์ด。
def process_data(*args, **kwargs):
    total = sum(args)
    print(f"ผลรวม: {total}")
    for key, value in kwargs.items():
        print(f"{key}: {value}")

process_data(1, 2, 3, name="佐川", age=30)

4. การประยุกต์ใช้อาร์กิวเมนต์และตัวอย่างการใช้งาน

ตัวอย่างการประยุกต์ใช้จริง: การจัดการพารามิเตอร์ของ API

ในการเรียก API จำเป็นต้องจัดการพารามิเตอร์แบบไดนามิก การใช้ *args และ **kwargs ช่วยให้จัดการพารามิเตอร์หลายตัวได้อย่างยืดหยุ่น
def api_call(endpoint, **params):
    print(f"เอนด์พอยต์ API: {endpoint}")
    for key, value in params.items():
        print(f"{key}: {value}")

api_call("/user", id=123, action="view")

การประยุกต์ใช้กับการประมวลผลข้อมูลขนาดใหญ่

แม้ในฟังก์ชันที่ประมวลผลข้อมูลจำนวนมาก ก็สามารถใช้ *args เพื่อจัดการอาร์กิวเมนต์ความยาวแปรผันได้อย่างมีประสิทธิภาพ
年収訴求

5. การจัดการข้อผิดพลาดและการตรวจสอบความถูกต้องของอาร์กิวเมนต์

การจัดการข้อผิดพลาดเกี่ยวกับจำนวนอาร์กิวเมนต์

หากจำนวนอาร์กิวเมนต์ที่ฟังก์ชันคาดหวังมีไม่ครบ การจัดการข้อผิดพลาดจะช่วยป้องกันไม่ให้โปรแกรมล่มได้
def add_numbers(*args):
    if len(args) < 2:
        raise ValueError("จำเป็นต้องมีอาร์กิวเมนต์อย่างน้อย 2 ตัว")
    return sum(args[:2])

การตรวจสอบชนิดข้อมูล

การตรวจสอบชนิดของอาร์กิวเมนต์ช่วยป้องกันข้อผิดพลาดที่ไม่คาดคิดได้
def multiply(a, b):
    if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
        raise TypeError("อาร์กิวเมนต์ต้องเป็นตัวเลข")
    return a * b

try-except ที่ใช้สำหรับการจัดการข้อผิดพลาด

ด้วยการใช้ไวยากรณ์ try-except คุณสามารถจับข้อผิดพลาดและจัดการได้อย่างเหมาะสม
def divide(a, b):
    try:
        result = a / b
    except ZeroDivisionError:
        return "ไม่สามารถหารด้วย 0 ได้"
    except TypeError:
        return "โปรดป้อนตัวเลข"
    return result

6. สรุป

ตลอดบทความนี้ เราได้ครอบคลุมตั้งแต่พื้นฐานไปจนถึงการประยุกต์ใช้อาร์กิวเมนต์ของ Python อย่างครบถ้วน โดยเฉพาะอย่างยิ่ง เราต้องการเน้นย้ำถึงวิธีการกำหนดฟังก์ชันอย่างยืดหยุ่นด้วย *args และ **kwargs ตลอดจนความสำคัญของการจัดการข้อผิดพลาดและการตรวจสอบความถูกต้อง。

ประเด็นสำคัญ:

  • พื้นฐานของอาร์กิวเมนต์แบบตำแหน่ง อาร์กิวเมนต์แบบคีย์เวิร์ด และอาร์กิวเมนต์ค่าเริ่มต้น
  • การกำหนดฟังก์ชันอย่างยืดหยุ่นด้วย *args และ **kwargs
  • ความสำคัญของการจัดการข้อผิดพลาดและการตรวจสอบความถูกต้องสำหรับอาร์กิวเมนต์
ด้วยความรู้เหล่านี้ คุณจะสามารถสร้างโค้ด Python ที่ยืดหยุ่นและแข็งแกร่งซึ่งมีประโยชน์ต่อการใช้งานจริงได้。
侍エンジニア塾