วิธีแก้ไข: syntaxerror: อาร์กิวเมนต์ตำแหน่งตามอาร์กิวเมนต์คำหลัก
ข้อผิดพลาดที่คุณอาจพบใน Python คือ:
SyntaxError : positional argument follows keyword argument
ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณใช้ อาร์กิวเมนต์ตำแหน่ง ในฟังก์ชันหลังจากใช้ อาร์กิวเมนต์คำหลัก
นี่คือความแตกต่างระหว่างทั้งสอง:
ข้อโต้แย้งเชิงตำแหน่ง คือข้อโต้แย้งที่ไม่มี “คำสำคัญ” อยู่ข้างหน้า
- ตัวอย่าง: my_function(2, 2)
อาร์กิวเมนต์ของคำหลัก คืออาร์กิวเมนต์ที่มี “คำหลัก” อยู่ข้างหน้า
- ตัวอย่าง: my_function(a=2, b=2)
หากคุณใช้อาร์กิวเมนต์ตำแหน่งหลังอาร์กิวเมนต์คำหลัก Python จะส่งข้อผิดพลาด
- ตัวอย่าง: my_function(a=2, 2)
ตัวอย่างต่อไปนี้แสดงให้เห็นว่าข้อผิดพลาดนี้สามารถเกิดขึ้นได้อย่างไรในทางปฏิบัติ
ตัวอย่าง: อาร์กิวเมนต์ตำแหน่งตามอาร์กิวเมนต์คำหลัก
สมมติว่าเรามีฟังก์ชันต่อไปนี้ใน Python ซึ่งจะคูณค่าสองค่าแล้วหารด้วยหนึ่งในสาม:
def do_stuff (a,b):
return a*b/c
ตัวอย่างต่อไปนี้แสดงวิธีการใช้ฟังก์ชันนี้ที่ถูกต้องและไม่ถูกต้อง:
วิธีที่ถูกต้อง #1: อาร์กิวเมนต์ตำแหน่งทั้งหมด
รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชันของเรากับอาร์กิวเมนต์ตำแหน่งทั้งหมด:
do_stuff ( 4,10,5 )
8.0
ไม่มีการสร้างข้อผิดพลาดเนื่องจาก Python รู้แน่ชัดว่าจะใช้ค่าใดสำหรับอาร์กิวเมนต์ฟังก์ชันแต่ละรายการ
วิธีที่ถูกต้อง #2: อาร์กิวเมนต์คำหลักทั้งหมด
รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชันของเรากับอาร์กิวเมนต์ของคำหลักทั้งหมด:
do_stuff(a= 4 , b= 10 , c= 5 )
8.0
ขอย้ำอีกครั้งว่าไม่มีข้อผิดพลาดเกิดขึ้นเนื่องจาก Python รู้แน่ชัดว่าจะใช้ค่าใดสำหรับอาร์กิวเมนต์ฟังก์ชันแต่ละรายการ
วิธีที่ถูกต้อง #3: อาร์กิวเมนต์ตำแหน่งก่อนอาร์กิวเมนต์คำหลัก
รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชันของเรากับอาร์กิวเมนต์ตำแหน่งที่ใช้ ก่อน อาร์กิวเมนต์คำหลัก:
do_stuff( 4 ,b= 10 ,c= 5 )
8.0
ไม่มีการสร้างข้อผิดพลาดเนื่องจาก Python รู้ว่าควรกำหนดค่า 4 ให้กับ อาร์กิวเมนต์
วิธีที่ไม่ถูกต้อง: อาร์กิวเมนต์ตำแหน่งหลังอาร์กิวเมนต์คำหลัก
รหัสต่อไปนี้แสดงวิธีที่เราสามารถพยายามใช้ฟังก์ชันกับอาร์กิวเมนต์ตำแหน่งที่ใช้ หลัง อาร์กิวเมนต์ของคำหลัก:
do_stuff(a= 4 , 10 , 5 )
SyntaxError : positional argument follows keyword argument
เกิดข้อผิดพลาดเนื่องจากเราใช้อาร์กิวเมนต์ตำแหน่งหลังอาร์กิวเมนต์คำหลัก
โดยเฉพาะอย่างยิ่ง Python ไม่ทราบว่าควรกำหนดค่า 10 และ 5 ให้กับอาร์กิวเมนต์ b หรือ c ดังนั้นจึงไม่สามารถดำเนินการฟังก์ชันได้
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่นๆ ใน Python:
วิธีแก้ไข KeyError ใน Pandas
วิธีแก้ไข: ValueError: ไม่สามารถแปลง float NaN เป็น int
วิธีแก้ไข: ValueError: ตัวถูกดำเนินการไม่สามารถออกอากาศด้วยรูปร่างได้