เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบชเบนเปˆเบเบฒเบ™เบžเบดเบกเบฅเบฐเบซเบฑเบ” 4 เบฅเป‰เบฒเบ™เปเบ–เบงเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” Python. เบžเบฒเบเบ—เบต 1

เบกเบทเป‰เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเบกเบฒเปƒเบซเป‰เบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบชเปˆเบงเบ™เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เปเบ›เบ‚เบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™ Dropbox เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ›เบฐเป€เบžเบ”เบฅเบฐเบซเบฑเบ” Python.

เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบชเบนเปˆเบเบฒเบ™เบžเบดเบกเบฅเบฐเบซเบฑเบ” 4 เบฅเป‰เบฒเบ™เปเบ–เบงเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” Python. เบžเบฒเบเบ—เบต 1

Dropbox เบ‚เบฝเบ™เบซเบผเบฒเบเปƒเบ™ Python. เบกเบฑเบ™เป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เบ—เบตเปˆเบชเบธเบ”, เบ—เบฑเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ back-end เปเบฅเบฐเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบฅเบนเบเบ„เป‰เบฒ desktop. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เปƒเบŠเป‰ Go, TypeScript เปเบฅเบฐ Rust เบซเบผเบฒเบ, เปเบ•เปˆ Python เปเบกเปˆเบ™เบžเบฒเบชเบฒเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบฅเบฐเบซเบฑเบ” Python เบซเบผเบฒเบเบฅเป‰เบฒเบ™เบชเบฒเบ, เบกเบฑเบ™เป„เบ”เป‰เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เบžเบดเบกเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเบ‚เบญเบ‡เบกเบฑเบ™เบชเบฑเบšเบชเบปเบ™เป‚เบ”เบเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เปเบฅเบฐเป€เบฅเบตเปˆเบกเบชเบปเปˆเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบเบฒเบ™เบœเบฐเบฅเบดเบ”เปเบฎเบ‡เบ‡เบฒเบ™. เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบšเบฑเบ™เบซเบฒเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ„เปˆเบญเบเป†เบ›เปˆเบฝเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เบ„เบปเบ‡เบ—เบตเปˆเป‚เบ”เบเปƒเบŠเป‰ mypy. เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ” standalone เบ—เบตเปˆเบ™เบดเบเบปเบกเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบš Python. Mypy เปเบกเปˆเบ™เป‚เบ„เบ‡เบเบฒเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”, เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™ Dropbox.

Dropbox เปเบกเปˆเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบšเปเบฅเบดเบชเบฑเบ”เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เบ„เบปเบ‡เบ—เบตเปˆเปƒเบ™เบฅเบฐเบซเบฑเบ” Python เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ™เบตเป‰. Mypy เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบซเบฅเบฒเบเบžเบฑเบ™เป‚เบ„เบ‡เบเบฒเบ™เปƒเบ™เบกเบทเป‰เบ™เบตเป‰. เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ™เบตเป‰เบ™เบฑเบšเบšเปเปˆเบ–เป‰เบงเบ™, เบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเป€เบงเบปเป‰เบฒเบงเปˆเบฒ, "เบ–เบทเบเบ—เบปเบ”เบชเบญเบšเปƒเบ™เบเบฒเบ™เบชเบนเป‰เบฎเบปเบš." เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบกเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ—เบฒเบ‡โ€‹เบเบฒเบงโ€‹เป€เบžเบทเปˆเบญโ€‹เป„เบ›โ€‹เบšเปˆเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบ›เบฑเบ”โ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹. เบ„เบฝเบ‡เบ„เบนเปˆเบเบฑเบ™เบ™เบฑเป‰เบ™, เป„เบ”เป‰เบกเบตเบเบฒเบ™เบ”เบณเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ—เบตเปˆเบšเปเปˆเบชเบณเป€เบฅเบฑเบ” เปเบฅเบฐ เบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเบณเป€เบฅเบฑเบ”เบซเบผเบฒเบเบขเปˆเบฒเบ‡. เบ‚เปเป‰เบ„เบงเบฒเบกเบ™เบตเป‰เบเบงเบกเป€เบญเบปเบฒเบ›เบฐเบซเบงเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เบ„เบปเบ‡เบ—เบตเปˆเปƒเบ™ Python, เบ•เบฑเป‰เบ‡เปเบ•เปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเป‚เบ‡เปˆเบˆเป‰เบฒเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ„เบปเป‰เบ™เบ„เป‰เบงเบฒเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบˆเบปเบ™เป€เบ–เบดเบ‡เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เป€เบกเบทเปˆเบญเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เปเบฅเบฐเบเบฒเบ™เบŠเบตเป‰เบšเบญเบเบ›เบฐเป€เบžเบ”เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ›เบปเบเบเบฐเบ•เบดเบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ™เบฑเบšเบšเปเปˆเบ–เป‰เบงเบ™เบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ Python. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบเบปเบ™เป„เบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเป€เบŠเบฑเปˆเบ™: IDEs เปเบฅเบฐเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบฑเบ”.

