Python Academy · บทเรียน

args และ kwargs

รับอาร์กิวเมนต์ตามตำแหน่งและคีย์เวิร์ดที่มีจำนวนไม่แน่นอน

บทเรียน 3 จาก 414 ขั้นตอน

args และ kwargs เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

บทนำ

*args และ **kwargs ช่วยให้ฟังก์ชันรองรับอาร์กิวเมนต์ตามตำแหน่งและตามชื่อได้หลายจำนวน

*args คืออะไร

def f(*args) จะรวบรวมอาร์กิวเมนต์ตามตำแหน่งส่วนเกินทั้งหมดไว้ในทูเพิลชื่อ args
def f(*args):
    print(args)
f(1, 2, 3)  # (1, 2, 3)

การวนซ้ำผ่าน *args

for x in args: ... ใช้งานได้เพราะ args เป็นทูเพิล นอกจากนี้ยังใช้ sum(args), max(args) และอื่น ๆ ได้
def total(*args):
    return sum(args)
print(total(1, 2, 3, 4, 5))

**kwargs คืออะไร

def f(**kwargs) จะรวบรวมอาร์กิวเมนต์ตามชื่อส่วนเกินทั้งหมดไว้ใน dict ชื่อ kwargs
def f(**kwargs):
    print(kwargs)
f(name='Alice', age=30)

การใช้ **kwargs

เข้าถึง kwargs ได้เหมือน dict ทั่วไป: for key, val in kwargs.items():
def display(**kwargs):
    for k, v in kwargs.items():
        print(f'{k}: {v}')
display(x=1, y=2)

การรวมพารามิเตอร์ปกติ, *args และ **kwargs

def f(a, b, *args, **kwargs): พารามิเตอร์ปกติมาก่อน ตามด้วย *args จากนั้นเป็นพารามิเตอร์ที่ต้องระบุด้วยชื่อเท่านั้น และสุดท้ายคือ **kwargs
def f(a, *args, **kwargs):
    print(a, args, kwargs)
f(1, 2, 3, x=4)

การส่งต่ออาร์กิวเมนต์

def wrapper(*args, **kwargs): return real_func(*args, **kwargs) จะส่งต่ออาร์กิวเมนต์ทั้งหมดไปยังฟังก์ชันที่ถูกห่อไว้อย่างครบถ้วน
def real(a, b, c=0): return a+b+c
def wrapper(*args, **kwargs): return real(*args, **kwargs)
print(wrapper(1, 2, c=3))

การคลายแพ็กด้วย * ในการเรียกใช้

*iterable จะคลายแพ็กสิ่งที่วนซ้ำได้ทุกชนิดให้เป็นอาร์กิวเมนต์ตามตำแหน่ง **mapping จะคลายแพ็ก dict ให้เป็นอาร์กิวเมนต์ตามชื่อ
def add(a, b, c): return a+b+c
args = [1, 2, 3]
print(add(*args))

การคลายแพ็กสิ่งที่วนซ้ำได้แบบขยาย

first, *rest = [1,2,3,4] ให้ค่า first=1 และ rest=[2,3,4] ส่วน *head, last = lst จะให้สมาชิกสุดท้ายอยู่ใน last
first, *rest = [1, 2, 3, 4]
print(first, rest)
*head, last = [1, 2, 3]
print(head, last)

คำใบ้ชนิดสำหรับ *args/**kwargs

def f(*args: int, **kwargs: str) ใช้ระบุชนิดของสมาชิกแต่ละรายการ ไม่ใช่ชนิดของโครงสร้างที่เก็บสมาชิก
def f(*args: int, **kwargs: str) -> None:
    print(args, kwargs)
f(1, 2, name='Alice')

รูปแบบที่ใช้บ่อย

print() เองก็ใช้ *args เช่นกัน — print(*my_list) จะพิมพ์สมาชิกแต่ละรายการโดยคั่นด้วยช่องว่าง เป็นรูปแบบที่เป็นธรรมชาติใน Python มาก
lst = [1, 2, 3]
print(*lst)  # 1 2 3

ตรวจสอบอย่างรวดเร็ว

*args จะสร้างชนิดข้อมูลใดภายในฟังก์ชัน

สรุปทบทวน

*args เป็นทูเพิลของอาร์กิวเมนต์ตามตำแหน่งส่วนเกิน **kwargs เป็น dict ของอาร์กิวเมนต์ตามชื่อส่วนเกิน ใช้ทั้งสองอย่างเพื่อสร้างส่วนเชื่อมต่อที่ยืดหยุ่นและส่งต่ออาร์กิวเมนต์

เรียนรู้ต่อไป

ทำได้ดีมากครับ โปรดไปยังบทเรียนถัดไปเพื่อพัฒนาทักษะของคุณต่อไป
เริ่มต้นได้ฟรี

เรียนรู้ Python ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
76
บทเรียน
320

คำถามที่พบบ่อย

บทเรียน “args และ kwargs” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “args และ kwargs” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “args และ kwargs”

รับอาร์กิวเมนต์ตามตำแหน่งและคีย์เวิร์ดที่มีจำนวนไม่แน่นอน คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “args และ kwargs” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม

ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การกำหนดและเรียกใช้ฟังก์ชัน
  2. อาร์กิวเมนต์ค่าเริ่มต้นและคีย์เวิร์ด
  3. args และ kwargs
  4. ค่าที่ส่งกลับและขอบเขตตัวแปร
← กลับไปที่ Python Academy