Python เช•เซ‹เชกเชจเซ€ 4 เชฎเชฟเชฒเชฟเชฏเชจ เชฒเซ€เชŸเซ€เช“ เชŸเชพเช‡เชชเชšเซ‡เช• เช•เชฐเชตเชพเชจเซ‹ เชฎเชพเชฐเซเช—. เชญเชพเช— 1

เช†เชœเซ‡ เช…เชฎเซ‡ เชคเชฎเชพเชฐเชพ เชงเซเชฏเชพเชจ เชชเชฐ เชธเชพเชฎเช—เซเชฐเซ€เชจเชพ เช…เชจเซเชตเชพเชฆเชจเซ‹ เชชเซเชฐเชฅเชฎ เชญเชพเช— เชฒเชพเชตเซ€เช เช›เซ€เช เช•เซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชกเซเชฐเซ‰เชชเชฌเซ‰เช•เซเชธ เชชเชพเชฏเชฅเซ‹เชจ เช•เซ‹เชกเชจเชพ เชชเซเชฐเช•เชพเชฐ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเซ‡ เช›เซ‡.

Python เช•เซ‹เชกเชจเซ€ 4 เชฎเชฟเชฒเชฟเชฏเชจ เชฒเซ€เชŸเซ€เช“ เชŸเชพเช‡เชชเชšเซ‡เช• เช•เชฐเชตเชพเชจเซ‹ เชฎเชพเชฐเซเช—. เชญเชพเช— 1

เชกเซเชฐเซ‰เชชเชฌเซ‰เช•เซเชธ เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ เช˜เชฃเซเช‚ เชฒเช–เซ‡ เช›เซ‡. เชคเซ‡ เชเช• เชเชตเซ€ เชญเชพเชทเชพ เช›เซ‡ เชœเซ‡เชจเซ‹ เช…เชฎเซ‡ เชฌเซ‡เช•-เชเชจเซเชก เชธเซ‡เชตเชพเช“ เช…เชจเซ‡ เชกเซ‡เชธเซเช•เชŸเซ‹เชช เช•เซเชฒเชพเชฏเช‚เชŸ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ เชฌเช‚เชจเซ‡ เชฎเชพเชŸเซ‡ เช–เซ‚เชฌ เชœ เชตเซเชฏเชพเชชเช•เชชเชฃเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช. เช…เชฎเซ‡ Go, TypeScript เช…เชจเซ‡ Rust เชจเซ‹ เชชเชฃ เช˜เชฃเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช, เชชเชฐเช‚เชคเซ Python เช…เชฎเชพเชฐเซ€ เชฎเซเช–เซเชฏ เชญเชพเชทเชพ เช›เซ‡. เช…เชฎเชพเชฐเชพ เชธเซเช•เซ‡เชฒเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชคเชพ, เช…เชจเซ‡ เช…เชฎเซ‡ เชชเชพเชฏเชฅเซ‹เชจ เช•เซ‹เชกเชจเซ€ เชฒเชพเช–เซ‹ เชฒเซ€เชŸเซ€เช“ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช, เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เช†เชตเชพ เช•เซ‹เชกเชจเซ€ เช—เชคเชฟเชถเซ€เชฒ เชŸเชพเช‡เชชเชฟเช‚เช— เชคเซ‡เชจเซ€ เชธเชฎเชœเชจเซ‡ เชฌเชฟเชจเชœเชฐเซ‚เชฐเซ€ เชฐเซ€เชคเซ‡ เชœเชŸเชฟเชฒ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฎเชœเซ‚เชฐ เช‰เชคเซเชชเชพเชฆเช•เชคเชพเชจเซ‡ เช—เช‚เชญเซ€เชฐ เช…เชธเชฐ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡. เช† เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชนเชณเชตเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชงเซ€เชฎเซ‡ เชงเซ€เชฎเซ‡ เช…เชฎเชพเชฐเชพ เช•เซ‹เชกเชจเซ‡ mypy เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเซเชŸเซ‡เชŸเชฟเช• เชŸเชพเช‡เชช เชšเซ‡เช•เชฟเช‚เช—เชฎเชพเช‚ เชธเช‚เช•เซเชฐเชฎเชฃ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚ เช›เซ‡. เช† เช•เชฆเชพเชš เชชเชพเชฏเชฅเซ‹เชจ เชฎเชพเชŸเซ‡ เชธเซŒเชฅเซ€ เชตเชงเซ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เชเช•เชฒ เชชเซเชฐเช•เชพเชฐเชจเซ€ เชšเช•เชพเชธเชฃเซ€ เชธเชฟเชธเซเชŸเชฎ เช›เซ‡. Mypy เชเช• เช“เชชเชจ เชธเซ‹เชฐเซเชธ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช›เซ‡, เชคเซ‡เชจเชพ เชฎเซเช–เซเชฏ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชกเซเชฐเซ‰เชชเชฌเซ‰เช•เซเชธเชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡.

เชกเซเชฐเซ‰เชชเชฌเซ‰เช•เซเชธ เช† เชธเซเช•เซ‡เชฒ เชชเชฐ เชชเชพเชฏเชฅเซ‹เชจ เช•เซ‹เชกเชฎเชพเช‚ เชธเซเชŸเซ‡เชŸเชฟเช• เชŸเชพเช‡เชช เชšเซ‡เช•เชฟเช‚เช—เชจเซ‹ เช…เชฎเชฒ เช•เชฐเชจเชพเชฐเซ€ เชชเซเชฐเชฅเชฎ เช•เช‚เชชเชจเซ€เช“เชฎเชพเช‚เชจเซ€ เชเช• เชนเชคเซ€. เช† เชฆเชฟเชตเชธเซ‹เชฎเชพเช‚ เชนเชœเชพเชฐเซ‹ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธเชฎเชพเช‚ Mypy เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡. เช† เชธเชพเชงเชจ เช…เชธเช‚เช–เซเชฏ เชตเช–เชค, เชœเซ‡เชฎ เชคเซ‡เช“ เช•เชนเซ‡ เช›เซ‡, "เชฏเซเชฆเซเชงเชฎเชพเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซเชฏเซเช‚." เช†เชชเชฃเซ‡ เช…เชคเซเชฏเชพเชฐเซ‡ เชœเซเชฏเชพเช‚ เช›เซ€เช เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชชเชนเซ‹เช‚เชšเชตเชพ เชฎเชพเชŸเซ‡ เช†เชชเชฃเซ‡ เช˜เชฃเซ‹ เชฒเชพเช‚เชฌเซ‹ เชฐเชธเซเชคเซ‹ เช•เชพเชขเซเชฏเซ‹ เช›เซ‡. เชฐเชธเซเชคเชพเชฎเชพเช‚, เช˜เชฃเชพ เช…เชธเชซเชณ เช‰เชชเช•เซเชฐเชฎเซ‹ เช…เชจเซ‡ เชจเชฟเชทเซเชซเชณ เชชเซเชฐเชฏเซ‹เช—เซ‹ เชนเชคเชพ. เช† เชชเซ‹เชธเซเชŸ เชฎเชพเชฐเชพ เชธเช‚เชถเซ‹เชงเชจ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เชญเชพเช— เชฐเซ‚เชชเซ‡ เชคเซ‡เชจเซ€ เช–เชกเช•เชพเชณ เชถเชฐเซ‚เช†เชคเชฅเซ€ เชฒเชˆเชจเซ‡ เช†เชœเชจเชพ เชฆเชฟเชตเชธ เชธเซเชงเซ€, เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ เชธเซเชŸเซ‡เชŸเชฟเช• เชŸเชพเชˆเชช เชšเซ‡เช•เชฟเช‚เช—เชจเชพ เชˆเชคเชฟเชนเชพเชธเชจเซ‡ เช†เชตเชฐเซ€ เชฒเซ‡ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ เช…เช—เชฃเชฟเชค เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชœเซ‡เช“ เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ เชฒเช–เซ‡ เช›เซ‡ เชคเซ‡เชฎเชจเชพ เชฎเชพเชŸเซ‡ เชŸเชพเชˆเชช เชšเซ‡เช•เชฟเช‚เช— เช…เชจเซ‡ เชŸเชพเชˆเชช เชˆเช‚เชŸเซ€เช‚เช— เชธเชพเชฎเชพเชจเซเชฏ เชฌเชจเซ€ เช—เชฏเชพ เช›เซ‡. เช† เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเซเชธ เชนเชตเซ‡ IDEs เช…เชจเซ‡ เช•เซ‹เชก เชตเชฟเชถเซเชฒเซ‡เชทเช•เซ‹ เชœเซ‡เชตเชพ เช˜เชฃเชพ เชธเชพเชงเชจเซ‹ เชฆเซเชตเชพเชฐเชพ เชธเชฎเชฐเซเชฅเชฟเชค เช›เซ‡.

