0Pricing
Python Academy · บทเรียน

ฟังก์ชันชั้นหนึ่ง

ส่งและคืนค่าฟังก์ชัน

ฟังก์ชันชั้นหนึ่ง เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ฟังก์ชันชั้นหนึ่ง
  2. คลอเชอร์และตัวแปรอิสระ
  3. nonlocal และสถานะที่เปลี่ยนแปลงได้
  4. ฟังก์ชันบางส่วน
← กลับไปที่ Python Academy