ความแตกต่างในการทำงานกับฟังก์ชันภายในใน Python

ใน Python ไม่เพียงแต่จะมีฟังก์ชันที่ซ้อนกันได้เท่านั้น แต่ฟังก์ชันหนึ่งยังสามารถคืนค่าอีกฟังก์ชันหนึ่งได้อีกด้วย ตัวอย่างเช่น ให้ฟังก์ชัน outer คืนค่าโค้ดต้นฉบับของฟังก์ชัน inner เป็นผลลัพธ์:

pythondef outer():
  def inner():
    return '+++'

  return inner

ลองบันทึกการเรียกใช้ outer ลงในตัวแปร res:

pythonres = outer()
print(res)

หลังจากรันโค้ด จะแสดงวัตถุที่เก็บฟังก์ชัน:

python<function outer.<locals>.inner at 0x000001564A212B90>

แต่หากเรียกใช้ตัวแปร res ด้วยวงเล็บ จะได้ข้อความ '+++' คืนกลับมา:

pythonprint(res()) # แสดงผล '+++'

สามารถเขียนโค้ดใหม่ได้ โดยให้ res บันทึกค่าจากการเรียก outer ด้วยวงเล็บสองชุด - ชุดแรกสำหรับเรียกตัวเอง และชุดที่สองสำหรับเรียกฟังก์ชัน inner นั่นหมายความว่า เราสามารถเพิ่มวงเล็บทางขวาของฟังก์ชันชั้นนอกได้ตามจำนวนฟังก์ชันที่ซ้อนอยู่ภายใน:

pythonres = outer()()
print(res) # แสดงผล '+++'
Задание 1

มีโค้ดต่อไปนี้:

pythondef outer():
  def inner(num):
    return num + 2

  return inner
  
res = outer()(3)
print(res)

จงบอกว่าอะไรจะถูกแสดงผลในคอนโซล

Задание 2

มีโค้ดต่อไปนี้:

pythondef outer():
  def inner(txt):
    return 'hello, ' + txt

  return inner
  
res = outer()
print(res)

จงบอกว่าอะไรจะถูกแสดงผลในคอนโซล