โ†’ เชฌเซ€เชœเซ‹ เชญเชพเช— เชตเชพเช‚เชšเซ‹

เชŸเชพเช‡เชช เชšเซ‡เช•เชฟเช‚เช— เชถเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡?

เชœเซ‹ เชคเชฎเซ‡ เช•เซเชฏเชพเชฐเซ‡เชฏ เชกเชพเชฏเชจเซ‡เชฎเชฟเช•เชฒเซ€ เชŸเชพเชˆเชช เช•เชฐเซ‡เชฒเชพ เชชเชพเชฏเชฅเซ‹เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เชนเซ‹เชฏ, เชคเซ‹ เชคเชฎเชจเซ‡ เชฅเซ‹เชกเซ€ เชฎเซ‚เช‚เชเชตเชฃ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡ เช•เซ‡ เชคเชพเชœเซ‡เชคเชฐเชฎเชพเช‚ เชธเซเชŸเซ‡เชŸเชฟเช• เชŸเชพเชˆเชชเชฟเช‚เช— เช…เชจเซ‡ เชฎเชพเชฏเชชเซ€เชจเซ€ เช†เชธเชชเชพเชธ เช†เชŸเชฒเซ€ เชนเชฒเชšเชฒ เช•เซ‡เชฎ เชฅเชˆ เชฐเชนเซ€ เช›เซ‡. เช…เชฅเชตเชพ เช•เชฆเชพเชš เชคเชฎเชจเซ‡ เชชเชพเชฏเชฅเซ‹เชจ เชคเซ‡เชจเชพ เชกเชพเชฏเชจเซ‡เชฎเชฟเช• เชŸเชพเชˆเชชเชฟเช‚เช—เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชšเซ‹เช•เซเช•เชธ เช—เชฎเชถเซ‡, เช…เชจเซ‡ เชœเซ‡ เชฅเชˆ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡ เชคเชฎเชจเซ‡ เชชเชฐเซ‡เชถเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เชธเซเชฅเชฟเชฐ เชŸเชพเชˆเชชเชฟเช‚เช—เชจเชพ เชฎเซ‚เชฒเซเชฏเชจเซ€ เชšเชพเชตเซ€ เช เช‰เช•เซ‡เชฒเซ‹เชจเซ‹ เชธเซเช•เซ‡เชฒ เช›เซ‡: เชคเชฎเชพเชฐเซ‹ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชœเซ‡เชŸเชฒเซ‹ เชฎเซ‹เชŸเซ‹ เชนเชถเซ‡, เชคเซ‡เชŸเชฒเซ‹ เชคเชฎเซ‡ เชธเซเชฅเชฟเชฐ เชŸเชพเชˆเชชเชฟเช‚เช— เชคเชฐเชซ เชเซเช•เชพเชตเชถเซ‹ เช…เชจเซ‡ เช…เช‚เชคเซ‡, เชคเชฎเชจเซ‡ เช–เชฐเซ‡เช–เชฐ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.

เชงเชพเชฐเซ‹ เช•เซ‡ เช•เซ‹เชˆ เชšเซ‹เช•เซเช•เชธ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชนเชœเชพเชฐเซ‹ เชฒเชพเช‡เชจเซ‹เชจเชพ เช•เชฆ เชธเซเชงเซ€ เชชเชนเซ‹เช‚เชšเซ€ เช—เชฏเซ‹ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เช˜เชฃเชพ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฐเซ‹ เชคเซ‡เชจเชพ เชชเชฐ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡. เช…เชฎเชพเชฐเชพ เช…เชจเซเชญเชตเชจเชพ เช†เชงเชพเชฐเซ‡, เชธเชฎเชพเชจ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ‡ เชœเซ‹เชคเชพ, เช…เชฎเซ‡ เช•เชนเซ€ เชถเช•เซ€เช เช•เซ‡ เชคเซ‡เชจเชพ เช•เซ‹เชกเชจเซ‡ เชธเชฎเชœเชตเซเช‚ เช เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เชจเซ‡ เช‰เชคเซเชชเชพเชฆเช• เชฐเชพเช–เชตเชพเชจเซ€ เชšเชพเชตเซ€ เชนเชถเซ‡. เชŸเชพเชˆเชช เชเชจเซ‹เชŸเซ‡เชถเชจเซเชธ เชตเชฟเชจเชพ, เชคเซ‡ เชถเซ‹เชงเชตเชพเชจเซเช‚ เชฎเซเชถเซเช•เซ‡เชฒ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชซเช‚เช•เซเชถเชจเชฎเชพเช‚ เช•เชˆ เชฆเชฒเซ€เชฒเซ‹ เชชเชธเชพเชฐ เช•เชฐเชตเซ€, เช…เชฅเชตเชพ เชซเช‚เช•เซเชถเชจ เช•เชฏเชพ เชชเซเชฐเช•เชพเชฐเชจเซเช‚ เชชเชฐเชค เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เช…เชนเซ€เช‚ เชเชตเชพ เชธเชพเชฎเชพเชจเซเชฏ เชชเซเชฐเชถเซเชจเซ‹ เช›เซ‡ เช•เซ‡ เชœเซ‡เชจเซ‹ เชœเชตเชพเชฌ เชŸเชพเชˆเชช เชเชจเซ‹เชŸเซ‡เชถเชจเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เช†เชชเชตเชพ เชฎเซเชถเซเช•เซ‡เชฒ เชนเซ‹เชฏ เช›เซ‡:

  • เชถเซเช‚ เช† เช•เชพเชฐเซเชฏ เชชเชฐเชค เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ None?
  • เช† เชฆเชฒเซ€เชฒ เชถเซเช‚ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช? items?
  • เชฒเช•เซเชทเชฃ เชชเซเชฐเช•เชพเชฐ เชถเซเช‚ เช›เซ‡ id: int เชคเซ‡ เช›เซ‡, str, เช…เชฅเชตเชพ เช•เชฆเชพเชš เช…เชฎเซเช• เช•เชธเซเชŸเชฎ เชชเซเชฐเช•เชพเชฐ?
  • เชถเซเช‚ เช† เชฆเชฒเซ€เชฒ เชธเซ‚เชšเชฟ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช? เชถเซเช‚ เชคเซ‡เชจเซ‡ เชŸเชชเชฒ เชชเชธเชพเชฐ เช•เชฐเชตเซเช‚ เชถเช•เซเชฏ เช›เซ‡?