โ†’ เบญเปˆเบฒเบ™เบžเบฒเบเบ—เบตเบชเบญเบ‡

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เบˆเบถเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™?

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบ„เบตเบเปƒเบŠเป‰ Python เบ—เบตเปˆเบžเบดเบกเปเบšเบšเป„เบ”เบ™เบฒเบกเบดเบ, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบกเบตเบ„เบงเบฒเบกเบชเบฑเบšเบชเบปเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบกเบฑเบ™เบˆเบถเปˆเบ‡เบกเบตเบ„เบงเบฒเบกเบงเบธเป‰เบ™เบงเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบžเบดเบกเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเปเบฅเบฐ mypy เบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰. เบซเบผเบทเบšเบฒเบ‡เบ—เบตเป€เบˆเบปเป‰เบฒเบกเบฑเบ Python เบŠเบฑเบ”เป€เบˆเบ™เบเป‰เบญเบ™เบเบฒเบ™เบžเบดเบกเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ‚เบญเบ‡เบกเบฑเบ™, เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบžเบฝเบ‡เปเบ•เปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบˆเบปเป‰เบฒเป€เบชเบเปƒเบˆ. เบเบธเบ™เปเบˆเบชเปเบฒเบฅเบฑเบšเบกเบนเบ™เบ„เปˆเบฒเบ‚เบญเบ‡เบเบฒเบ™เบžเบดเบกเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเปเบกเปˆเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚: เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบซเบเปˆเบเบงเปˆเบฒ, เบซเบผเบฒเบเบ—เปˆเบฒเบ™เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบžเบดเบกเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ, เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบชเบธเบ”, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบกเบฑเบ™เบซเบผเบฒเบ.

เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเป‚เบ„เบ‡เบเบฒเบ™เบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡เป„เบ”เป‰เบšเบฑเบ™เบฅเบธเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบชเบดเบšเบžเบฑเบ™เบชเบฒเบ, เปเบฅเบฐเบกเบฑเบ™เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเบงเปˆเบฒเบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบกเบฑเบ™. เบŠเบญเบเบซเบฒเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เบญเบตเบ‡เบ•เบฒเบกเบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบงเบปเป‰เบฒเป„เบ”เป‰เบงเปˆเบฒเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบเบธเบ™เปเบˆเบชเปเบฒเบ„เบฑเบ™เปƒเบ™เบเบฒเบ™เบฎเบฑเบเบชเบฒเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ. เป‚เบ”เบเบšเปเปˆเบกเบตเบ„เปเบฒเบšเบฑเบ™เบเบฒเบเบ›เบฐเป€เบžเบ”, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบ„เบดเบ”เบญเบญเบ, เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เป‚เบ•เป‰เปเบเป‰เบ‡เปƒเบ”เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เบ•เปเปˆเบเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™, เบซเบผเบทเบ›เบฐเป€เบžเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเปƒเบ”เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบเบฑเบšเบ„เบทเบ™เบกเบฒเป„เบ”เป‰. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบณเบ–เบฒเบกเบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบกเบฑเบเบˆเบฐเบ•เบญเบšเป„เบ”เป‰เบเบฒเบเป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เปƒเบŠเป‰เบ„เบณเบญเบฐเบ—เบดเบšเบฒเบเบ›เบฐเป€เบžเบ”:

  • เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เบเบฑเบšเบ„เบทเบ™เบกเบฒเป„เบ”เป‰ None?
  • เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”? items?
  • เบ›เบฐเป€เบžเบ”เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเปเบกเปˆเบ™เบซเบเบฑเบ‡ id: int เบกเบฑเบ™โ€‹เปเบกเปˆเบ™, str, เบซเบผเบทเบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบเปเบฒเบซเบ™เบปเบ”เป€เบญเบ‡?
  • เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบšเป? เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบœเปˆเบฒเบ™ tuple เบเบฑเบšเบกเบฑเบ™เบšเป?

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡ snippet เบฅเบฐเบซเบฑเบ”เบ›เบฐเป€เบžเบ”เบ•เปเปˆเป„เบ›เบ™เบตเป‰เปเบฅเบฐเบžเบฐเบเบฒเบเบฒเบกเบ•เบญเบšเบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เบกเบฑเบ™เบˆเบฐเบ›เบฒเบเบปเบ”เบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบงเบฝเบเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”:

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

  • read_metadata เบšเปเปˆเบเบฑเบšเบ„เบทเบ™เบกเบฒ None, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ›เบฐเป€เบžเบ”เบเบฑเบšเบ„เบทเบ™เบšเปเปˆเปเบกเปˆเบ™ Optional[โ€ฆ].
  • เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ items เปเบกเปˆเบ™เบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบชเบฒเบ. เบกเบฑเบ™โ€‹เบšเปเปˆโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เป‚เบ”เบโ€‹เบชเบธเปˆเบกโ€‹.
  • เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ id เปเบกเปˆเบ™เบชเบฒเบเบ‚เบญเบ‡ bytes.

เปƒเบ™เป‚เบฅเบเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เบ„เบปเบ™เป€เบฎเบปเบฒเบ„เบฒเบ”เบซเบงเบฑเบ‡เบงเปˆเบฒ subtleties เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™ (docstring). เปเบ•เปˆเบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบซเป‰เบ•เบปเบงเบขเปˆเบฒเบ‡เบซเบผเบฒเบเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเป€เบญเบเบฐเบชเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบกเบฑเบเบˆเบฐเบšเปเปˆเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เปƒเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบงเบฝเบ. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเป€เบญเบเบฐเบชเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบกเบตเบขเบนเปˆเปƒเบ™เบฅเบฐเบซเบฑเบ”, เบ„เบปเบ™เป€เบฎเบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ™เบฑเบšเป„เบ”เป‰เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เบ‚เบญเบ‡เบกเบฑเบ™. เป€เบญเบเบฐเบชเบฒเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบšเปเปˆเบˆเบฐเปเบˆเป‰เบ‡, เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เปเบฅเบฐเป€เบ›เบตเบ”เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเปƒเบˆเบœเบดเบ”. เปƒเบ™เบ—เบตเบกเบ‡เบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบผเบทเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบเบฒเบเป€เบ›เบฑเบ™เบชเป‰เบงเบเปเบซเบผเบกเบ—เบตเปˆเบชเบธเบ”.

เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ Python เบ”เบตเป€เบฅเบตเบ”เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบซเบผเบทเป„เบฅเบเบฐเบเบฒเบ‡เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™, เปƒเบ™เบšเบฒเบ‡เบˆเบธเบ”เบ—เบตเปˆเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบฅเบฐเบšเปเบฅเบดเบชเบฑเบ”เบ—เบตเปˆเปƒเบŠเป‰ Python เบญเบฒเบ”เบˆเบฐเบ›เบฐเป€เบŠเบตเบ™เบเบฑเบšเบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™: "เบžเบงเบเป€เบฎเบปเบฒเบ„เบงเบ™เบ‚เบฝเบ™เบ„เบทเบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปƒเบ™เบžเบฒเบชเบฒเบ—เบตเปˆเบžเบดเบกเบชเบฐเบ–เบดเบ•เบด?".

เบฅเบฐเบšเบปเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เป€เบŠเบฑเปˆเบ™ mypy เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เป‚เบ”เบเบเบฒเบ™เปƒเบซเป‰เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเบฐเบ—เบดเบšเบฒเบเบ›เบฐเป€เบžเบ”, เปเบฅเบฐเป‚เบ”เบเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบ›เบฐเป€เบžเบ”เบ™เบฑเป‰เบ™เบเบปเบ‡เบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™ (เปเบฅเบฐ, เบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เป‚เบ”เบเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบกเบตเบขเบนเปˆเบ‚เบญเบ‡เบกเบฑเบ™). เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบง, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบงเบปเป‰เบฒเป„เบ”เป‰เบงเปˆเบฒเบฅเบฐเบšเบปเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบˆเบฑเบ”เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™: เป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆเบ–เบทเบเบเบงเบ”เบชเบญเบšเบขเปˆเบฒเบ‡เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡.

เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เป„เบ”เป‰โ€‹เบ›เบฝเบšโ€‹เบญเบทเปˆเบ™เป†โ€‹, เปเบฅเบฐโ€‹เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เปเบกเปˆเบ™โ€‹เปเบฅเป‰เบงโ€‹เบšเปเปˆโ€‹เปเบกเปˆเบ™ trivialโ€‹:

  • เบฅเบฐเบšเบปเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เบชเบฒเบกเบฒเบ”เบเบงเบ”เบžเบปเบšเบšเบฒเบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ” (เปเบฅเบฐเบšเปเปˆเบ™เป‰เบญเบ). เบ•เบปเบงเบขเปˆเบฒเบ‡เบ›เบปเบเบเบฐเบ•เบดเปเบกเปˆเบ™เป€เบกเบทเปˆเบญเบžเบงเบเป€เบ‚เบปเบฒเบฅเบทเบกเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ„เปˆเบฒ None เบซเบผเบทเบšเบฒเบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบžเบดเป€เบชเบ”เบญเบทเปˆเบ™เป†.
  • เบเบฒเบ™เปเบเป‰เป„เบ‚เบฅเบฐเบซเบฑเบ”เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบเป€เบžเบฒเบฐเบงเปˆเบฒเบฅเบฐเบšเบปเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เบกเบฑเบเบˆเบฐเบ–เบทเบเบ•เป‰เบญเบ‡เบซเบผเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบฅเบฐเบซเบฑเบ”เบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบซเบงเบฑเบ‡เบงเปˆเบฒเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบฅเบฐเบซเบฑเบ” 100% เบเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš, เป€เบŠเบดเปˆเบ‡, เปƒเบ™เบเปเบฅเบฐเบ™เบตเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเปเบกเปˆเบ™เบšเปเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบˆเบฒเบฐเป€เบฅเบดเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ„เบงเบฒเบกเป€เบฅเบดเบเบ‚เบญเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก stack เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบชเบฒเป€เบซเบ”เบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒ.
  • เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบขเบนเปˆเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, mypy เบกเบฑเบเบˆเบฐเบชเบฒเบกเบฒเบ”เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เป€เบ•เบฑเบกเปƒเบ™เปเบ•เปˆเบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบงเบดเบ™เบฒเบ—เบต. เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเปƒเบŠเป‰เป€เบงเบฅเบฒเบชเบดเบšเบงเบดเบ™เบฒเบ—เบตเบซเบผเบทเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡เบ™เบฒเบ—เบต. เบฅเบฐเบšเบปเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เปƒเบซเป‰เบ„เปเบฒเบ„เบดเบ”เป€เบซเบฑเบ™เบ‚เบญเบ‡เบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ—เบฑเบ™เบ—เบตเปเบฅเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบฅเบฒเบงเป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เป„เบงเบ‚เบถเป‰เบ™. เบฅเบฒเบงเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบ—เบตเปˆเบญเปˆเบญเบ™เปเบญเปเบฅเบฐเบเบฒเบเบ—เบตเปˆเบˆเบฐเบฎเบฑเบเบชเบฒเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ—เบตเปˆเบ›เปˆเบฝเบ™เปเบ—เบ™เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบ”เป‰เบงเบเบเบฒเบ™เป€เบเบฒเบฐเป€เบเบตเป‰เบเปเบฅเบฐ patches เบžเบฝเบ‡เปเบ•เปˆเป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบœเบปเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบฅเบฐเบซเบฑเบ”เป„เบงเบ‚เบถเป‰เบ™.

