ฟังก์ชันชั้นหนึ่ง
ส่งและคืนค่าฟังก์ชัน
ฟังก์ชันชั้นหนึ่ง เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
ฟังก์ชันคืออ็อบเจกต์
ใน Python ฟังก์ชันเป็นอ็อบเจกต์ชั้นหนึ่ง คุณสามารถกำหนดฟังก์ชันให้กับตัวแปร เก็บไว้ในโครงสร้างข้อมูล ส่งเป็นอาร์กิวเมนต์ และส่งคืนจากฟังก์ชันอื่นได้ เช่นเดียวกับตัวเลขหรือสตริง
def greet():
return 'hi'
print(type(greet))
print(greet())การกำหนดฟังก์ชันให้ตัวแปร
ชื่อฟังก์ชันเป็นเพียงการอ้างอิงเท่านั้น คุณสามารถกำหนดชื่อนั้นให้กับชื่ออื่น แล้วเรียกใช้ฟังก์ชันผ่านชื่อใหม่ได้ โดยไม่ต้องใส่วงเล็บเมื่ออ้างถึงตัวฟังก์ชันเอง
def shout(text):
return text.upper()
yell = shout
print(yell('hello'))ฟังก์ชันในโครงสร้างข้อมูล
คุณสามารถเก็บฟังก์ชันไว้ในรายการหรือพจนานุกรม แล้วค้นหาและเรียกใช้ฟังก์ชันแบบไดนามิกได้
def add(a, b):
return a + b
def sub(a, b):
return a - b
ops = {'+': add, '-': sub}
print(ops['+'](10, 4))
print(ops['-'](10, 4))การส่งฟังก์ชันเป็นอาร์กิวเมนต์
ฟังก์ชันที่รับฟังก์ชันอื่นเป็นพารามิเตอร์เรียกว่า ฟังก์ชันลำดับสูง ส่วนฟังก์ชันที่ส่งเข้าไปคืออาร์กิวเมนต์
def apply(func, value):
return func(value)
print(apply(str.upper, 'cat'))
print(apply(len, 'cat'))map ใช้ฟังก์ชันชั้นหนึ่ง
ฟังก์ชันในตัวอย่าง map อาศัยการส่งฟังก์ชันไปมา ในที่นี้ฟังก์ชันจะถูกนำไปใช้กับทุกรายการ
def square(n):
return n * n
result = list(map(square, [1, 2, 3, 4]))
print(result)filter รับตัวตรวจสอบเงื่อนไข
filter จะเก็บรายการที่ฟังก์ชันที่ส่งเข้าไปคืนค่าเป็น True ฟังก์ชันนี้เป็นผู้ตัดสินใจว่าจะเก็บรายการใดไว้
def is_even(n):
return n % 2 == 0
print(list(filter(is_even, range(10))))การส่งคืนฟังก์ชัน
ฟังก์ชันสามารถส่งคืนฟังก์ชันอื่นได้ จากนั้นจึงเรียกใช้ฟังก์ชันที่ส่งคืนมาแยกต่างหากได้
def get_greeter():
def greeter(name):
return 'Hello ' + name
return greeter
f = get_greeter()
print(f('Ada'))ฟังก์ชันเป็นคีย์สำหรับการเรียงลำดับ
sorted รับฟังก์ชัน key ซึ่งจะแปลงแต่ละรายการเป็นค่าที่ใช้จัดลำดับ
words = ['banana', 'fig', 'cherry']
by_length = sorted(words, key=len)
print(by_length)แลมบ์ดาสำหรับฟังก์ชันแบบรวดเร็ว
lambda คือฟังก์ชันนิรนามขนาดเล็ก เหมาะอย่างยิ่งสำหรับใช้ครั้งเดียวเป็นอาร์กิวเมนต์
nums = [5, 1, 4, 2]
print(sorted(nums, key=lambda x: -x))ฟังก์ชันมีแอตทริบิวต์
เนื่องจากฟังก์ชันเป็นอ็อบเจกต์ ฟังก์ชันจึงมีแอตทริบิวต์อย่าง __name__ และมีข้อความเอกสารอยู่ใน __doc__
def hello():
'Says hello.'
return 'hi'
print(hello.__name__)
print(hello.__doc__)การสร้างตารางเลือกฟังก์ชัน
เมื่อนำแนวคิดเหล่านี้มารวมกัน คุณจะสร้างตารางเลือกฟังก์ชันตามชื่อได้อย่างเป็นระเบียบ โดยไม่ต้องมีชุดเงื่อนไข if/elif ยาว ๆ
def start():
return 'starting'
def stop():
return 'stopping'
actions = {'start': start, 'stop': stop}
command = 'start'
print(actions[command]())ตรวจสอบความเข้าใจ
การที่ฟังก์ชันเป็นฟังก์ชันชั้นหนึ่งใน Python หมายความว่าอย่างไร
สรุปทบทวน: ฟังก์ชันชั้นหนึ่ง
คุณได้เรียนรู้ว่าใน Python:
- ฟังก์ชันเป็นอ็อบเจกต์ที่คุณสามารถกำหนดให้ตัวแปร เก็บไว้ ส่งต่อ และส่งคืนได้
- ฟังก์ชันลำดับสูงรับหรือส่งคืนฟังก์ชันอื่น เช่น
map,filterและคีย์ของsorted lambdaใช้สร้างฟังก์ชันนิรนามแบบรวดเร็ว- แนวคิดนี้ช่วยให้สร้างตารางเลือกฟังก์ชันที่เป็นระเบียบแทนเงื่อนไขแบบยาวได้
ops = {'double': lambda x: x * 2}
print(ops['double'](21))คำถามที่พบบ่อย
บทเรียน “ฟังก์ชันชั้นหนึ่ง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ฟังก์ชันชั้นหนึ่ง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ฟังก์ชันชั้นหนึ่ง”
ส่งและคืนค่าฟังก์ชัน คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “ฟังก์ชันชั้นหนึ่ง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม
ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