ใช้การสอน Python อย่างเป็นทางการเกี่ยวกับการกำหนดฟังก์ชั่นเป็นข้อมูลอ้างอิงของคุณ: ทุกฟังก์ชั่นเริ่มต้นด้วยdefตามด้วยชื่อวงเล็บสำหรับพารามิเตอร์ลำไส้ใหญ่ต่อท้ายและบล็อกเยื้องที่ทำงานเมื่อเรียกใช้ฟังก์ชัน
วิธีที่ 1 - สร้างและเรียกฟังก์ชันพื้นฐาน
ขั้นตอนที่ 1:ประกาศฟังก์ชั่นด้วยdefและลำไส้ใหญ่
def greet():
print("Hello from a function!")ขั้นตอนที่ 2:เรียกฟังก์ชั่นโดยใช้ชื่อด้วยวงเล็บ
greet()สิ่งนี้สร้างรูปแบบที่น้อยที่สุด: นิยามก่อนโทรมาหลังจาก Python ดำเนินการจากบนลงล่างดังนั้นต้องมีการกำหนดฟังก์ชั่นก่อนที่จะเรียก
วิธีที่ 2 - เพิ่มพารามิเตอร์และค่าเริ่มต้น
ขั้นตอนที่ 1:เพิ่มพารามิเตอร์ภายในวงเล็บเพื่อรับอินพุต
def full_name(first, last):
print(first + " " + last)ขั้นตอนที่ 2:เรียกฟังก์ชั่นที่มีอาร์กิวเมนต์ที่ตรงกัน
อ่านด้วย:
full_name("Ada", "Lovelace")ขั้นตอนที่ 3:กำหนดค่าเริ่มต้นด้วย=เพื่อสร้างอาร์กิวเมนต์เป็นทางเลือก
def hello(name="World"):
print(f"Hello, {name}!")
hello() # uses default
hello("Python") # overrides defaultค่าเริ่มต้นทำให้ผู้โทรง่ายขึ้นและทำให้ API ของคุณมีเสถียรภาพเมื่อเพิ่มพฤติกรรมเสริม ดูอาร์กิวเมนต์เริ่มต้นในบทช่วยสอนอย่างเป็นทางการ
วิธีที่ 3 - ค่าส่งคืน
ขั้นตอนที่ 1:ใช้returnเพื่อส่งค่ากลับไปยังผู้โทร
def area(w, h):
return w * hขั้นตอนที่ 2:จับค่าที่ส่งคืนในตัวแปร
a = area(3, 4)
print(a)ขั้นตอนที่ 3:คืนค่าหลายค่า (พวกเขาบรรจุไว้ใน tuple)
def point():
return 10, 20
x, y = point()รายละเอียดของคำสั่งคืนจะครอบคลุมในการอ้างอิงภาษา
วิธีที่ 4 - ยอมรับจำนวนอาร์กิวเมนต์ตัวแปร
ขั้นตอนที่ 1:รวบรวมข้อโต้แย้งตำแหน่งพิเศษด้วย*args-
def total(*args):
return sum(args)
print(total(1, 2, 3))ขั้นตอนที่ 2:รวบรวมอาร์กิวเมนต์คำหลักด้วย**kwargs-
def report(**kwargs):
for k, v in kwargs.items():
print(k, "=", v)
report(name="Keyboard", price=19.99)อินเทอร์เฟซนี้ช่วยให้ฟังก์ชั่นของคุณยืดหยุ่นกับอินพุตที่หลากหลาย ดู“ รายการอาร์กิวเมนต์โดยพลการ” ในบทช่วยสอนอย่างเป็นทางการ
วิธีที่ 5 - ควบคุมวิธีที่ผู้โทรผ่านอาร์กิวเมนต์
ขั้นตอนที่ 1:สร้างพารามิเตอร์บางอย่างโดยเฉพาะโดยการเพิ่ม/หลังจากพวกเขา
def echo(x, /):
print(x)
echo(3) # OK
# echo(x=3) # TypeErrorขั้นตอนที่ 2:ทำพารามิเตอร์คำหลักอย่างเดียวโดยการเพิ่ม*ก่อนหน้าพวกเขา
def scale(value, *, factor=2):
return value * factor
scale(10, factor=3) # OK
# scale(10, 3) # TypeErrorใช้สิ่งเหล่านี้เพื่อออกแบบ API ที่ชัดเจนและปลอดภัย ดู“ พารามิเตอร์พิเศษ” ในบทช่วยสอนอย่างเป็นทางการ
วิธีที่ 6 - จัดทำเอกสารและจัดระเบียบฟังก์ชั่นของคุณ
ขั้นตอนที่ 1:เพิ่มเอกสารในบรรทัดแรกของร่างกายเพื่ออธิบายวัตถุประสงค์พารามิเตอร์และค่าส่งคืน
def hypotenuse(a, b):
"""Compute the length of the hypotenuse from legs a and b."""
return (a**2 + b**2) ** 0.5ขั้นตอนที่ 2:ป้องกันการโทรสคริปต์เท่านั้นด้วยif __name__ == "__main__"ดังนั้นการนำเข้าไม่ได้ดำเนินการ
def main():
print(hypotenuse(3, 4))
if __name__ == "__main__":
main()อนุสัญญาเอกสารถูกกำหนดไว้ใน PEP 257 และ__main__รูปแบบถูกครอบคลุมในเอกสารเกี่ยวกับการดำเนินการโมดูลเป็นสคริปต์
วิธีที่ 7 - ใช้แลมบ์ดาสำหรับหนึ่ง - ลินเนอร์ง่ายๆ
ขั้นตอนที่ 1:สร้างฟังก์ชั่นที่ไม่ระบุชื่อเล็ก ๆ ด้วยlambdaสำหรับกรณีการแสดงออกอย่างรวดเร็ว
double = lambda x: x * 2
print(double(5))ขั้นตอนที่ 2:ชอบมากกว่าdefเมื่อคุณต้องการคำสั่งเอกสารหรือนำมาใช้ซ้ำ
def double_def(x):
return x * 2Lambda ไวยากรณ์ถูกระบุในการอ้างอิงภาษา
วิธีที่ 8 - คำจำกัดความของสถานที่ที่พวกเขาจะถูกดำเนินการก่อนการใช้งาน
ขั้นตอนที่ 1:กำหนดฟังก์ชั่นก่อนการโทรครั้งแรกในไฟล์เพื่อหลีกเลี่ยงข้อผิดพลาดชื่อ
# Correct: defined before use
def hello():
print("Hello")
hello()ขั้นตอนที่ 2:หลีกเลี่ยงการเรียกใช้ฟังก์ชันก่อนที่คำจำกัดความจะถูกดำเนินการ Python แก้ไขชื่อที่รันไทม์ด้านบนลงล่าง
# This will raise NameError at runtime:
# hello()
# def hello():
# print("Hello")ขั้นตอนที่ 3:เลือกฟังก์ชั่นผู้ช่วยภายในฟังก์ชั่นอื่นเพื่อรักษาขอบเขตในท้องถิ่น
def outer():
def inner():
return "scoped helper"
return inner()เคล็ดลับด่วน
- “ พารามิเตอร์” เป็นชื่อในส่วนหัวฟังก์ชัน “ อาร์กิวเมนต์” เป็นค่าที่คุณผ่านการโทร
- ใช้
passในฐานะที่เป็นตัวยึดตำแหน่งเมื่อมีการทำงานของร่างกาย - ให้ฟังก์ชั่นเล็กและมุ่งเน้น; สิ่งนี้ทำให้การทดสอบง่ายขึ้นและนำกลับมาใช้ใหม่
กับdefพารามิเตอร์ที่รอบคอบและการส่งคืนที่ชัดเจนคุณจะเขียนฟังก์ชั่นที่ง่ายต่อการโทรทดสอบและขยาย เริ่มง่ายแล้วเพิ่มค่าเริ่มต้น*args-**kwargsและกฎการโต้แย้งตามที่ API ของคุณต้องการเพิ่มขึ้น













