ฟังก์ชั่นหลาม
ฟังก์ชันคือบล็อกของโค้ดที่ทำงานเมื่อมีการเรียกเท่านั้น
คุณสามารถส่งข้อมูลที่เรียกว่าพารามิเตอร์ไปยังฟังก์ชันได้
ฟังก์ชันสามารถส่งคืนข้อมูลได้
การสร้างฟังก์ชัน
ใน Python ฟังก์ชั่นถูกกำหนดโดยใช้ คำสำคัญ def :
ตัวอย่าง
def my_function():
print("Hello from a function")
การเรียกใช้ฟังก์ชัน
หากต้องการเรียกใช้ฟังก์ชัน ให้ใช้ชื่อฟังก์ชันตามด้วยวงเล็บ:
ตัวอย่าง
def my_function():
print("Hello from a function")
my_function()
ข้อโต้แย้ง
ข้อมูลสามารถส่งผ่านไปยังฟังก์ชันเป็นอาร์กิวเมนต์ได้
อาร์กิวเมนต์ถูกระบุหลังชื่อฟังก์ชัน ภายในวงเล็บ คุณสามารถเพิ่มอาร์กิวเมนต์ได้มากเท่าที่ต้องการ เพียงแค่คั่นด้วยเครื่องหมายจุลภาค
ตัวอย่างต่อไปนี้มีฟังก์ชันที่มีหนึ่งอาร์กิวเมนต์ (fname) เมื่อเรียกใช้ฟังก์ชัน เราจะส่งต่อชื่อ ซึ่งใช้ในฟังก์ชันเพื่อพิมพ์ชื่อเต็ม:
ตัวอย่าง
def my_function(fname):
print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
อาร์กิวเมนต์มักจะย่อให้เหลืออาร์กิวเมนต์ในเอกสารประกอบของ Python
พารามิเตอร์หรืออาร์กิวเมนต์?
เงื่อนไขพารามิเตอร์และอาร์กิวเมนต์สามารถใช้สำหรับสิ่งเดียวกัน: ข้อมูลที่ส่งผ่านไปยังฟังก์ชัน
จากมุมมองของฟังก์ชัน:
พารามิเตอร์คือตัวแปรที่อยู่ในวงเล็บในนิยามฟังก์ชัน
อาร์กิวเมนต์คือค่าที่ส่งไปยังฟังก์ชันเมื่อมีการเรียก
จำนวนอาร์กิวเมนต์
โดยค่าเริ่มต้น ต้องเรียกใช้ฟังก์ชันด้วยจำนวนอาร์กิวเมนต์ที่ถูกต้อง หมายความว่าถ้าฟังก์ชันของคุณคาดหวัง 2 อาร์กิวเมนต์ คุณจะต้องเรียกใช้ฟังก์ชันที่มี 2 อาร์กิวเมนต์ ไม่มากและไม่น้อย
ตัวอย่าง
ฟังก์ชันนี้คาดหวัง 2 อาร์กิวเมนต์ และรับ 2 อาร์กิวเมนต์:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil", "Refsnes")
ตัวอย่าง
ฟังก์ชันนี้ต้องการ 2 อาร์กิวเมนต์ แต่ได้เพียง 1:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil")
อาร์กิวเมนต์ตามอำเภอใจ *args
หากคุณไม่ทราบว่าอาร์กิวเมนต์จำนวนเท่าใดที่จะถูกส่งไปยังฟังก์ชันของคุณ ให้เพิ่ม a นำ*
หน้าชื่อพารามิเตอร์ในนิยามฟังก์ชัน
วิธีนี้ฟังก์ชันจะได้รับ อาร์กิวเมนต์ tupleและสามารถเข้าถึงรายการได้ดังนี้:
ตัวอย่าง
หากไม่ทราบจำนวนอาร์กิวเมนต์ ให้เพิ่ม a *
หน้าชื่อพารามิเตอร์:
def my_function(*kids):
print("The youngest child
is " + kids[2])
my_function("Emil", "Tobias", "Linus")
อาร์กิวเมนต์ตามอำเภอใจมักถูกย่อให้เหลือ*argsในเอกสารประกอบของ Python
อาร์กิวเมนต์คำหลัก
คุณยังสามารถส่งอาร์กิวเมนต์ด้วยคีย์ = ไวยากรณ์ของค่า
วิธีนี้ลำดับของข้อโต้แย้งไม่สำคัญ
ตัวอย่าง
def my_function(child3, child2, child1):
print("The youngest child
is " + child3)
my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
อาร์กิวเมนต์คำหลักแบบวลีมักย่อให้สั้นลงเป็นkwargsในเอกสารประกอบของ Python
อาร์กิวเมนต์คำหลักโดยพลการ **kwargs
หากคุณไม่ทราบจำนวนอาร์กิวเมนต์ของคีย์เวิร์ดที่จะส่งผ่านไปยังฟังก์ชันของคุณ ให้เพิ่มเครื่องหมายดอกจันสองอัน: **
ก่อนชื่อพารามิเตอร์ในนิยามฟังก์ชัน
วิธีนี้ฟังก์ชันจะได้รับพจนานุกรมของอาร์กิวเมนต์ และสามารถเข้าถึงรายการได้ดังนี้:
ตัวอย่าง
หากไม่ทราบจำนวนอาร์กิวเมนต์ของคีย์เวิร์ด ให้เพิ่มคู่
**
ก่อนชื่อพารามิเตอร์:
def my_function(**kid):
print("His last name is " + kid["lname"])
my_function(fname = "Tobias", lname = "Refsnes")
อาร์กิวเมนต์ Kword โดยพลการมักจะย่อให้เหลือ**kwargsในเอกสารประกอบของ Python
ค่าพารามิเตอร์เริ่มต้น
ตัวอย่างต่อไปนี้แสดงวิธีการใช้ค่าพารามิเตอร์เริ่มต้น
หากเราเรียกใช้ฟังก์ชันโดยไม่มีอาร์กิวเมนต์ ฟังก์ชันจะใช้ค่าเริ่มต้น:
ตัวอย่าง
def my_function(country = "Norway"):
print("I am from " +
country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
ผ่านรายการเป็นข้อโต้แย้ง
คุณสามารถส่งอาร์กิวเมนต์ประเภทข้อมูลใดๆ ไปยังฟังก์ชัน (สตริง ตัวเลข รายการ พจนานุกรม เป็นต้น) และจะถือว่าเป็นประเภทข้อมูลเดียวกันภายในฟังก์ชัน
เช่น ถ้าคุณส่ง List เป็นอาร์กิวเมนต์ มันจะยังคงเป็น List เมื่อถึงฟังก์ชัน:
ตัวอย่าง
def my_function(food):
for x in food:
print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)
ส่งกลับค่า
หากต้องการให้ฟังก์ชันคืนค่า ให้ใช้return
คำสั่ง:
ตัวอย่าง
def my_function(x):
return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))
คำสั่งผ่าน
function
คำจำกัดความต้องไม่ว่างเปล่า แต่ถ้าคุณมีเหตุผลบางอย่างที่มีfunction
คำจำกัดความที่ไม่มีเนื้อหา ให้ใส่pass
คำชี้แจงเพื่อหลีกเลี่ยงข้อผิดพลาด
ตัวอย่าง
def myfunction():
pass
การเรียกซ้ำ
Python ยังยอมรับการเรียกซ้ำของฟังก์ชัน ซึ่งหมายความว่าฟังก์ชันที่กำหนดสามารถเรียกตัวเองได้
การเรียกซ้ำเป็นแนวคิดทางคณิตศาสตร์และการเขียนโปรแกรมทั่วไป หมายความว่าฟังก์ชันเรียกตัวเอง สิ่งนี้มีประโยชน์ในความหมายที่คุณสามารถวนซ้ำข้อมูลเพื่อให้ได้ผลลัพธ์
นักพัฒนาซอฟต์แวร์ควรระมัดระวังอย่างยิ่งกับการเรียกซ้ำ เนื่องจากการเขียนฟังก์ชันที่ไม่มีวันสิ้นสุดหรือฟังก์ชันที่ใช้หน่วยความจำหรือโปรเซสเซอร์มากเกินไปอาจทำได้ง่ายมาก อย่างไรก็ตาม เมื่อเขียนอย่างถูกต้อง การเรียกซ้ำอาจเป็นแนวทางการเขียนโปรแกรมที่มีประสิทธิภาพและสง่างามทางคณิตศาสตร์
ในตัวอย่างนี้tri_recursion()เป็นฟังก์ชันที่เรากำหนดให้เรียกตัวเอง ("recurse") เราใช้ ตัวแปร kเป็นข้อมูล ซึ่งจะลดลง ( -1 ) ทุกครั้งที่เราเรียกซ้ำ การเรียกซ้ำจะสิ้นสุดลงเมื่อเงื่อนไขไม่มากกว่า 0 (เช่น เมื่อเป็น 0)
สำหรับนักพัฒนาใหม่ อาจต้องใช้เวลาสักพักกว่าจะรู้ว่าสิ่งนี้ทำงานอย่างไร วิธีที่ดีที่สุดในการค้นหาคือการทดสอบและแก้ไข
ตัวอย่าง
ตัวอย่างการเรียกซ้ำ
def tri_recursion(k):
if(k > 0):
result = k + tri_recursion(k - 1)
print(result)
else:
result = 0
return result
print("\n\nRecursion Example Results")
tri_recursion(6)