Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ฟังก์ชัน Python ส่งคืน/ให้วัตถุได้อย่างไร


คำสั่ง return ทำให้ฟังก์ชัน python ออกและคืนค่าให้กับผู้เรียก วัตถุประสงค์ของฟังก์ชันโดยทั่วไปคือการรับอินพุตและส่งคืนบางสิ่ง คำสั่ง return เมื่อดำเนินการแล้ว จะยุติการดำเนินการของฟังก์ชันทันที แม้ว่าจะไม่ใช่คำสั่งสุดท้ายในฟังก์ชันก็ตาม

ฟังก์ชันที่คืนค่าบางครั้งเรียกว่าฟังก์ชันที่มีผล

ตัวอย่าง

รหัสที่กำหนดให้ผลลัพธ์ต่อไปนี้

def sum(a,b):
     return a+b
sum(5,16)

ผลลัพธ์

21

เครื่องกำเนิดไฟฟ้า

ตัวสร้างคือตัววนซ้ำหรือแบบวนซ้ำได้ เช่น list และ tuples แต่คุณสามารถวนซ้ำได้เพียงครั้งเดียวเท่านั้น เป็นเพราะพวกเขาไม่ได้เก็บค่าทั้งหมดไว้ในหน่วยความจำ แต่จะสร้างค่าได้ทันที:

ตัวอย่าง

mygenerator = (x*x for x in range(4))
for i in mygenerator:
      print i,

ผลลัพธ์

0 1 4 9

เราไม่สามารถดำเนินการ i ใน mygenerator เป็นครั้งที่สองได้เนื่องจากตัวสร้างสามารถใช้ได้เพียงครั้งเดียว:พวกเขาคำนวณ 0 จากนั้นลืมไปและคำนวณ 1, 4 และสิ้นสุดการคำนวณ 9 ทีละตัว

ผลตอบแทน

yield เป็นคีย์เวิร์ดที่ใช้เหมือน return ยกเว้นฟังก์ชันจะคืนค่าตัวสร้าง

เราใช้รหัสต่อไปนี้เพื่อเข้าถึงผลตอบแทนจากตัวสร้างดังนี้

ตัวอย่าง

def createGenerator():
      for i in range(4):
           yield i*i      #  this code creates a generator
mygenerator = createGenerator()
print(mygenerator) # mygenerator is an object!
# for i in mygenerator:
#      print i,
print(next(mygenerator))
print(next(mygenerator))
print(next(mygenerator))
print(next(mygenerator))
print(next(mygenerator))

ผลลัพธ์

<generator object createGenerator at 0xb71e27fc>
0
1
4
9
Traceback (most recent call last):
  File "yieldgen1.py", line 12, in <module>
    print(next(mygenerator))
StopIteration

คำอธิบาย

คำสั่งผลตอบแทนในตัวอย่างด้านบนสร้าง mygenerator สามารถใช้ได้เพียงครั้งเดียว เราใช้คำสั่ง next(mygenerator) ในการคำนวณ สามารถใช้ได้ครั้งเดียว:ครั้งแรกคำนวณ 0 จากนั้นลืมเกี่ยวกับมัน และครั้งที่สองคำนวณ 1 ครั้งที่สาม 4 และสี่คำนวณ 9 จากนั้นครั้งที่ห้า แสดงข้อผิดพลาด StopIteration เนื่องจากองค์ประกอบรายการหมดลง