วิธีการเรียกใช้ฟังก์ชันใน Python (ตัวอย่าง)
⚡ สรุปอย่างชาญฉลาด
ฟังก์ชั่นใน Python ฟังก์ชันคือบล็อกโค้ดที่นำกลับมาใช้ซ้ำได้ ซึ่งจะทำงานเมื่อถูกเรียก โดยกำหนดด้วยคำสั่ง `def` ฟังก์ชันเหล่านี้รับอาร์กิวเมนต์ ส่งคืนค่า และใช้การเว้นวรรคที่สม่ำเสมอเพื่อจัดกลุ่มคำสั่งต่างๆ ที่อยู่ในแต่ละฟังก์ชัน
ฟังก์ชั่นอยู่ในอะไร Python?
A ฟังก์ชั่นใน Python คือส่วนของโค้ดที่ทำงานเมื่อมีการอ้างอิงถึง มันถูกใช้เพื่อนำโค้ดไปใช้ในหลายๆ ที่ในโปรแกรม เรียกอีกอย่างว่า เมธอด หรือ โพรซีเดอร์ Python มีฟังก์ชันในตัวมากมาย เช่น print(), input(), compile() และ exec() แต่ก็ยังเปิดโอกาสให้คุณสร้างฟังก์ชันของคุณเองได้ด้วย
วิธีกำหนดและเรียกใช้ฟังก์ชัน Python
ฟังก์ชั่นใน Python ถูกกำหนดโดยคำสั่ง “def” ตามด้วยชื่อฟังก์ชันและวงเล็บ ( () )
ตัวอย่าง:
เรามาสร้างฟังก์ชันโดยใช้คำสั่ง “def func1():” แล้วเรียกใช้ฟังก์ชันนั้น ผลลัพธ์ของฟังก์ชันจะเป็น “I am learning” Python ฟังก์ชัน”.
การเรียกฟังก์ชัน func1() จะเรียกใช้ def func1(): ของเรา และพิมพ์คำสั่ง “I am learning” Python ฟังก์ชัน None”
มีชุดกฎเกณฑ์อยู่ Python การเขียนโปรแกรม เพื่อกำหนดฟังก์ชัน
- ควรใส่ข้อโต้แย้งหรือพารามิเตอร์อินพุตใดๆ ไว้ภายในวงเล็บเหล่านี้
- คำสั่งแรกของฟังก์ชันอาจเป็นคำสั่งเสริมก็ได้ เช่น docstring หรือข้อความอธิบายฟังก์ชัน
- โค้ดภายในทุกฟังก์ชันจะเริ่มต้นด้วยเครื่องหมายโคลอน (:) และควรมีการเว้นวรรค (เว้นวรรค)
- คำสั่ง `return` (นิพจน์) ใช้สำหรับออกจากฟังก์ชัน โดยอาจส่งค่ากลับไปยังผู้เรียกก็ได้ คำสั่ง `return` ที่ไม่มีอาร์กิวเมนต์จะเหมือนกับ `return None`
ความสำคัญของการเยื้อง (ช่องว่าง) ใน Python
ก่อนที่เราจะทำความรู้จักกับ... Python สิ่งสำคัญคือเราต้องเข้าใจกฎการเยื้องที่จะประกาศ Python ฟังก์ชัน และกฎเหล่านี้สามารถนำไปใช้กับองค์ประกอบอื่นๆ ได้ด้วย Python รวมถึงการประกาศเงื่อนไข ลูป หรือตัวแปรต่างๆ ด้วย
Python ใช้รูปแบบการเว้นวรรคเฉพาะเพื่อกำหนดโค้ด เนื่องจาก Python ฟังก์ชันไม่มีจุดเริ่มต้นหรือจุดสิ้นสุดที่ชัดเจนเหมือนวงเล็บปีกกาเพื่อระบุจุดเริ่มต้นและจุดสิ้นสุดของฟังก์ชัน ฟังก์ชันต้องอาศัยการเว้นวรรคแทน ในที่นี้เราจะยกตัวอย่างง่ายๆ ด้วยคำสั่ง "print" เมื่อเราเขียนฟังก์ชัน "print" ไว้ด้านล่างบรรทัด def func1(): มันจะแสดงข้อผิดพลาด "indentation error: expected an indented block"
ทีนี้ เมื่อคุณเพิ่มการเยื้อง (เว้นวรรค) หน้าฟังก์ชัน "print" แล้ว การแสดงผลก็จะออกมาตามที่คาดไว้
การเว้นวรรคอย่างน้อยหนึ่งช่องก็เพียงพอที่จะทำให้โค้ดของคุณทำงานได้อย่างถูกต้อง แต่เพื่อเป็นแนวทางปฏิบัติที่ดีที่สุด ขอแนะนำให้เว้นวรรคประมาณ 3-4 ช่องเพื่อเรียกใช้ฟังก์ชันของคุณ
นอกจากนี้ จำเป็นอย่างยิ่งที่ขณะประกาศการเยื้อง คุณต้องรักษาการเยื้องนั้นไว้สำหรับส่วนที่เหลือของโค้ดด้วย ตัวอย่างเช่น ในภาพหน้าจอด้านล่าง เมื่อเราเรียกคำสั่งอื่น “ยังคงอยู่ใน func1” และไม่ได้ประกาศไว้ด้านล่างคำสั่ง print แรก มันจะแสดงข้อผิดพลาดเกี่ยวกับการเยื้องว่า “unindent ไม่ตรงกับระดับการเยื้องอื่นใด”
ทีนี้ เมื่อเราใช้การเยื้องแบบเดียวกันสำหรับทั้งสองคำสั่งและจัดให้อยู่ในบรรทัดเดียวกัน ก็จะได้ผลลัพธ์ที่คาดหวังไว้
ฟังก์ชั่นคืนค่าอย่างไร?
คำสั่ง return ใน Python ระบุค่าที่จะส่งคืนให้กับผู้เรียกใช้ฟังก์ชัน ลองมาทำความเข้าใจเรื่องนี้ด้วยตัวอย่างต่อไปนี้
ขั้นตอนที่ 1) ฟังก์ชั่นไม่ส่งคืนสิ่งใด ๆ
ในที่นี้เราจะเห็นว่าฟังก์ชันบางตัวไม่ "ส่งค่าคืน" ตัวอย่างเช่น เราต้องการหาค่ากำลังสองของ 4 และเมื่อรันโค้ดแล้วควรจะได้คำตอบ "16" แต่เมื่อใช้โค้ด "print x*x" โดยตรงจะได้คำตอบนั้น อย่างไรก็ตาม เมื่อเรียกใช้ฟังก์ชัน "print square" จะได้ผลลัพธ์เป็น "None" เนื่องจากเมื่อเรียกใช้ฟังก์ชันแล้ว จะไม่มีการเรียกซ้ำเกิดขึ้น และผลลัพธ์จึงหายไปจากฟังก์ชัน Python ส่งคืนค่า “None” หากฟังก์ชันหยุดทำงานและสิ้นสุดการทำงาน
ขั้นตอนที่ 2) แทนที่คำสั่งพิมพ์ด้วยคำสั่งกำหนดค่า
เพื่อให้เข้าใจได้ชัดเจนยิ่งขึ้น เราจะแทนที่คำสั่งพิมพ์ด้วยคำสั่งกำหนดค่า ลองตรวจสอบผลลัพธ์กันดู
เมื่อคุณรันคำสั่ง “print square (4)” มันจะส่งค่าของอ็อบเจ็กต์กลับมา เนื่องจากเราไม่มีฟังก์ชันเฉพาะที่จะรันที่นี่ มันจึงส่งค่า “None” กลับมา
ขั้นตอนที่ 3) ใช้ฟังก์ชัน 'return' และเรียกใช้โค้ด
ต่อไปนี้เราจะมาดูวิธีการดึงผลลัพธ์โดยใช้คำสั่ง “return” เมื่อคุณใช้ฟังก์ชัน “return” และรันโค้ด ผลลัพธ์ที่ได้คือ “16”
ขั้นตอนที่ 4) เรียกใช้คำสั่ง 'print square'
ฟังก์ชั่นใน Python ต่างก็เป็นวัตถุ และวัตถุก็มีคุณค่าอยู่บ้าง เราจะมาดูวิธีการที่นี่ Python คำสั่งนี้ใช้กับวัตถุ เมื่อคุณรันคำสั่ง “print square” มันจะส่งค่าของวัตถุกลับมา เนื่องจากเราไม่ได้ส่งอาร์กิวเมนต์ใดๆ เราจึงไม่มีฟังก์ชันเฉพาะที่จะเรียกใช้ ดังนั้นมันจึงส่งค่าเริ่มต้นกลับมา (0x021B2D30) ซึ่งเป็นตำแหน่งของวัตถุ ในทางปฏิบัติ Python โปรแกรมนี้ คุณอาจไม่จำเป็นต้องทำขั้นตอนนี้เลยก็ได้
อาร์กิวเมนต์ในฟังก์ชัน
อาร์กิวเมนต์คือค่าที่ถูกส่งไปยังฟังก์ชันเมื่อมีการเรียกใช้ฟังก์ชันนั้น
กล่าวอีกนัยหนึ่งคือ ในฝั่งผู้เรียกใช้ มันคืออาร์กิวเมนต์ และในฝั่งฟังก์ชัน มันคือพารามิเตอร์
มาดูกันว่าจะทำอย่างไร Python การโต้แย้งได้ผล
ขั้นตอน 1) อาร์กิวเมนต์จะถูกประกาศไว้ในนิยามของฟังก์ชัน ในขณะเรียกใช้ฟังก์ชัน คุณสามารถส่งค่าสำหรับอาร์กิวเมนต์เหล่านั้นได้ดังที่แสดงด้านล่าง
ขั้นตอน 2) ในการกำหนดค่าเริ่มต้นให้กับอาร์กิวเมนต์ ให้กำหนดค่าให้กับอาร์กิวเมนต์นั้นในนิยามของฟังก์ชัน
ตัวอย่าง: x ไม่มีค่าเริ่มต้น ค่าเริ่มต้นของ y คือ 0 เมื่อเราป้อนอาร์กิวเมนต์เพียงตัวเดียวขณะเรียกใช้ฟังก์ชันการคูณ Python กำหนดค่าที่ให้มาให้กับ x ในขณะที่ยังคงรักษาไว้ping ค่าของ y เท่ากับ 0 ดังนั้น ผลคูณของ x กับ y จึงเท่ากับ 0
ขั้นตอน 3) คราวนี้เราจะเปลี่ยนค่า y เป็น 2 แทนค่าเริ่มต้น y=0 และจะได้ผลลัพธ์เป็น (4×2)=8
ขั้นตอน 4) คุณยังสามารถเปลี่ยนลำดับการส่งผ่านอาร์กิวเมนต์ได้อีกด้วย Pythonในที่นี้เราได้สลับลำดับของค่า x และ y เป็น x=4 และ y=2
ขั้นตอน 5) สามารถส่งอาร์กิวเมนต์หลายตัวในรูปแบบอาร์เรย์ได้เช่นกัน ในตัวอย่างนี้ เราเรียกใช้อาร์กิวเมนต์หลายตัว (1, 2, 3, 4, 5) โดยการเรียกใช้ฟังก์ชัน (*args)
ตัวอย่าง: เรากำหนดอาร์กิวเมนต์หลายตัวเป็นตัวเลข (1,2,3,4,5) เมื่อเราเรียกใช้ฟังก์ชัน (*args) มันจะพิมพ์ผลลัพธ์ออกมาเป็น (1,2,3,4,5)
ทิปส์:
- In Python 2.7 ไม่รองรับการโอเวอร์โหลดฟังก์ชัน การโอเวอร์โหลดฟังก์ชันคือความสามารถในการสร้างเมธอดหลายเมธอดที่มีชื่อเดียวกันแต่มีการใช้งานที่แตกต่างกัน การโอเวอร์โหลดฟังก์ชันได้รับการสนับสนุนอย่างเต็มที่ในเวอร์ชัน 2.7 Python 3.
- มีความสับสนค่อนข้างมากระหว่างเมธอดและฟังก์ชัน เมธอดใน Python เกี่ยวข้องกับอินสแตนซ์ของอ็อบเจ็กต์ ในขณะที่ฟังก์ชันไม่เกี่ยวข้อง เมื่อ Python เรียกเมธอด ซึ่งจะผูกพารามิเตอร์แรกของการเรียกนั้นกับการอ้างอิงอ็อบเจ็กต์ที่เหมาะสม กล่าวง่ายๆ ก็คือ ฟังก์ชันแบบสแตนด์อโลนใน Python คือ "ฟังก์ชัน" ในขณะที่ฟังก์ชันที่เป็นคุณลักษณะของคลาสหรืออินสแตนซ์คือ "วิธีการ"
นี่คือสิ่งที่สมบูรณ์ Python 3 รหัส
#define a function
def func1():
print ("I am learning Python function")
print ("still in func1")
func1()
def square(x):
return x*x
print(square(4))
def multiply(x,y=0):
print("value of x=",x)
print("value of y=",y)
return x*y
print(multiply(y=2,x=4))
นี่คือสิ่งที่สมบูรณ์ Python 2 รหัส
#define a function
def func1():
print " I am learning Python function"
print " still in func1"
func1()
def square(x):
return x*x
print square(4)
def multiply(x,y=0):
print"value of x=",x
print"value of y=",y
return x*y
print multiply(y=2,x=4)