เชœเซ‹ เชคเชฎเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชŸเชพเช‡เชช-เชเชจเซ‹เชŸเซ‡เชก เช•เซ‹เชก เชธเซเชจเชฟเชชเซ‡เชŸ เชœเซเช“ เช…เชจเซ‡ เชธเชฎเชพเชจ เชชเซเชฐเชถเซเชจเซ‹เชจเชพ เชœเชตเชพเชฌ เช†เชชเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹, เชคเซ‹ เชคเซ‡ เชคเชพเชฐเชฃ เช†เชชเซ‡ เช›เซ‡ เช•เซ‡ เช† เชธเซŒเชฅเซ€ เชธเชฐเชณ เช•เชพเชฐเซเชฏ เช›เซ‡:

class Resource:
    id: bytes
    ...
    def read_metadata(self, 
                      items: Sequence[str]) -> Dict[str, MetadataItem]:
        ...

  • read_metadata เชชเชฐเชค เช•เชฐเชคเซเช‚ เชจเชฅเซ€ None, เช•เชพเชฐเชฃ เช•เซ‡ เชตเชณเชคเชฐ เชชเซเชฐเช•เชพเชฐ เชจเชฅเซ€ Optional[โ€ฆ].
  • เชฆเชฒเซ€เชฒ items เชฐเซ‡เช–เชพเช“เชจเซ‹ เช•เซเชฐเชฎ เช›เซ‡. เชคเซ‡ เชฐเซ‡เชจเซเชกเชฎเชฒเซ€ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เชฐเซ€ เชถเช•เชพเชคเซเช‚ เชจเชฅเซ€.
  • เชตเชฟเชถเซ‡เชทเชคเชพ id เชฌเชพเช‡เชŸเซเชธเชจเซ€ เชธเซเชŸเซเชฐเซ€เช‚เช— เช›เซ‡.

เช†เชฆเชฐเซเชถ เชตเชฟเชถเซเชตเชฎเชพเช‚, เช•เซ‹เชˆ เชเชตเซ€ เช…เชชเซ‡เช•เซเชทเชพ เชฐเชพเช–เซ‡ เช›เซ‡ เช•เซ‡ เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ (เชกเซ‹เช•เชธเซเชŸเซเชฐเชฟเช‚เช—) เชฎเชพเช‚ เช†เชตเซ€ เชฌเชงเซ€ เชธเซ‚เช•เซเชทเซเชฎเชคเชพเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชชเชฐเช‚เชคเซ เช…เชจเซเชญเชต เช เชนเช•เซ€เช•เชคเชจเชพ เช˜เชฃเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช†เชชเซ‡ เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฐเซ‡ เชœเซ‡ เช•เซ‹เชก เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚ เช›เซ‡ เชคเซ‡เชฎเชพเช‚ เช†เชตเชพ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹ เช˜เชฃเซ€เชตเชพเชฐ เชœเซ‹เชตเชพ เชฎเชณเชคเชพ เชจเชฅเซ€. เชœเซ‹ เช†เชตเชพ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹ เช•เซ‹เชกเชฎเชพเช‚ เชนเชพเชœเชฐ เชนเซ‹เชฏ, เชคเซ‹ เชชเชฃ เชคเซ‡เชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชถเซเชฆเซเชงเชคเชพ เชชเชฐ เช—เชฃเชคเชฐเซ€ เช•เชฐเซ€ เชถเช•เชพเชคเซ€ เชจเชฅเซ€. เช† เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹ เช…เชธเซเชชเชทเซเชŸ, เช…เชšเซ‹เช•เซเช•เชธ เช…เชจเซ‡ เช—เซ‡เชฐเชธเชฎเชœ เชฎเชพเชŸเซ‡ เช–เซเชฒเซเชฒเชพ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชฎเซ‹เชŸเซ€ เชŸเซ€เชฎเซ‹ เช…เชฅเชตเชพ เชฎเซ‹เชŸเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธเชฎเชพเช‚, เช† เชธเชฎเชธเซเชฏเชพ เช…เชคเซเชฏเช‚เชค เชคเซ€เชตเซเชฐ เชฌเชจเซ€ เชถเช•เซ‡ เช›เซ‡.

เชœเซเชฏเชพเชฐเซ‡ เชชเชพเชฏเชฅเซ‹เชจ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธเชจเชพ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เช…เชฅเชตเชพ เชฎเชงเซเชฏเชตเชฐเซเชคเซ€ เชคเชฌเช•เซเช•เชพเชฎเชพเช‚ เช‰เชคเซเช•เซƒเชทเซเชŸ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเซเช• เชธเชฎเชฏเซ‡ เชธเชซเชณ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธ เช…เชจเซ‡ เชชเชพเชฏเชฅเซ‹เชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เช•เช‚เชชเชจเซ€เช“เชจเซ‡ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชชเซเชฐเชถเซเชจเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเชตเซ‹ เชชเชกเซ€ เชถเช•เซ‡ เช›เซ‡: "เชถเซเช‚ เช†เชชเชฃเซ‡ เชฌเชงเซเช‚ เชธเซเชฅเชฟเชฐ เชฐเซ€เชคเซ‡ เชŸเชพเชˆเชช เช•เชฐเซ‡เชฒเซ€ เชญเชพเชทเชพเชฎเชพเช‚ เชซเชฐเซ€เชฅเซ€ เชฒเช–เชตเซเช‚ เชœเซ‹เชˆเช?".

mypy เชœเซ‡เชตเซ€ เชŸเชพเชˆเชช เชšเซ‡เช•เชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเซเชธ เชกเซ‡เชตเชฒเชชเชฐเชจเซ‡ เชชเซเชฐเช•เชพเชฐเซ‹เชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช”เชชเชšเชพเชฐเชฟเช• เชญเชพเชทเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ€เชจเซ‡ เช…เชจเซ‡ เชชเซเชฐเช•เชพเชฐ เช˜เซ‹เชทเชฃเชพเช“ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชธเชพเชฅเซ‡ เชฎเซ‡เชณ เช–เชพเชคเซ€ เชนเซ‹เชฏ เชคเซ‡ เชšเช•เชพเชธเซ€เชจเซ‡ (เช…เชจเซ‡ เชตเซˆเช•เชฒเซเชชเชฟเช• เชฐเซ€เชคเซ‡, เชคเซ‡เชฎเชจเชพ เช…เชธเซเชคเชฟเชคเซเชตเชจเซ€ เชคเชชเชพเชธ เช•เชฐเซ€เชจเซ‡) เช‰เชชเชฐเซ‹เช•เซเชค เชธเชฎเชธเซเชฏเชพเชจเซเช‚ เชจเชฟเชฐเชพเช•เชฐเชฃ เชฒเชพเชตเซ‡ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เช…เชฎเซ‡ เช•เชนเซ€ เชถเช•เซ€เช เช›เซ€เช เช•เซ‡ เช† เชธเชฟเชธเซเชŸเชฎเซ‹ เช…เชฎเชพเชฐเชพ เชจเชฟเช•เชพเชฒ เชชเชฐ เชงเซเชฏเชพเชจเชชเซ‚เชฐเซเชตเช• เชคเชชเชพเชธเซ‡เชฒเชพ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹ เชœเซ‡เชตเซเช‚ เช•เช‚เชˆเช• เชฎเซ‚เช•เซ‡ เช›เซ‡.

