ອານຸພາສານ Python

ອານຸພາສານ Python

ອານຸພາສານແມ່ນວັດຖຸທີ່ມີຈຳນວນຄວາມສາມາດຂອງ

ອານຸພາສານແມ່ນວັດຖຸທີ່ສາມາດເພື່ອການ

ເທື່ອທີ່ສາມາດເວົ້າໄດ້ໃນ Python,ອານຸພາສານແມ່ນວັດຖຸທີ່ __iter__() ແລະ __next__()

ການສ້າງອານຸພາສານ VS ບັນດາວັດຖຸສາມາດເພື່ອການ

ລະບົບວັດຖຸລະບົບທີ່ສາມາດເພື່ອການ

ທຸກບັນດາວັດຖຸນີ້ມີກົນລະບົບເພື່ອ iter() ກົນລະບົບຂອງ

ຄວາມປະຈຳລາຍ

ການສ້າງອານຸພາສານຈາກວັດຖຸ

mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)
print(next(myit))
print(next(myit))
print(next(myit))

ດຳເນີນຄວາມປະຈຳລາຍ

ການສ້າງອານຸພາສານຈາກວັດຖຸ

ຄວາມປະຈຳລາຍ

ການສ້າງອານຸພາສານຈາກຄຳຕະກຳ

mystr = "banana"
myit = iter(mystr)
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))

ດຳເນີນຄວາມປະຈຳລາຍ

ການອານຸພາສານ

ພວກເຮົາກໍ່ສາມາດໃຊ້ for 循环ເພື່ອການ

ຄວາມປະຈຳລາຍ

ການສ້າງອານຸພາສານຈາກວັດຖຸ

mytuple = ("apple", "banana", "cherry")
for x in mytuple:
  print(x)

ດຳເນີນຄວາມປະຈຳລາຍ

ຄວາມປະຈຳລາຍ

ການສ້າງອານຸພາສານຈາກຄຳຕະກຳ

mystr = "banana"
for x in mystr:
  print(x)

ດຳເນີນຄວາມປະຈຳລາຍ

ຂໍ້ສັນຍານ:for 循环ແມ່ນການສ້າງອານຸພາສານວັດຖຸແລະໃຫ້ການ ຖ້າທີ່ທ່ານມີຄວາມພະຍາຍາມ ກົນລະບົບຂອງ

ສ້າງອານຸພາສານ

ເພື່ອສ້າງບັນດາວັດຖຸ/ບັນດາວັດຖຸເປັນອານຸພາສານໄດ້ຈະຕ້ອງໃຫ້ບັນດາວັດຖຸມີການ __iter__() ແລະ __next__() ກົນລະບົບຂອງ

ຄືທີ່ເຈົ້າໄດ້ຮຽນໃນຫົວຂໍ້ວັດຖຸ/ບັນດາວັດຖຸຂອງ Python,ທຸກວັດຖຸມີຊື່ __init__() ການຕັດສິນລະບົບທີ່ຈະອະນຸຍາດທາງເຈົ້າໃນການກຳນົດຄວາມພິຈາລະນາຫຼັງຈາກທີ່ເຈົ້າສ້າງບັນດາວັດຖຸ。

__iter__() __iter__()

__next__() ວິທີກໍ່ມີຄວາມຄິດທີ່ຄືກັນ, ທ່ານສາມາດດຳເນີນການ (ການລິການເລີ່ມຕົ້ນແລະອີກ), ແຕ່ຕ້ອງສະເໜີວັດຖຸອຸປະກອນຫນ້າຫນັງເອງ.

ຄວາມປະຈຳລາຍ

ວິທີກໍ່ສາມາດສາຍການດຳເນີນການ, ແລະຕ້ອງມີການສະເໜີວັດຖຸໃນທີ່ຕໍ່ໄປຂອງວົງການ.

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
  def __next__(self):
    x = self.a
    self.a += 1
    return x
myclass = MyNumbers()
myiter = iter(myclass)
ສ້າງອຸປະກອນຫນ້າຫນັງທີ່ກັບຄືນສະເໜີຈຳນວນ, ຈະເລີ່ມຈາກ 1, ທີ່ຈະເພີ່ມຂຶ້ນ 1 ຕໍ່ການຫນ້າຫນັງ (ກັບຄືນສະເໜີ 1, 2, 3, 4, 5 ແລະອີກ).
ສ້າງອຸປະກອນຫນ້າຫນັງທີ່ກັບຄືນສະເໜີຈຳນວນ, ຈະເລີ່ມຈາກ 1, ທີ່ຈະເພີ່ມຂຶ້ນ 1 ຕໍ່ການຫນ້າຫນັງ (ກັບຄືນສະເໜີ 1, 2, 3, 4, 5 ແລະອີກ).
ສ້າງອຸປະກອນຫນ້າຫນັງທີ່ກັບຄືນສະເໜີຈຳນວນ, ຈະເລີ່ມຈາກ 1, ທີ່ຈະເພີ່ມຂຶ້ນ 1 ຕໍ່ການຫນ້າຫນັງ (ກັບຄືນສະເໜີ 1, 2, 3, 4, 5 ແລະອີກ).
ສ້າງອຸປະກອນຫນ້າຫນັງທີ່ກັບຄືນສະເໜີຈຳນວນ, ຈະເລີ່ມຈາກ 1, ທີ່ຈະເພີ່ມຂຶ້ນ 1 ຕໍ່ການຫນ້າຫນັງ (ກັບຄືນສະເໜີ 1, 2, 3, 4, 5 ແລະອີກ).
ສ້າງອຸປະກອນຫນ້າຫນັງທີ່ກັບຄືນສະເໜີຈຳນວນ, ຈະເລີ່ມຈາກ 1, ທີ່ຈະເພີ່ມຂຶ້ນ 1 ຕໍ່ການຫນ້າຫນັງ (ກັບຄືນສະເໜີ 1, 2, 3, 4, 5 ແລະອີກ).

ດຳເນີນຄວາມປະຈຳລາຍ

StopIteration

print(next(myiter)) ຖ້າທີ່ທ່ານມີຄວາມພະຍາຍາມ next()

ເພື່ອປ້ອງກັນຈາກການຫນ້າຫນັງບໍ່ຢຸດສະຫງັກ, ພວກເຮົາສາມາດໃຊ້ຄຳສັ່ງ, ຫຼືໃຊ້ໃນວົງກວດສາກົນ, ຄຳສັ່ງດັ່ງກ່າວຈະຫນ້າຫນັງບໍ່ຢຸດສະຫງັກ. StopIteration ຄຳສັ່ງ.

ໃນ __next__() ໃນວິທີ, ຖ້າການຫນ້າຫນັງສຳເລັດຈາກຈຳນວນການຫນ້າຫນັງທີ່ກໍານົດ, ພວກເຮົາສາມາດເພີ່ມຂໍ້ການຢຸດຕິເລື່ອງຂັດແຍ່ງ:

ຄວາມປະຈຳລາຍ

ຢຸດຕິຫນ້າຫນັງພາຍໃນ 20 ການຫນ້າຫນັງ:

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration
myclass = MyNumbers()
myiter = iter(myclass)
for x in myiter:
  print(x)

ດຳເນີນຄວາມປະຈຳລາຍ