Iterator

Iterator គឺ​ជា​វត្ថុ​ដែល​ជា​លទ្ធផល​បាន​មក​ពី​ការយក​ function មាន​ស្រាប់​ឈ្មោះ iter() មក​ប្រើ ដោយ​ផ្តល់ argument ជា​វត្ថុ​ដែល​ជា container ណាមួយ​អោយ​វា​។ ហើយ​ដើម្បី​បង្កើត​វត្ថុ​មាន​ប្រភេទ​ជា iterator យើង​ត្រូវ​ធ្វើ​ដូច​ខាង​ក្រោម​នេះ៖

myList = [100, 'profit', True]
myIter = iter(myList)
print(myIter)
<list_iterator object at 0x0124E658>
មួយវិញទៀត ក្រោយ​ពី​វត្ថុ​ដែល​ជា iterator ផ្សេង​ៗ​ត្រូវ​បាន​បង្កើត​រួច​ហើយ បើ​សិន​ជា​យើង​យក function មាន​ស្រាប់​ឈ្មោះ next() មក​ប្រើ ដោយ​ផ្តល់ argument អោយ​ទៅ​ function ​នោះ​ជា​ iterator ណា​មួយ យើង​នឹង​បាន​លទ្ធផល​ដូច​ខាង​ក្រោម​នេះ៖
myList = (100, 'profit', True)
myIter = iter(myList)
print(next(myIter))
print(next(myIter))
print(next(myIter))
print(next(myIter))
100
profit
True
Traceback (most recent call last):
  File "C:/pythonProject/main.py", line 6, in <module>
    print(next(myIter))
StopIteration

ដូចនេះ​យើង​ឃើញ​ថា គ្រប់​ការយក function ​មាន​ស្រាប់​ឈ្មោះ next() មក​ប្រើ​ដោយ​ផ្តល់ argument ជា iterator ឈ្មោះ myIter អោយ​ទៅ​ function ឈ្មោះ​ next() element ​ណាមួយ​នៅ​ក្នុង​កំរង tuple ឈ្មោះ myList ត្រូវ​បាន​យក​មក​ពិនិត្យ​។ ហើយ​នៅ​ពេល​ដែល​ function ឈ្មោះ next() ត្រូវ​បាន call នៅ​ពេល​ក្រោយ​ៗ​ទៀត element ជា​បន្តបន្តាប់​នៅ​ក្នុង​កំរង tuple នោះ​ត្រូវ​បាន​យក​មក​ពិនិត្យ​ជា​បន្តបន្ទាប់​។ ហើយ​នៅ​ពេល​ដែល​ element នៅ​ក្នុង​កំរង tuple ត្រុវ​បាន​ពិនិត្យ​អស់​ហើយ ការយក​function ឈ្មោះ next() មក​ប្រើ​ជា​បន្ត​ទៀត បាន​ធ្វើ​អោយ exception ប្រភេទ StopIteration ត្រូវ​បាន​កើត​មាន​ឡើង​។

សរុបមក ការយល់ដឹង​ពី iterator មាន​សារសំខាន់ ក្នុង​ការយល់​ដឹង​ពី​យន្តការ​របស់​ statement for ដោយ​ហេតុ​ថា នៅ​ពេល​ដែល statement for ត្រូវ​យក​មក​ប្រើ​ជាមួយ​វត្ថុ​ដែល​ជា container ណា​មួយ function មាន​ស្រាប់​ឈ្មោះ iter() ក៏​ត្រូវ​បាន​ call និង​ទទួល​យក argument ដែល​ជា​វត្ថុ​មាន​ប្រភេទ​ជា​ container នោះ ដោយ​ស្វ័យប្រវត្តិ​ ដែល​ជា​ប្រការ​ធ្វើ​អោយ​វត្ថុ​មាន​ប្រភេទ​ជា iterator មួយ​ត្រូវ​បាន​បង្កើត​ឡើង​។ បន្ទាប់​មក​ទៀត function មាន​ស្រាប់​ឈ្មោះ next() ក៏​ត្រូវ​បាន call ដែរ និង​ទទួល​បាន​ iterator ទើប​ត្រូវ​បាន​បង្កើត​នោះ​ជា argument ។ ការយក​យក​ function ឈ្មោះ next() មក​ប្រើ ត្រូវ​ធ្វើ​ឡើង​ជា​ដដែល​ៗ រហូត​ដល់ element នៅ​ក្នុង​វត្ថុ​ដែល​ជា​ container ដើម​ត្រូវ​បាន​ពិនិត្យ​អស់​៕