เช†เชตเซ€ เชธเชฟเชธเซเชŸเชฎเซ‹เชจเชพ เช‰เชชเชฏเซ‹เช—เชจเชพ เช…เชจเซเชฏ เชซเชพเชฏเชฆเชพ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชฌเชฟเชจ-เชคเซเชšเซเช› เช›เซ‡:

  • เชŸเชพเช‡เชช เชšเซ‡เช•เชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เช•เซ‡เชŸเชฒเซ€เช• เชจเชพเชจเซ€ (เช…เชจเซ‡ เชเชŸเชฒเซ€ เชจเชพเชจเซ€ เชจเชนเซ€เช‚) เชญเซ‚เชฒเซ‹ เชถเซ‹เชงเซ€ เชถเช•เซ‡ เช›เซ‡. เชเช• เชฒเชพเช•เซเชทเชฃเชฟเช• เช‰เชฆเชพเชนเชฐเชฃ เช เช›เซ‡ เช•เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชคเซ‡เช“ เชฎเซ‚เชฒเซเชฏเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชจเซเช‚ เชญเซ‚เชฒเซ€ เชœเชพเชฏ เช›เซ‡ None เช…เชฅเชตเชพ เช•เซ‹เชˆ เช…เชจเซเชฏ เชตเชฟเชถเซ‡เชท เชธเซเชฅเชฟเชคเชฟ.
  • เช•เซ‹เชก เชฐเชฟเชซเซ‡เช•เซเชŸเชฐเชฟเช‚เช— เช–เซ‚เชฌ เชœ เชธเชฐเชณ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชŸเชพเช‡เชช เชšเซ‡เช•เชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เช•เชฏเชพ เช•เซ‹เชกเชจเซ‡ เชฌเชฆเชฒเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡ เช˜เชฃเซ€ เชตเช–เชค เช–เซ‚เชฌ เชœ เชธเชšเซ‹เชŸ เชนเซ‹เชฏ เช›เซ‡. เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, เช…เชฎเชจเซ‡ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชธเชพเชฅเซ‡ 100% เช•เซ‹เชก เช•เชตเชฐเซ‡เชœเชจเซ€ เช†เชถเชพ เชฐเชพเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€, เชœเซ‡ เช•เซ‹เชˆ เชชเชฃ เชธเช‚เชœเซ‹เช—เซ‹เชฎเชพเช‚, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชถเช•เซเชฏ เชจเชฅเซ€. เชธเชฎเชธเซเชฏเชพเชจเซเช‚ เช•เชพเชฐเชฃ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชพเชฐเซ‡ เชธเซเชŸเซ‡เช• เชŸเซเชฐเซ‡เชธเชจเซ€ เชŠเช‚เชกเชพเชˆเชฎเชพเช‚ เชคเชชเชพเชธ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€.
  • เชฎเซ‹เชŸเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธ เชชเชฐ เชชเชฃ, mypy เช˜เชฃเซ€เชตเชพเชฐ เชธเซ‡เช•เชจเซเชกเชจเชพ เช…เชชเซ‚เชฐเซเชฃเชพเช‚เช•เชฎเชพเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃ เชชเซเชฐเช•เชพเชฐเชจเซเช‚ เชšเซ‡เช•เชฟเช‚เช— เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เช…เชจเซ‡ เชชเชฐเซ€เช•เซเชทเชฃเซ‹เชจเซ‹ เช…เชฎเชฒ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชฆเชธ เชธเซ‡เช•เช‚เชก เช…เชฅเชตเชพ เชคเซ‹ เชฎเชฟเชจเชฟเชŸ เชฒเซ‡ เช›เซ‡. เชŸเชพเช‡เชช เชšเซ‡เช•เชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฐเชจเซ‡ เชคเซเชตเชฐเชฟเชค เชชเซเชฐเชคเชฟเชธเชพเชฆ เช†เชชเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชคเซ‡เชจเซเช‚ เช•เชพเชฎ เชเชกเชชเชฅเซ€ เช•เชฐเชตเชพ เชฆเซ‡ เช›เซ‡. เชคเซ‡เชฃเซ‡ เชนเชตเซ‡ เชเช•เชฎ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชœเชพเชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เชจเชพเชœเซเช• เช…เชจเซ‡ เชธเช–เชค เชฒเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€ เช•เซ‡ เชœเซ‡ เชตเชพเชธเซเชคเชตเชฟเช• เชเชจเซเชŸเชฟเชŸเซ€เชจเซ‡ เชฎเซ‹เช•เซเชธ เช…เชจเซ‡ เชชเซ‡เชšเชฅเซ€ เชฌเชฆเชฒเซ‡ เช›เซ‡, เชซเช•เซเชค เช•เซ‹เชก เชชเชฐเซ€เช•เซเชทเชฃ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชเชกเชชเชฅเซ€ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡.

IDEs เช…เชจเซ‡ เชธเช‚เชชเชพเชฆเช•เซ‹ เชœเซ‡เชฎ เช•เซ‡ PyCharm เช…เชฅเชตเชพ เชตเชฟเชเซเชฏเซเช…เชฒ เชธเซเชŸเซเชกเชฟเชฏเซ‹ เช•เซ‹เชก เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เชจเซ‡ เช•เซ‹เชก เชชเซ‚เชฐเซเชฃเชคเชพ, เชเชฐเชฐ เชนเชพเช‡เชฒเชพเช‡เชŸเชฟเช‚เช— เช…เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเซ€ เชญเชพเชทเชพ เชฐเชšเชจเชพเช“ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เชŸเชพเช‡เชช เชเชจเซ‹เชŸเซ‡เชถเชจเชจเซ€ เชถเช•เซเชคเชฟเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เช…เชจเซ‡ เช† เชซเช•เซเชค เชŸเชพเชˆเชช เช•เชฐเชตเชพเชจเชพ เช•เซ‡เชŸเชฒเชพเช• เชซเชพเชฏเชฆเชพ เช›เซ‡. เช•เซ‡เชŸเชฒเชพเช• เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฐเซ‹ เชฎเชพเชŸเซ‡, เช† เชฌเชงเซเช‚ เชŸเชพเช‡เชช เช•เชฐเชตเชพเชจเซ€ เชคเชฐเชซเซ‡เชฃเชฎเชพเช‚ เชฎเซเช–เซเชฏ เชฆเชฒเซ€เชฒ เช›เซ‡. เช† เชเชตเซ€ เชตเชธเซเชคเซ เช›เซ‡ เชœเซ‡ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชชเช›เซ€ เชคเชฐเชค เชœ เชซเชพเชฏเชฆเซ‹ เชฅเชพเชฏ เช›เซ‡. เชชเซเชฐเช•เชพเชฐเซ‹ เชฎเชพเชŸเซ‡เชจเชพ เช† เช‰เชชเชฏเซ‹เช— เช•เซ‡เชธเชฎเชพเช‚ mypy เชœเซ‡เชตเซ€ เช…เชฒเช— เชชเซเชฐเช•เชพเชฐเชจเซ€ เชšเช•เชพเชธเชฃเซ€ เชธเชฟเชธเซเชŸเชฎเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€, เชœเซ‹ เช•เซ‡ เชคเซ‡ เชจเซ‹เช‚เชงเชตเซเช‚ เชœเซ‹เชˆเช เช•เซ‡ mypy เช•เซ‹เชก เชธเชพเชฅเซ‡ เชธเซเชธเช‚เช—เชค เชŸเชพเช‡เชช เชเชจเซ‹เชŸเซ‡เชถเชจ เชฐเชพเช–เชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ‡ เช›เซ‡.

