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

ค่าที่ส่งกลับและขอบเขตตัวแปร

ทำความเข้าใจคำสั่ง return และขอบเขตของตัวแปร (เฉพาะที่และส่วนกลาง)

ค่าที่ส่งกลับและขอบเขตตัวแปร เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

บทนำ

การทำความเข้าใจคำสั่ง return และขอบเขตของตัวแปรเป็นพื้นฐานสำคัญในการเขียนฟังก์ชัน Python ที่คาดเดาผลลัพธ์ได้และปราศจากข้อผิดพลาด

คำสั่ง return

return expr จะออกจากฟังก์ชันและส่ง expr กลับไปยังผู้เรียก return ที่ไม่มีค่าจะส่ง None กลับมา
def double(x):
    return x * 2
print(double(5))

การคืนค่าก่อนกำหนด

สามารถมีคำสั่ง return หลายคำสั่งได้ — คำสั่งแรกที่ทำงานจะออกจากฟังก์ชันทันที เหมาะสำหรับเงื่อนไขตรวจสอบเบื้องต้น
def abs_val(x):
    if x < 0:
        return -x
    return x
print(abs_val(-7))

ขอบเขตเฉพาะที่

ตัวแปรที่สร้างภายในฟังก์ชันเป็นตัวแปรเฉพาะที่ จึงไม่มีอยู่ภายนอกฟังก์ชัน
def f():
    x = 10
    print(x)
f()
# print(x)  # NameError

ขอบเขตส่วนกลาง

ตัวแปรที่กำหนดในระดับโมดูลเป็นตัวแปรส่วนกลาง ฟังก์ชันสามารถ READ ตัวแปรส่วนกลางได้โดยไม่ต้องประกาศ
name = 'Alice'
def greet():
    print('Hello', name)  # reads global
greet()

คีย์เวิร์ด global

global x ภายในฟังก์ชันช่วยให้คุณ WRITE ลงในตัวแปรส่วนกลางได้ ควรใช้เท่าที่จำเป็น เพราะทำให้วิเคราะห์การทำงานของโค้ดได้ยาก
counter = 0
def increment():
    global counter
    counter += 1
increment()
print(counter)

คีย์เวิร์ด nonlocal

nonlocal x ในฟังก์ชันซ้อนช่วยให้คุณเขียนลงในตัวแปรของขอบเขตที่ครอบอยู่ แต่ไม่ใช่ขอบเขตส่วนกลาง
def make_counter():
    count = 0
    def inc():
        nonlocal count
        count += 1
        return count
    return inc
c = make_counter()
print(c(), c())

กฎ LEGB

Python จะค้นหาชื่อตามลำดับดังนี้: เฉพาะที่ → ที่ครอบอยู่ → ส่วนกลาง → สร้างไว้ในระบบ นี่คือกฎ LEGB
x = 'global'
def outer():
    x = 'enclosing'
    def inner():
        print(x)  # enclosing
    inner()
outer()

การคืนค่าหลายค่า

def f(): return 1, 2, 3 จะคืนค่าทูเพิล a, b, c = f() จะคลายแพ็กทูเพิลนั้น
def stats(lst):
    return min(lst), max(lst), sum(lst)/len(lst)
lo, hi, avg = stats([1,2,3,4,5])
print(lo, hi, avg)

การคืนค่าฟังก์ชัน (คลอเชอร์)

ฟังก์ชันสามารถคืนค่าฟังก์ชันอื่นได้ ฟังก์ชันชั้นในจะจดจำขอบเขตของฟังก์ชันชั้นนอก นี่คือคลอเชอร์
def make_adder(n):
    def adder(x):
        return x + n
    return adder
add5 = make_adder(5)
print(add5(3))

None กับการไม่คืนค่า

โปรดคืนค่า None อย่างชัดเจนเสมอเมื่อต้องการสื่อว่าไม่มีค่า การพึ่งพา None โดยอัตโนมัตินั้นถูกต้อง แต่การระบุอย่างชัดเจนจะเข้าใจได้ง่ายกว่า
def find(lst, val):
    for i, x in enumerate(lst):
        if x == val:
            return i
    return None
print(find([1,2,3], 9))

ตรวจสอบอย่างรวดเร็ว

ตามกฎ LEGB จะตรวจสอบขอบเขตใดเป็นลำดับสุดท้าย

สรุปทบทวน

return จะออกจากฟังก์ชันพร้อมค่า ตัวแปรเฉพาะที่จะไม่รั่วไหลออกไป ใช้ global/nonlocal เพื่อเขียนลงในขอบเขตภายนอก LEGB คือ เฉพาะที่ ที่ครอบอยู่ ส่วนกลาง และสร้างไว้ในระบบ

เรียนรู้ต่อไป

ทำได้ดีมากครับ โปรดไปยังบทเรียนถัดไปเพื่อพัฒนาทักษะของคุณต่อไป

คำถามที่พบบ่อย

บทเรียน “ค่าที่ส่งกลับและขอบเขตตัวแปร” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ค่าที่ส่งกลับและขอบเขตตัวแปร” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ค่าที่ส่งกลับและขอบเขตตัวแปร”

ทำความเข้าใจคำสั่ง return และขอบเขตของตัวแปร (เฉพาะที่และส่วนกลาง) คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “ค่าที่ส่งกลับและขอบเขตตัวแปร” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม

ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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