IDEs เปเบฅเบฐเบšเบฑเบ™เบ™เบฒเบ—เบดเบเบฒเบ™เป€เบŠเบฑเปˆเบ™ PyCharm เบซเบผเบท Visual Studio Code เปƒเบŠเป‰เบญเปเบฒเบ™เบฒเบ”เบ‚เบญเบ‡เบ„เปเบฒเบšเบฑเบ™เบเบฒเบเบ›เบฐเป€เบžเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบตเบฅเบฐเบซเบฑเบ”เบชเปเบฒเป€เบฅเบฑเบ”, เบเบฒเบ™เป€เบ™เบฑเป‰เบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”, เปเบฅเบฐเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบฒเบชเบฒเบ—เบตเปˆเปƒเบŠเป‰เบ—เบปเปˆเบงเป„เบ›. เปเบฅเบฐเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡เบเบฒเบ™เบžเบดเบก. เบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบšเบฒเบ‡เบ„เบปเบ™, เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ•เบปเป‰เบ™เบ•เปเปƒเบ™เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ‚เบญเบ‡เบเบฒเบ™เบžเบดเบก. เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบฑเบ™เบ—เบตเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เบเปเบฅเบฐเบ™เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”เบ™เบตเป‰เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบฅเบฐเบšเบปเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเป€เบŠเบฑเปˆเบ™ mypy, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒ mypy เบŠเปˆเบงเบเปƒเบซเป‰เบ„เปเบฒเบšเบฑเบ™เบเบฒเบเบ›เบฐเป€เบžเบ”เบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบšเบฅเบฐเบซเบฑเบ”.

เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบกเบฒเบ‚เบญเบ‡ mypy

เบ›เบฐเบซเบงเบฑเบ”เบ‚เบญเบ‡ mypy เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™เบญเบฑเบ‡เบเบดเบ”, เปƒเบ™ Cambridge, เบชเบญเบ‡เบชเบฒเบกเบ›เบตเบเปˆเบญเบ™เบ‚เป‰เบญเบเป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบก Dropbox. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบก, เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบ›เบฐเบฅเบดเบ™เบเบฒเป€เบญเบเบ‚เบญเบ‡เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒ, เปƒเบ™เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ‚เบญเบ‡เบžเบฒเบชเบฒเบ—เบตเปˆเบžเบดเบกเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเปเบฅเบฐเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง. เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฑเบšเปเบฎเบ‡เบšเบฑเบ™เบ”เบฒเบ™เปƒเบˆเบˆเบฒเบเบšเบปเบ”เบ„เบงเบฒเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบžเบดเบกเป€เบ—เบทเปˆเบญเบฅเบฐเบเป‰เบฒเบงเป‚เบ”เบ Jeremy Siek เปเบฅเบฐ Walid Taha, เปเบฅเบฐเป‚เบ”เบเป‚เบ„เบ‡เบเบฒเบ™ Typed Racket. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบŠเบญเบเบซเบฒเบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ”เบฝเบงเบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ•เปˆเบฒเบ‡เป† - เบˆเบฒเบเบชเบฐเบ„เบดเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเป„เบ›เบซเบฒเบ–เบฒเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบซเบผเบฒเบเบฅเป‰เบฒเบ™เบชเบฒเบ. เปƒเบ™เบ‚เบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบซเบ™เบถเปˆเบ‡เบˆเบฐเบšเปเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบเบฒเบ™เบ›เบฐเบ™เบตเบ›เบฐเบ™เบญเบกเปƒเบซเบเปˆเป€เบเบตเบ™เป„เบ›. เบžเบฒเบเบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบ„เปˆเบญเบเป†เบเป‰เบฒเบเบˆเบฒเบเป‚เบ„เบ‡เบเบฒเบ™เบ•เบปเป‰เบ™เปเบšเบšเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบžเบดเบกเป„เบ›เบชเบนเปˆเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบฎเบนเบšเบ—เบตเปˆเบžเบดเบกเบ”เป‰เบงเบเบชเบฐเบ–เบดเบ•เบดเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เปเบšเบš. เปƒเบ™เบกเบทเป‰เบ™เบตเป‰, เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบเบญเบกเบฎเบฑเบšเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆ, เปเบ•เปˆเปƒเบ™เบ›เบต 2010 เบกเบฑเบ™เป€เบ›เบฑเบ™เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบเบฑเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ„เบปเป‰เบ™เบ„เป‰เบงเบฒเบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡.

เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบ‚เบญเบ‡เบ‚เป‰เบญเบเปƒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เบšเปเปˆเป„เบ”เป‰เปเบ™เปƒเบชเปˆ Python. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, เบ‚เป‰เบญเบเปƒเบŠเป‰เบžเบฒเบชเบฒ "homemade" เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ Alore. เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบš (เบ„เปเบฒเบšเบฑเบ™เบเบฒเบเบ›เบฐเป€เบžเบ”เปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ™เบตเป‰):

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

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบžเบฒเบชเบฒเบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบงเบดเบ—เบฐเบเบฒเบชเบฒเบ”. เบ™เบตเป‰เปเบกเปˆเบ™เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบšเปเปˆเปเบกเปˆเบ™เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เป„เบ”เป‰เป„เบง, เปเบฅเบฐเบเบฑเบ‡เป€เบ™เบทเปˆเบญเบ‡เบกเบฒเบˆเบฒเบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบชเบถเบเบชเบฒเบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบฐเป€เบฅเบตเบเป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ. เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเปƒเบ™เป‚เบฅเบเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบกเบตเปเบ™เบงเป‚เบ™เป‰เบกเบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเบเบปเบ”เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™, เปเบฅเบฐเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบŠเป‰เบฒเบฅเบปเบ‡. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปƒเบ”เป†เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบžเบฒเบชเบฒเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบกเบตเบ„เบงเบฒเบกเบชเบปเบ‡เปƒเบชเป€เบฅเบฑเบเบ™เป‰เบญเบ, เป€เบžเบฒเบฐเบงเปˆเบฒเบเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบ™เบฑเบเบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เป€เบชเบเบชเบฐเบฅเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบžเบฒเบชเบฒเบ•เบปเบงเบˆเบดเบ‡.

เบ•เบปเบงเบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบเบชเปเบฒเบฅเบฑเบš Alore เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบกเบตเปเบ™เบงเป‚เบ™เป‰เบกเบซเบผเบฒเบ, เปเบ•เปˆเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบกเบฑเบ™เป‚เบ”เบเบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบเบฑเบšเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡, เป€เบŠเบดเปˆเบ‡, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเป€เบงเบปเป‰เบฒเบงเปˆเบฒ, เบšเปเปˆเป„เบ”เป‰เบ‚เบฝเบ™เปƒเบ™ Alore. เป‚เบŠเบเบ”เบตเบชเปเบฒเบฅเบฑเบšเบ‚เป‰เบญเบ, เบžเบฒเบชเบฒ Alore เบชเปˆเบงเบ™เปƒเบซเบเปˆเปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš Python. เบกเบฑเบ™เบ‡เปˆเบฒเบเบžเปเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เป€เบ„เบทเปˆเบญเบ‡เบเบงเบ”เบžเบดเบกเบ„เบทเบ™เปƒเปเปˆเป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบเบฑเบšเป„เบงเบเบฐเบเบญเบ™ เปเบฅเบฐเบ„เบณเบชเบฑเบšเบ‚เบญเบ‡ Python. เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบžเบฐเบเบฒเบเบฒเบกเบžเบดเบกเบเบฒเบ™เบเบงเบ”เบชเบญเบšเปƒเบ™เบฅเบฐเบซเบฑเบ” Python เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ‚เบฝเบ™ transpiler เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ Alore เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ” Python เปเบฅเบฐเปƒเบŠเป‰เบกเบฑเบ™เป€เบžเบทเปˆเบญเปเบ›เบฅเบฐเบซเบฑเบ” typechecker เบ‚เบญเบ‡เบ‚เป‰เบญเบ. เบ”เบฝเบงเบ™เบตเป‰เบ‚เป‰เบญเบเบกเบตเบฅเบฐเบšเบปเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ Python เบ—เบตเปˆเบฎเบญเบ‡เบฎเบฑเบšเบŠเบธเบ”เบเปˆเบญเบเบ‚เบญเบ‡ Python, เบšเบฒเบ‡เบžเบฒเบชเบฒเบ™เบฑเป‰เบ™! (เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบชเปเบฒเบฅเบฑเบš Alore เปเบกเปˆเบ™เบšเปเปˆเบ”เบตเบžเปเบชเปเบฒเบฅเบฑเบš Python, เปเบฅเบฐเบ™เบตเป‰เบเบฑเบ‡เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡ mypy codebase.)

เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบžเบฒเบชเบฒเบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป‚เบ”เบเบฅเบฐเบšเบปเบšเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบญเบตเป‰เบ™เบงเปˆเบฒ Python เปƒเบ™เบˆเบธเบ”เบ™เบตเป‰: เบกเบฑเบ™เปเบกเปˆเบ™เบ•เบปเบงเปเบ›เบ‚เบญเบ‡ Python เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ‚เบญเบ‡ syntax เบ›เบฐเป€เบžเบ” Python 3.

เบกเบฑเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฒเบ™เบ›เบฐเบชเบปเบกเบ‚เบญเบ‡ Java เปเบฅเบฐ Python:

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

เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบเปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบเบฒเบ™เปƒเบŠเป‰เบ„เปเบฒเบšเบฑเบ™เบเบฒเบเบ›เบฐเป€เบžเบ”เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ Python เบ™เบตเป‰เป„เบ›เบซเบฒ C, เบซเบผเบทเบšเบฒเบ‡เบ—เบต JVM bytecode. เบ‚เป‰เบญเบเบกเบฒเบฎเบญเบ”เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฝเบ™เบ•เบปเบงเปเบšเบš compiler, เปเบ•เปˆเบ‚เป‰เบญเบเบ›เบฐเบ–เบดเป‰เบกเบ„เบงเบฒเบกเบ„เบดเบ”เบ™เบตเป‰, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบกเบตเบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบ.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบชเบดเป‰เบ™เบชเบธเบ”เบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบเบขเบนเปˆเบ—เบตเปˆ PyCon 2013 เปƒเบ™ Santa Clara. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบเบฑเบ‡เป„เบ”เป‰เบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เบเบฑเบš Guido van Rossum, เบœเบนเป‰เบšเบฑเบ™เบŠเบฒเบเบฒเบ™ Python เบ—เบตเปˆเปƒเบˆเบ”เบตเบ•เบฐเบซเบผเบญเบ”เบŠเบตเบงเบดเบ”. เบฅเบฒเบงเป„เบ”เป‰เบŠเบฑเบเบŠเบงเบ™เปƒเบซเป‰เบ‚เป‰เบญเบเบฅเบปเบ‡ syntax เบ‚เบญเบ‡เบ‚เป‰เบญเบเป€เบญเบ‡เปเบฅเบฐเบ•เบดเบ”เบเบฑเบš syntax เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ Python 3. Python 3 เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ‚เบฝเบ™เบ„เบทเบ™เปƒเบซเบกเปˆเบ•เบฒเบกเบฎเบนเบšเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰, เบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เป‚เบ„เบ‡เบเบฒเบ™ Python เบ›เบปเบเบเบฐเบ•เบด:

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

เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบเบฒเบ™เบ›เบฐเบ™เบตเบ›เบฐเบ™เบญเบกเบšเบฒเบ‡เบขเปˆเบฒเบ‡ (เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบ‚เป‰เบญเบเบขเบฒเบเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ‚เป‰เบญเบเป„เบ”เป‰เบ›เบฐเบ”เบดเบ” syntax เบ‚เบญเบ‡เบ‚เป‰เบญเบเป€เบญเบ‡เบ”เป‰เบงเบเป€เบซเบ”เบœเบปเบ™เบ™เบตเป‰). เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, Python 3.3, เป€เบงเบตเบŠเบฑเบ™เบซเบผเป‰เบฒเบชเบธเบ”เบ‚เบญเบ‡เบžเบฒเบชเบฒเปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™, เบšเปเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ„เปเบฒเบšเบฑเบ™เบเบฒเบเบ—เบตเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบเบฑเบš Guido เป‚เบ”เบเบ—เบฒเบ‡เบญเบตเป€เบกเบฅเปŒเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ•เปˆเบฒเบ‡เป†เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเบญเบเปเบšเบš syntactic เบ‚เบญเบ‡เบ„เปเบฒเบšเบฑเบ™เบเบฒเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเปƒเบŠเป‰เบ„เปเบฒเบ„เบดเบ”เบ„เปเบฒเป€เบซเบฑเบ™เบ›เบฐเป€เบžเบ”เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเปเบ›. เบญเบฑเบ™เบ™เบตเป‰เปƒเบŠเป‰เป„เบ”เป‰เบ•เบฒเบกเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ—เบตเปˆเบ•เบฑเป‰เบ‡เป„เบงเป‰, เปเบ•เปˆเบเปเปˆเป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™ (Python 3.6 เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบฑเบ™ syntax เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒ):

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)

เบกเบฑเบ™เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเบงเปˆเบฒเบเบฒเบ™เบ„เป‰เบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰ (เปเบฅเบฐเบญเบทเปˆเบ™เป†) เบšเปเปˆเบชเปเบฒเบ„เบฑเบ™ - เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡เบเบฒเบ™เบžเบดเบกเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบœเบนเป‰เปƒเบŠเป‰เบ—เบฑเบ™เบ—เบตเบฅเบทเบกเบเปˆเบฝเบงเบเบฑเบš syntax เบซเบ™เป‰เบญเบเบเบงเปˆเบฒเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบšเปเปˆเบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡ syntactic เบžเบดเป€เบชเบ”เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบซเบฑเบ” Python เบ—เบตเปˆเบกเบตเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”, เป€เบ„เบทเปˆเบญเบ‡เบกเบท Python เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเปเบฅเบฐเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบฅเบฐเบซเบฑเบ”เบเบฑเบ‡เบชเบทเบšเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบด, เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆเบˆเบฐเบฎเบฝเบ™เบฎเบนเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเปƒเบซเบกเปˆ.

Guido เบเบฑเบ‡เป„เบ”เป‰เบŠเบฑเบเบŠเบงเบ™เปƒเบซเป‰เบ‚เป‰เบญเบเป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบก Dropbox เบซเบผเบฑเบ‡เบˆเบฒเบเบ‚เป‰เบญเบเป€เบฎเบฑเบ”เบ—เบดเบ”เบชเบฐเบ”เบตเบˆเบปเบšเบเบฒเบ™เบชเบถเบเบชเบฒเบ‚เบญเบ‡เบ‚เป‰เบญเบ. เบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบชเปˆเบงเบ™เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เป€เบฅเบทเปˆเบญเบ‡ mypy เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เบ•เบดเบ”โ€‹เบ•เบฒเบกโ€‹เบ•เบญเบ™โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€ฆ

เบ—เปˆเบฒเบ™เบœเบนเป‰เบญเปˆเบฒเบ™เบ—เบตเปˆเบฎเบฑเบเปเบžเบ‡! เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰ Python, เบเบฐเบฅเบธเบ™เบฒเบšเบญเบเบžเบงเบเป€เบฎเบปเบฒเบเปˆเบฝเบงเบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™เบžเบฒเบชเบฒเบ™เบตเป‰.

เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบชเบนเปˆเบเบฒเบ™เบžเบดเบกเบฅเบฐเบซเบฑเบ” 4 เบฅเป‰เบฒเบ™เปเบ–เบงเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” Python. เบžเบฒเบเบ—เบต 1
เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบชเบนเปˆเบเบฒเบ™เบžเบดเบกเบฅเบฐเบซเบฑเบ” 4 เบฅเป‰เบฒเบ™เปเบ–เบงเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” Python. เบžเบฒเบเบ—เบต 1

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™