mypy เชจเซ€ เชชเซƒเชทเซเช เชญเซ‚เชฎเชฟ

เชฎเชพเชฏเชชเซ€เชจเซ‹ เช‡เชคเชฟเชนเชพเชธ เชฏเซเช•เซ‡เชฎเชพเช‚, เช•เซ‡เชฎเซเชฌเซเชฐเชฟเชœเชฎเชพเช‚, เชนเซเช‚ เชกเซเชฐเซ‰เชชเชฌเซ‰เช•เซเชธเชฎเชพเช‚ เชœเซ‹เชกเชพเชฏเซ‹ เชคเซ‡เชจเชพ เชฅเซ‹เชกเชพ เชตเชฐเซเชทเซ‹ เชชเชนเซ‡เชฒเชพ เชถเชฐเซ‚ เชฅเชฏเซ‹ เชนเชคเซ‹. เชนเซเช‚ เชฎเชพเชฐเชพ เชกเซ‹เช•เซเชŸเชฐเชฒ เชธเช‚เชถเซ‹เชงเชจเชจเชพ เชญเชพเช— เชฐเซ‚เชชเซ‡, เชธเซเชŸเซ‡เชŸเชฟเช•เชฒเซ€ เชŸเชพเช‡เชช เช•เชฐเซ‡เชฒเซ€ เช…เชจเซ‡ เช—เชคเชฟเชถเซ€เชฒ เชญเชพเชทเชพเช“เชจเชพ เชเช•เซ€เช•เชฐเชฃเชฎเชพเช‚ เชธเชพเชฎเซ‡เชฒ เชฅเชฏเซ‹ เช›เซเช‚. เชนเซเช‚ เชœเซ‡เชฐเซ‡เชฎเซ€ เชธเซ€เช• เช…เชจเซ‡ เชตเชพเชฒเชฟเชฆ เชคเชพเชนเชพ เชฆเซเชตเชพเชฐเชพ เช…เชจเซ‡ เชŸเชพเชˆเชชเซเชก เชฐเซ‡เช•เซ‡เชŸ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฆเซเชตเชพเชฐเชพ เช‡เชจเซเช•เซเชฐเซ€เชฎเซ‡เชจเซเชŸเชฒ เชŸเชพเช‡เชชเชฟเช‚เช— เชชเชฐเชจเชพ เชฒเซ‡เช–เชฅเซ€ เชชเซเชฐเซ‡เชฐเชฟเชค เชฅเชฏเซ‹ เชนเชคเซ‹. เชฎเซ‡เช‚ เชตเชฟเชตเชฟเชง เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธ เชฎเชพเชŸเซ‡ เชธเชฎเชพเชจ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชฒเซ‡เช‚เช—เซเชตเซ‡เชœเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชฐเซ€เชคเซ‹ เชถเซ‹เชงเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹ - เชจเชพเชจเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹เชฅเซ€ เชฒเชˆเชจเซ‡ เช•เซ‹เชก เชฌเซ‡เช เชธเซเชงเซ€ เชœเซ‡เชฎเชพเช‚ เชฒเชพเช–เซ‹ เชฒเซ€เชŸเซ€เช“เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡. เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, เชนเซเช‚ เช เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชนเชคเซ‹ เช•เซ‡ เช•เซ‹เชˆเชชเชฃ เชธเซเช•เซ‡เชฒเชจเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚, เชตเซเชฏเช•เซเชคเชฟเช เช–เซ‚เชฌ เชฎเซ‹เชŸเซ€ เชธเชฎเชœเซ‚เชคเซ€ เช•เชฐเชตเซ€ เชจ เชชเชกเซ‡. เช† เชฌเชงเชพเชจเซ‹ เชเช• เชฎเชนเชคเซเชตเชจเซ‹ เชญเชพเช— เช เชนเชคเซ‹ เช•เซ‡ เชŸเชพเช‡เชช เชจ เช•เชฐเซ‡เชฒเชพ เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชช เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚เชฅเซ€ เช•เซเชฐเชฎเชถเชƒ เชตเซเชฏเชพเชชเช• เชฐเซ€เชคเซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชพเชฏเซ‡เชฒ เชธเซเชŸเซ‡เชŸเชฟเช•เชฒเซ€ เชŸเชพเช‡เชช เช•เชฐเซ‡เชฒเชพ เชซเชฟเชจเชฟเชถเซเชก เชชเซเชฐเซ‹เชกเช•เซเชŸ เชคเชฐเชซ เช†เช—เชณ เชตเชงเชตเชพเชจเซ‹ เชตเชฟเชšเชพเชฐ เชนเชคเซ‹. เช† เชฆเชฟเชตเชธเซ‹เชฎเชพเช‚, เช† เชตเชฟเชšเชพเชฐเซ‹เชจเซ‡ เชฎเซ‹เชŸเชพเชญเชพเช—เซ‡ เชฎเช‚เชœเซ‚เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ 2010 เชฎเชพเช‚ เชคเซ‡ เชเช• เชธเชฎเชธเซเชฏเชพ เชนเชคเซ€ เชœเซ‡ เชนเชœเซ€ เชชเชฃ เชธเช•เซเชฐเชฟเชฏเชชเชฃเซ‡ เชถเซ‹เชงเชพเชˆ เชฐเชนเซ€ เชนเชคเซ€.

เชชเซเชฐเช•เชพเชฐ เชคเชชเชพเชธเชฎเชพเช‚ เชฎเชพเชฐเซเช‚ เชฎเซ‚เชณ เช•เชพเชฐเซเชฏ เชชเชพเชฏเชฅเซ‹เชจเชจเซ‡ เชฒเช•เซเชทเซเชฏเชฎเชพเช‚ เชฐเชพเช–เชคเซเช‚ เชจ เชนเชคเซเช‚. เชคเซ‡เชจเชพ เชฌเชฆเชฒเซ‡, เชฎเซ‡เช‚ เชจเชพเชจเซ€ "เชนเซ‹เชฎเชฎเซ‡เช‡เชก" เชญเชพเชทเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เช…เชฒเซ‹เชฐเซ‡. เช…เชนเซ€เช‚ เชเช• เช‰เชฆเชพเชนเชฐเชฃ เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ เชธเชฎเชœเชตเชพ เชฆเซ‡เชถเซ‡ เช•เซ‡ เช…เชฎเซ‡ เชถเซ‡เชจเชพ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช (เชŸเชพเชˆเชช เชเชจเซ‹เชŸเซ‡เชถเชจ เช…เชนเซ€เช‚ เชตเซˆเช•เชฒเซเชชเชฟเช• เช›เซ‡):

def Fib(n as Int) as Int
  if n <= 1
    return n
  else
    return Fib(n - 1) + Fib(n - 2)
  end
end

เชเช• เชธเชฐเชณ เชฎเซ‚เชณ เชญเชพเชทเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช เชตเซˆเชœเซเชžเชพเชจเชฟเช• เชธเช‚เชถเซ‹เชงเชจเชฎเชพเช‚ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเซ‹ เชธเชพเชฎเชพเชจเซเชฏ เช…เชญเชฟเช—เชฎ เช›เซ‡. เช† เชเชŸเชฒเชพ เชฎเชพเชŸเซ‡ เช›เซ‡, เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชเชŸเชฒเชพ เชฎเชพเชŸเซ‡ เชจเชนเซ€เช‚ เช•เซ‡ เชคเซ‡ เชคเชฎเชจเซ‡ เชเชกเชชเชฅเซ€ เชชเซเชฐเชฏเซ‹เช—เซ‹ เช•เชฐเชตเชพ เชฆเซ‡ เช›เซ‡, เช…เชจเซ‡ เช เชชเชฃ เชนเช•เซ€เช•เชคเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช•เซ‡ เชœเซ‡เชจเซ‡ เช…เชญเซเชฏเชพเชธ เชธเชพเชฅเซ‡ เช•เซ‹เชˆ เชฒเซ‡เชตเชพเชฆเซ‡เชตเชพ เชจเชฅเซ€ เชคเซ‡เชจเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เช…เชตเช—เชฃเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชตเชพเชธเซเชคเชตเชฟเช•-เชตเชฟเชถเซเชต เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพเช“ เชœเชŸเชฟเชฒ เช…เชฎเชฒเซ€เช•เชฐเชฃเซ‹ เชธเชพเชฅเซ‡ เชฎเซ‹เชŸเชพ เชชเชพเชฏเซ‡ เช…เชธเชพเชงเชพเชฐเชฃ เช˜เชŸเชจเชพ เชนเซ‹เชฏ เช›เซ‡, เช…เชจเซ‡ เช† เชชเซเชฐเชฏเซ‹เช—เชจเซ‡ เชงเซ€เชฎเซเช‚ เช•เชฐเซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชธเชฐเชณ เชญเชพเชทเชพ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช•เซ‹เชˆเชชเชฃ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชฅเซ‹เชกเชพ เชถเช‚เช•เชพเชธเซเชชเชฆ เชฒเชพเช—เซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เช† เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชฎเซ‡เชณเชตเชตเชพเชฎเชพเช‚ เชธเช‚เชถเซ‹เชงเช•เซ‡ เชญเชพเชทเชพเช“เชจเชพ เชตเซเชฏเชตเชนเชพเชฐเชฟเช• เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชตเชฟเชšเชพเชฐเชฃเชพเช“เชจเซเช‚ เชฌเชฒเชฟเชฆเชพเชจ เช†เชชเซเชฏเซเช‚ เชนเชถเซ‡.

เช…เชฒเซ‹เชฐ เชฎเชพเชŸเซ‡เชจเซเช‚ เชฎเชพเชฐเซเช‚ เชŸเชพเช‡เชช เชšเซ‡เช•เชฐ เช–เซ‚เชฌ เชœ เช†เชถเชพเชธเซเชชเชฆ เชฒเชพเช—เชคเซเช‚ เชนเชคเซเช‚, เชชเชฐเช‚เชคเซ เชนเซเช‚ เชตเชพเชธเซเชคเชตเชฟเช• เช•เซ‹เชก เชธเชพเชฅเซ‡ เชชเซเชฐเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเซ‡เชจเซ‡ เชšเช•เชพเชธเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชนเชคเซ‹, เชœเซ‡ เชคเชฎเซ‡ เช•เชนเซ€ เชถเช•เซ‹ เช›เซ‹, เช…เชฒเซ‹เชฐเชฎเชพเช‚ เชฒเช–เชพเชฏเซ‡เชฒเซเช‚ เชจ เชนเชคเซเช‚. เชธเชฆเชญเชพเช—เซเชฏเซ‡ เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡, เช…เชฒเซ‹เชฐ เชญเชพเชทเชพ เชฎเซ‹เชŸเซ‡ เชญเชพเช—เซ‡ เชชเชพเชฏเชฅเซ‹เชจ เชœเซ‡เชตเชพ เชœ เชตเชฟเชšเชพเชฐเซ‹ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชนเชคเซ€. เชŸเชพเช‡เชชเชšเซ‡เช•เชฐเชจเซ‡ เชฐเซ€เชฎเซ‡เช• เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡ เชชเซ‚เชฐเชคเซเช‚ เชธเชฐเชณ เชนเชคเซเช‚ เชœเซ‡เชฅเซ€ เชคเซ‡ เชชเชพเชฏเชฅเซ‹เชจเชจเชพ เชธเชฟเชจเซเชŸเซ‡เช•เซเชธ เช…เชจเซ‡ เชธเชฟเชฎเซ‡เชจเซเชŸเชฟเช•เซเชธ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เซ‡. เช†เชจเชพเชฅเซ€ เช…เชฎเชจเซ‡ เช“เชชเชจ เชธเซ‹เชฐเซเชธ เชชเชพเชฏเชฅเซ‹เชจ เช•เซ‹เชกเชฎเชพเช‚ เชŸเชพเช‡เชช เชšเซ‡เช• เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เชฎเชณเซ€. เช† เช‰เชชเชฐเชพเช‚เชค, เชฎเซ‡เช‚ เช…เชฒเซ‹เชฐเชฎเชพเช‚ เชฒเช–เซ‡เชฒเชพ เช•เซ‹เชกเชจเซ‡ เชชเชพเชฏเชฅเซ‹เชจ เช•เซ‹เชกเชฎเชพเช‚ เช•เชจเซเชตเชฐเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชŸเซเชฐเชพเชจเซเชธเชชเชฟเชฒเชฐ เชฒเช–เซเชฏเซเช‚ เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฎเชพเชฐเชพ เชŸเชพเช‡เชชเชšเซ‡เช•เชฐ เช•เซ‹เชกเชจเซ‡ เช…เชจเซเชตเชพเชฆเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เชฐเซเชฏเซ‹. เชนเชตเซ‡ เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ เชฒเช–เซ‡เชฒเซ€ เชเช• เชŸเชพเช‡เชช เชšเซ‡เช•เชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชนเชคเซ€ เชœเซ‡ เชชเชพเชฏเชฅเซ‹เชจเชจเชพ เชธเชฌเชธเซ‡เชŸเชจเซ‡ เชŸเซ‡เช•เซ‹ เช†เชชเซ‡ เช›เซ‡, เชคเซ‡ เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเซ€ เชญเชพเชทเชพ! (เช•เซ‡เชŸเชฒเชพเช• เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชฒ เชจเชฟเชฐเซเชฃเชฏเซ‹ เชœเซ‡ เช…เชฒเซ‹เชฐ เชฎเชพเชŸเซ‡ เช…เชฐเซเชฅเชชเซ‚เชฐเซเชฃ เชนเชคเชพ เชคเซ‡ เชชเชพเชฏเชฅเซ‹เชจ เชฎเชพเชŸเซ‡ เช–เชฐเชพเชฌ เชฐเซ€เชคเซ‡ เช…เชจเซเช•เซ‚เชณ เชนเชคเชพ, เช…เชจเซ‡ เช† เชนเชœเซ เชชเชฃ mypy เช•เซ‹เชกเชฌเซ‡เชเชจเชพ เชญเชพเช—เซ‹เชฎเชพเช‚ เชจเซ‹เช‚เชงเชจเซ€เชฏ เช›เซ‡.)

เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เชฎเชพเชฐเซ€ เชŸเชพเช‡เชช เชธเชฟเชธเซเชŸเชฎ เชฆเซเชตเชพเชฐเชพ เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เชญเชพเชทเชพเชจเซ‡ เช† เชธเชฎเชฏเซ‡ เชชเชพเชฏเชฅเซ‹เชจ เช•เชนเซ€ เชถเช•เชพเชฏ เชจเชนเซ€เช‚: เชคเซ‡ เชชเชพเชฏเชฅเซ‹เชจ 3 เชŸเชพเช‡เชช เชเชจเซ‹เชŸเซ‡เชถเชจ เชธเชฟเชจเซเชŸเซ‡เช•เซเชธเชจเซ€ เช•เซ‡เชŸเชฒเซ€เช• เชฎเชฐเซเชฏเชพเชฆเชพเช“เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชชเชพเชฏเชฅเซ‹เชจเชจเซ‹ เชเช• เชชเซเชฐเช•เชพเชฐ เชนเชคเซ‹.

เชคเซ‡ เชœเชพเชตเชพ เช…เชจเซ‡ เชชเชพเชฏเชฅเซ‹เชจเชจเชพ เชฎเชฟเชถเซเชฐเชฃ เชœเซ‡เชตเซเช‚ เชฒเชพเช—เชคเซเช‚ เชนเชคเซเช‚:

int fib(int n):
    if n <= 1:
        return n
    else:
        return fib(n - 1) + fib(n - 2)

เชคเซ‡ เชธเชฎเชฏเซ‡ เชฎเชพเชฐเชพ เชตเชฟเชšเชพเชฐเซ‹เชฎเชพเช‚เชฅเซ€ เชเช• เช† เชชเซเชฐเช•เชพเชฐเชจเชพ เชชเชพเชฏเชฅเซ‹เชจเชจเซ‡ C, เช…เชฅเชตเชพ เช•เชฆเชพเชš JVM เชฌเชพเช‡เชŸเช•เซ‹เชกเชจเซ‡ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชจเชจเซ‡ เชธเซเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡ เชŸเชพเช‡เชช เชเชจเซ‹เชŸเซ‡เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เชนเชคเซ‹. เชนเซเช‚ เช•เชฎเซเชชเชพเช‡เชฒเชฐ เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชช เชฒเช–เชตเชพเชจเชพ เชคเชฌเช•เซเช•เซ‡ เชชเชนเซ‹เช‚เชšเซเชฏเซ‹, เชชเชฐเช‚เชคเซ เชฎเซ‡เช‚ เช† เชตเชฟเชšเชพเชฐ เช›เซ‹เชกเซ€ เชฆเซ€เชงเซ‹, เช•เชพเชฐเชฃ เช•เซ‡ เชŸเชพเช‡เชช เชšเซ‡เช•เชฟเช‚เช— เชชเซ‹เชคเซ‡ เชœ เช–เซ‚เชฌ เช‰เชชเชฏเซ‹เช—เซ€ เชฒเชพเช—เชคเซเช‚ เชนเชคเซเช‚.

เชฎเซ‡เช‚ เชธเชพเชจเซเชŸเชพ เช•เซเชฒเซ‡เชฐเชพเชฎเชพเช‚ PyCon 2013เชฎเชพเช‚ เชฎเชพเชฐเซ‹ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฐเชœเซ‚ เช•เชฐเซเชฏเซ‹. เชฎเซ‡เช‚ เช† เชตเชฟเชถเซ‡ เชœเซ€เชตเชจ เชฎเชพเชŸเซ‡ เชชเชฐเซ‹เชชเช•เชพเชฐเซ€ เชชเชพเชฏเชฅเซ‹เชจ เชธเชฐเชฎเซเช–เชคเซเชฏเชพเชฐ เช—เชฟเชกเซ‹ เชตเชพเชจ เชฐเซ‹เชธเชฎ เชธเชพเชฅเซ‡ เชชเชฃ เชตเชพเชค เช•เชฐเซ€. เชคเซ‡เชฃเซ‡ เชฎเชจเซ‡ เชฎเชพเชฐเซ‹ เชชเซ‹เชคเชพเชจเซ‹ เชตเชพเช•เซเชฏเชฐเชšเชจเชพ เช›เซ‹เชกเชตเชพ เช…เชจเซ‡ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชชเชพเชฏเชฅเซ‹เชจ 3 เชตเชพเช•เซเชฏเชฐเชšเชจเชพ เชธเชพเชฅเซ‡ เชตเชณเช—เซ€ เชฐเชนเซ‡เชตเชพ เชฎเชพเชŸเซ‡ เช–เชพเชคเชฐเซ€ เช†เชชเซ€. เชชเชพเชฏเชฅเซ‹เชจ 3 เชซเช‚เช•เซเชถเชจ เชเชจเซ‹เชŸเซ‡เชถเชจเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เชฎเชพเชฐเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ เชจเซ€เชšเซ‡ เชฌเชคเชพเชตเซเชฏเชพ เชชเซเชฐเชฎเชพเชฃเซ‡ เชซเชฐเซ€เชฅเซ€ เชฒเช–เซ€ เชถเช•เชพเชฏ เช›เซ‡, เชชเชฐเชฟเชฃเชพเชฎเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชชเชพเชฏเชฅเซ‹เชจ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชฅเชพเชฏ เช›เซ‡:

def fib(n: int) -> int:
    if n <= 1:
        return n
    else:
        return fib(n - 1) + fib(n - 2)

เชฎเชพเชฐเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชธเชฎเชพเชงเชพเชจ เช•เชฐเชตเชพ เชชเชกเซเชฏเชพ เชนเชคเชพ (เชธเซŒ เชชเซเชฐเชฅเชฎ, เชนเซเช‚ เช เชจเซ‹เช‚เชงเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚ เช•เซ‡ เชฎเซ‡เช‚ เช† เชœ เช•เชพเชฐเชฃเชธเชฐ เชฎเชพเชฐเซ€ เชชเซ‹เชคเชพเชจเซ€ เชตเชพเช•เซเชฏเชฐเชšเชจเชพ เชถเซ‹เชง เช•เชฐเซ€ เช›เซ‡). เช–เชพเชธ เช•เชฐเซ€เชจเซ‡, เชชเชพเชฏเชฅเซ‹เชจ 3.3, เชคเซ‡ เชธเชฎเชฏเซ‡ เชญเชพเชทเชพเชจเซเช‚ เชธเซŒเชฅเซ€ เชคเชพเชœเซ‡เชคเชฐเชจเซเช‚ เชธเช‚เชธเซเช•เชฐเชฃ, เชšเชฒ เชเชจเซ‹เชŸเซ‡เชถเชจเชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเชคเซเช‚ เชจเชฅเซ€. เชฎเซ‡เช‚ เช†เชตเชพ เชŸเซ€เช•เชพเช“เชจเซ€ เชธเชฟเชจเซเชŸเซ‡เช•เซเชŸเชฟเช• เชกเชฟเชเชพเช‡เชจ เชฎเชพเชŸเซ‡เชจเซ€ เชตเชฟเชตเชฟเชง เชถเช•เซเชฏเชคเชพเช“ เชตเชฟเชถเซ‡ เชˆ-เชฎเซ‡เชฒ เชฆเซเชตเชพเชฐเชพ เช—เชพเชˆเชกเซ‹ เชธเชพเชฅเซ‡ เชšเชฐเซเชšเชพ เช•เชฐเซ€. เช…เชฎเซ‡ เชšเชฒ เชฎเชพเชŸเซ‡ เชŸเชพเชˆเชช เช•เซ‹เชฎเซ‡เชจเซเชŸเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚. เช†เชจเชพเชฅเซ€ เช‡เชšเซเช›เชฟเชค เชนเซ‡เชคเซ เชชเซ‚เชฐเซ‹ เชฅเชฏเซ‹, เชชเชฐเช‚เชคเซ เชคเซ‡ เช•เช‚เชˆเช• เช…เช‚เชถเซ‡ เชฌเซ‹เชœเชพเชฐเซ‚เชช เชนเชคเซเช‚ (เชชเชพเชฏเชฅเซ‹เชจ 3.6 เช เช…เชฎเชจเซ‡ เชเช• เชธเชฐเชธ เชธเชฟเชจเซเชŸเซ‡เช•เซเชธ เช†เชชเซเชฏเซ‹):

products = []  # type: List[str]  # Eww

Python 2 เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชŸเชพเชˆเชช เช•เซ‹เชฎเซ‡เชจเซเชŸเซเชธ เชชเชฃ เช•เชพเชฎเชฎเชพเช‚ เช†เชตเซ€, เชœเซ‡เชฎเชพเช‚ เชŸเชพเชˆเชช เชเชจเซ‹เชŸเซ‡เชถเชจ เชฎเชพเชŸเซ‡ เชฌเชฟเชฒเซเชŸ-เชˆเชจ เชธเชชเซ‹เชฐเซเชŸ เชจเชฅเซ€:

f fib(n):
    # type: (int) -> int
    if n <= 1:
        return n
    else:
        return fib(n - 1) + fib(n - 2)

เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เช† (เช…เชจเซ‡ เช…เชจเซเชฏ) เชŸเซเชฐเซ‡เชก-เช“เชซเซเชธเชฅเซ€ เช–เชฐเซ‡เช–เชฐ เช•เซ‹เชˆ เชซเชฐเช• เชชเชกเชคเซ‹ เชจเชฅเซ€ - เชธเซเชฅเชฟเชฐ เชŸเชพเชˆเชชเชฟเช‚เช—เชจเชพ เชซเชพเชฏเชฆเชพเช“เชจเซ‹ เช…เชฐเซเชฅ เช เชฅเชฏเซ‹ เช•เซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชŸเซ‚เช‚เช• เชธเชฎเชฏเชฎเชพเช‚ เช†เชฆเชฐเซเชถ เช•เชฐเชคเชพเช‚ เช“เช›เชพ เชตเชพเช•เซเชฏเชฐเชšเชจเชพ เชตเชฟเชถเซ‡ เชญเซ‚เชฒเซ€ เช—เชฏเชพ. เชŸเชพเช‡เชช-เชšเซ‡เช• เช•เชฐเซ‡เชฒเชพ เชชเชพเชฏเชฅเซ‹เชจ เช•เซ‹เชกเชฎเชพเช‚ เช•เซ‹เชˆ เช–เชพเชธ เชธเชฟเชจเซเชŸเซ‡เช•เซเชŸเชฟเช• เช•เชจเซเชธเซเชŸเซเชฐเช•เซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชจ เชนเซ‹เชตเชพเชฅเซ€, เชนเชพเชฒเชจเชพ เชชเชพเชฏเชฅเซ‹เชจ เชŸเซ‚เชฒเซเชธ เช…เชจเซ‡ เช•เซ‹เชก เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เซเชฏเซเช‚ เช›เซ‡, เชœเซ‡ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชฎเชพเชŸเซ‡ เชจเชตเซเช‚ เชŸเซ‚เชฒ เชถเซ€เช–เชตเชพเชจเซเช‚ เชตเชงเซ เชธเชฐเชณ เชฌเชจเชพเชตเซ‡ เช›เซ‡.

เชฎเซ‡เช‚ เชฎเชพเชฐเซ€ เช—เซเชฐเซ‡เชœเซเชฏเซเชเชŸ เชฅเซ€เชธเซ€เชธ เชชเซ‚เชฐเซเชฃ เช•เชฐเซ€ เชฒเซ€เชงเชพ เชชเช›เซ€ เช—เชพเชˆเชกเซ‹เช เชฎเชจเซ‡ เชกเซเชฐเซ‰เชชเชฌเซ‰เช•เซเชธเชฎเชพเช‚ เชœเซ‹เชกเชพเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฃ เชธเชฎเชœเชพเชตเซเชฏเซเช‚. เชฎเชพเชฏเชชเซ€ เชตเชพเชฐเซเชคเชพเชจเซ‹ เชธเซŒเชฅเซ€ เชฐเชธเชชเซเชฐเชฆ เชญเชพเช— เช…เชนเซ€เช‚เชฅเซ€ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡.

เชšเชพเชฒเซ เชฐเชนเซ€ เชถเช•เชพเชฏโ€ฆ

เชชเซเชฐเชฟเชฏ เชตเชพเชšเช•เซ‹! เชœเซ‹ เชคเชฎเซ‡ Python เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เช…เชฎเชจเซ‡ เช† เชญเชพเชทเชพเชฎเชพเช‚ เชคเชฎเซ‡ เชตเชฟเช•เชธเชพเชตเซ‡เชฒเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เชธเซเช•เซ‡เชฒ เชตเชฟเชถเซ‡ เชœเชฃเชพเชตเซ‹.

Python เช•เซ‹เชกเชจเซ€ 4 เชฎเชฟเชฒเชฟเชฏเชจ เชฒเซ€เชŸเซ€เช“ เชŸเชพเช‡เชชเชšเซ‡เช• เช•เชฐเชตเชพเชจเซ‹ เชฎเชพเชฐเซเช—. เชญเชพเช— 1
Python เช•เซ‹เชกเชจเซ€ 4 เชฎเชฟเชฒเชฟเชฏเชจ เชฒเซ€เชŸเซ€เช“ เชŸเชพเช‡เชชเชšเซ‡เช• เช•เชฐเชตเชพเชจเซ‹ เชฎเชพเชฐเซเช—. เชญเชพเช— 1

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