ื“ืขืจ ื“ืจืš ืฆื• ื“ืจื•ืงืŸ 4 ืžื™ืœื™ืึธืŸ ืฉื•ืจื•ืช ืคื•ืŸ ืคึผื™ื˜ื”ืึธืŸ ืงืึธื“. ื˜ื™ื™ืœ 1

ื”ื™ื™ึทื ื˜ ืžื™ืจ ื‘ืจืขื ื’ืขืŸ ืฆื• ื“ื™ื™ืŸ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ื˜ ื“ืขืจ ืขืจืฉื˜ืขืจ ื˜ื™ื™ืœ ืคื•ืŸ ื“ืขืจ ืื™ื‘ืขืจื–ืขืฆื•ื ื’ ืคื•ืŸ ื“ืขื ืžืึทื˜ืขืจื™ืึทืœ ื•ื•ืขื’ืŸ ื•ื•ื™ ื“ืจืึธืคึผื‘ืึธืงืก ื“ื™ืœื– ืžื™ื˜ ื˜ื™ืคึผ ืงืึธื ื˜ืจืึธืœ ืคื•ืŸ ืคึผื™ื˜ื”ืึธืŸ ืงืึธื“.

ื“ืขืจ ื“ืจืš ืฆื• ื“ืจื•ืงืŸ 4 ืžื™ืœื™ืึธืŸ ืฉื•ืจื•ืช ืคื•ืŸ ืคึผื™ื˜ื”ืึธืŸ ืงืึธื“. ื˜ื™ื™ืœ 1

ื“ืจืึธืคึผื‘ืึธืงืก ืฉืจื™ื™ื‘ื˜ ืึท ืคึผืœืึทืฅ ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ. ื“ืึธืก ืื™ื– ืึท ืฉืคึผืจืึทืš ื•ื•ืึธืก ืžื™ืจ ื ื•ืฆืŸ ื’ืึธืจ ื•ื•ื™ื™ื“ืœื™, ื‘ื™ื™ื“ืข ืคึฟืึทืจ ืฆื•ืจื™ืง-ืขื ื“ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ื“ืขืกืงื˜ืึทืคึผ ืงืœื™ืขื ื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื–. ืžื™ืจ ืื•ื™ืš ื ื•ืฆืŸ Go, TypeScript ืื•ืŸ Rust ืึท ืคึผืœืึทืฅ, ืึธื‘ืขืจ Python ืื™ื– ืื•ื ื“ื–ืขืจ ื”ื•ื™ืคึผื˜ ืฉืคึผืจืึทืš. ืงืึธื ืกื™ื“ืขืจื™ื ื’ ืื•ื ื“ื–ืขืจ ื•ื•ืึธื’, ืื•ืŸ ืžื™ืจ ื–ืขื ืขืŸ ื’ืขืจืขื“ื˜ ื•ื•ืขื’ืŸ ืžื™ืœื™ืึทื ื– ืคื•ืŸ ืฉื•ืจื•ืช ืคื•ืŸ ืคึผื™ื˜ื”ืึธืŸ ืงืึธื“, ืขืก ืคืืจืงืขืจื˜ ืื•ื™ืก ืึทื– ื“ื™ ื“ื™ื ืึทืžื™ืฉ ื˜ื™ื™ืคึผื™ื ื’ ืคื•ืŸ ืึทื–ืึท ืงืึธื“ ืึทื ื ืขืกืึทืกืขืจืึทืœื™ ืงืึธืžืคึผืœื™ืฆื™ืจื˜ ื–ื™ื™ึทืŸ ืคืืจืฉื˜ืื ื“ ืื•ืŸ ืื ื’ืขื”ื•ื™ื‘ืŸ ืฆื• ืขืžืขืก ื•ื•ื™ืจืงืŸ ืึทืจื‘ืขื˜ ืคึผืจืึธื•ื“ืึทืงื˜ื™ื•ื•ื™ื˜ื™. ืฆื• ืคืึทืจืžื™ื ืขืจืŸ ื“ืขื ืคึผืจืึธื‘ืœืขื, ืžื™ืจ ื”ืึธื‘ืŸ ืื ื’ืขื”ื•ื™ื‘ืŸ ืฆื• ื‘ื™ืกืœืขื›ื•ื•ื™ื™ึทื– ื™ื‘ืขืจื’ืึทื ื’ ืื•ื ื“ื–ืขืจ ืงืึธื“ ืฆื• ืกื˜ืึทื˜ื™ืง ื˜ื™ืคึผ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ื ื™ืฆืŸ mypy. ื“ืึธืก ืื™ื– ืžื™ืกื˜ืึธืžืข ื“ื™ ืžืขืจืกื˜ ืคืึธืœืงืก ืกื˜ืึทื ื“ืึทืœืึธื ืข ื˜ื™ืคึผ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ืกื™ืกื˜ืขื ืคึฟืึทืจ ืคึผื™ื˜ื”ืึธืŸ. Mypy ืื™ื– ืึทืŸ ืึธืคึฟืŸ ืžืงื•ืจ ืคึผืจื•ื™ืขืงื˜, ื“ื™ ื”ื•ื™ืคึผื˜ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืึทืจื‘ืขื˜ ืื™ืŸ ื“ืจืึธืคึผื‘ืึธืงืก.

ื“ืจืึธืคึผื‘ืึธืงืก ืื™ื– ื’ืขื•ื•ืขืŸ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืขืจืฉื˜ืขืจ ืงืึธืžืคึผืึทื ื™ืขืก ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ืกื˜ืึทื˜ื™ืง ื˜ื™ืคึผ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ ืงืึธื“ ืื™ืŸ ื“ืขื ื•ื•ืึธื’. Mypy ืื™ื– ื’ืขื ื™ืฆื˜ ืื™ืŸ ื˜ื•ื™ื–ื ื˜ืขืจ ืคื•ืŸ ืคึผืจืึทื“ื–ืฉืขืงืก ื“ื™ ื˜ืขื’. ื“ืขื ื’ืขืฆื™ื™ึทื’ ืงืึทื•ื ื˜ืœืึทืก ืžืืœ, ื•ื•ื™ ื–ื™ื™ ื–ืึธื’ืŸ, "ื˜ืขืกื˜ืขื“ ืื™ืŸ ืฉืœืึทื›ื˜." ืžื™ืจ ื”ืึธื‘ืŸ ืึท ืœืึทื ื’ ื•ื•ืขื’ ืฆื• ื‘ืึทืงื•ืžืขืŸ ืฆื• ื•ื•ื• ืžื™ืจ ื–ืขื ืขืŸ ืื™ืฆื˜. ืื•ื™ืค ืŸ ืฐืข ื’ ื–ืฒื ืข ืŸ ื’ืขืฐืข ืŸ ื ืก ืš ืื•ืž ึพ ื’ืขืœื•ื ื’ืขื  ืข ืื•ื ื˜ืขืจื ืขืžื•ื ื’ืข ืŸ ืื• ืŸ ื“ื•ืจื›ื’ืขืคืืœืขื  ืข ืขืงืกืคืขืจื™ืžืขื ื˜ืŸ . ื“ืขืจ ืคึผืึธืกื˜ืŸ ืงืึธื•ื•ืขืจืก ื“ื™ ื’ืขืฉื™ื›ื˜ืข ืคื•ืŸ โ€‹โ€‹ืกื˜ืึทื˜ื™ืง ื˜ื™ืคึผ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ, ืคึฟื•ืŸ ื–ื™ื™ืŸ ืฉื˜ื™ื™ื ืขืจื“ื™ืง ืึธื ื”ื™ื™ื‘ ื•ื•ื™ ืึท ื˜ื™ื™ืœ ืคื•ืŸ ืžื™ื™ืŸ ืคืึธืจืฉื•ื ื’ ืคึผืจื•ื™ืขืงื˜, ื‘ื™ื– ื“ืขื ื”ื™ื™ื ื˜ื™ืงืŸ ื˜ืึธื’, ื•ื•ืขืŸ ื˜ื™ืคึผ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ืื•ืŸ ื˜ื™ืคึผ ื”ื™ื ืฅ ื”ืึธื‘ืŸ ื•ื•ืขืจืŸ ื’ืขื•ื•ื™ื™ื ื˜ืœืขืš ืคึฟืึทืจ ืงืึทื•ื ื˜ืœืึทืก ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื•ื•ืึธืก ืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ. ื“ื™ ืžืขืงืึทื ื™ื–ืึทืžื– ื–ืขื ืขืŸ ืื™ืฆื˜ ื’ืขืฉื˜ื™ืฆื˜ ื“ื•ืจืš ืคื™ืœืข ืžื›ืฉื™ืจื™ื ืึทื–ืึท ื•ื•ื™ IDEs ืื•ืŸ ืงืึธื“ ืึทื ืึทืœื™ื–ืขืจืก.

โ†’ ืœื™ื™ืขื ืขืŸ ื“ืขื ืฆื•ื•ื™ื™ื˜ืŸ ื˜ื™ื™ืœ

ืคืืจื•ื•ืืก ืื™ื– ื˜ื™ืคึผ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ื ื™ื™ื˜ื™ืง?

ืื•ื™ื‘ ืื™ืจ ื”ืึธื˜ ืืœืฅ ื’ืขื•ื•ื™ื™ื ื˜ ื“ื™ื ืึทืžื™ืงืึทืœืœื™ ื˜ื™ื™ืคึผื˜ ืคึผื™ื˜ื”ืึธืŸ, ืื™ืจ ืงืขืŸ ื”ืึธื‘ืŸ ืขื˜ืœืขื›ืข ืฆืขืžื™ืฉื•ื ื’ ื•ื•ืขื’ืŸ ื•ื•ืึธืก ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึทื–ืึท ืึท ื˜ืึทืจืขืจืึทื ืึทืจื•ื ืกื˜ืึทื˜ื™ืง ื˜ื™ื™ืคึผื™ื ื’ ืื•ืŸ ืžื™ืคึผื™ ืœืขืฆื˜ื ืก. ืึธื“ืขืจ ืืคึฟืฉืจ ืื™ืจ ื•ื•ื™ Python ื“ื•ื•ืงื ื•ื•ื™ื™ึทืœ ืคื•ืŸ ื–ื™ื™ึทืŸ ื“ื™ื ืึทืžื™ืฉ ื˜ื™ื™ืคึผื™ื ื’, ืื•ืŸ ื•ื•ืึธืก ืื™ื– ื’ืขืฉืขืขื ื™ืฉ ื ืึธืจ ื™ื‘ืขืจืงืขืจืŸ ืื™ืจ. ื“ืขืจ ืฉืœื™ืกืœ ืฆื• ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ืกื˜ืึทื˜ื™ืง ื˜ื™ื™ืคึผื™ื ื’ ืื™ื– ื“ื™ ื•ื•ืึธื’ ืคื•ืŸ ื“ื™ ืกืึทืœื•ืฉืึทื ื–: ื“ื™ ื’ืจืขืกืขืจืข ื“ื™ื™ืŸ ืคึผืจื•ื™ืขืงื˜, ื“ื™ ืžืขืจ ืื™ืจ ื“ืึทืจ ืฆื• ืกื˜ืึทื˜ื™ืง ื˜ื™ื™ืคึผื™ื ื’, ืื•ืŸ ืื™ืŸ ื“ื™ ืกื•ืฃ, ื“ื™ ืžืขืจ ืื™ืจ ื˜ืึทืงืข ื“ืึทืจืคึฟืŸ ืขืก.

ืจืขื›ืŸ ืื– ื ื’ืขื•ื•ื™ืกืขืจ ืคืจืื™ืขืงื˜ ื”ืื˜ ื“ืขืจื’ืจื™ื™ื›ื˜ ื“ื™ ื’ืจื™ื™ืก ืคื•ืŸ ืฆืขื ื“ืœื™ื’ืขืจ ื˜ื•ื™ื–ื ื˜ืขืจ ืฉื•ืจื•ืช, ืื•ืŸ ืขืก ื”ืื˜ ื–ื™ืš ืืจื•ื™ืกื’ืขืฉื˜ืขืœื˜ ืื– ืขื˜ืœื™ื›ืข ืคืจืื’ืจืืžืขืŸ ืืจื‘ืขื˜ืŸ ื“ืขืจื•ื™ืฃ. ืื™ืจ ื–ื•ื›ื˜ ืื™ืŸ ืึท ืขื ืœืขืš ืคึผืจื•ื™ืขืงื˜, ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืื•ื ื“ื–ืขืจ ื“ืขืจืคืึทืจื•ื ื’, ืžื™ืจ ืงืขื ืขืŸ ื–ืึธื’ืŸ ืึทื– ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื–ื™ื™ึทืŸ ืงืึธื“ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ืขืจ ืฉืœื™ืกืœ ืฆื• ื”ืึทืœื˜ืŸ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืคึผืจืึธื“ื•ืงื˜ื™ื•ื•. ืึธืŸ ื˜ื™ืคึผ ืึทื ืึทื˜ื™ื™ืฉืึทื ื–, ืขืก ืงืขืŸ ื–ื™ื™ืŸ ืฉื•ื•ืขืจ ืฆื• ืจืขื›ืขื ืขืŸ ืื•ื™ืก, ืœืžืฉืœ, ื•ื•ืึธืก ืึทืจื’ื•ืžืขื ื˜ืŸ ืฆื• ืคืึธืจืŸ ืฆื• ืึท ืคึฟื•ื ืงืฆื™ืข, ืึธื“ืขืจ ื•ื•ืึธืก ื˜ื™ื™ืคึผืก ืึท ืคึฟื•ื ืงืฆื™ืข ืงืขื ืขืŸ ืฆื•ืจื™ืงืงื•ืžืขืŸ. ื“ืึธ ื–ืขื ืขืŸ ื˜ื™ืคึผื™ืฉ ืคึฟืจืื’ืŸ ื•ื•ืึธืก ื–ืขื ืขืŸ ืึธืคื˜ ืฉื•ื•ืขืจ ืฆื• ืขื ื˜ืคึฟืขืจืŸ ืึธืŸ ื ื™ืฆืŸ ื˜ื™ืคึผ ืึทื ืึทื˜ื™ื™ืฉืึทื ื–:

  • ืงืขื ืขืŸ ื“ืขื ืคึฟื•ื ืงืฆื™ืข ืฆื•ืจื™ืงืงื•ืžืขืŸ 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 ืึธื“ืขืจ Visual Studio Code ื ื•ืฆืŸ ื“ื™ ืžืึทื›ื˜ ืคื•ืŸ ื˜ื™ืคึผ ืึทื ืึทื˜ื™ื™ืฉืึทื ื– ืฆื• ืฆื•ืฉื˜ืขืœืŸ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืžื™ื˜ ืงืึธื“ ืงืึทืžืคึผืœื™ืฉืึทืŸ, ื˜ืขื•ืช ื›ื™ื™ืœื™ื™ื˜ื™ื ื’ ืื•ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืึธืคื˜ ื’ืขื•ื•ื™ื™ื ื˜ ืฉืคึผืจืึทืš ืงืึทื ืกื˜ืจืึทืงืฉืึทื ื–. ืื•ืŸ ื“ืึธืก ื–ืขื ืขืŸ ื ืึธืจ ืขื˜ืœืขื›ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ื‘ืขื ืขืคื™ืฅ ืคื•ืŸ ื˜ื™ื™ืคึผื™ื ื’. ืคึฟืึทืจ ืขื˜ืœืขื›ืข ืคึผืจืึธื•ื’ืจืึทืžืขืจื–, ืึทืœืข ื“ืขื ืื™ื– ื“ืขืจ ื”ื•ื™ืคึผื˜ ืึทืจื’ื•ืžืขื ื˜ ืื™ืŸ ื˜ื•ื™ื•ื•ืข ืคื•ืŸ โ€‹โ€‹ื˜ื™ื™ืคึผื™ื ื’. ื“ืึธืก ืื™ื– ืขืคึผืขืก ื•ื•ืึธืก ื‘ืขื ืขืคื™ืฅ ืžื™ื“ ื ืึธืš ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ. ื“ืขืจ ื ื•ืฆืŸ ืคืึทืœ ืคึฟืึทืจ ื˜ื™ื™ืคึผืก ื˜ื•ื˜ ื ื™ืฉื˜ ื“ืึทืจืคืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ื˜ื™ืคึผ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ืกื™ืกื˜ืขื ื•ื•ื™ mypy, ื›ืึธื˜ืฉ ืขืก ื–ืึธืœ ื–ื™ื™ืŸ ืื ื’ืขื•ื•ื™ื–ืŸ ืึทื– mypy ื”ืขืœืคึผืก ื”ืึทืœื˜ืŸ ื˜ื™ืคึผ ืึทื ืึทื˜ื™ื™ืฉืึทื ื– ืงืึธื ืกื™ืกื˜ืขื ื˜ ืžื™ื˜ ืงืึธื“.

ื“ืขืจ ื”ื™ื ื˜ืขืจื’ืจื•ื ื˜ ืคื•ืŸ ืžื™ืคึผื™

ื“ื™ ื’ืขืฉื™ื›ื˜ืข ืคื•ืŸ โ€‹โ€‹ืžื™ืคึผื™ ืื ื’ืขื”ื•ื™ื‘ืŸ ืื™ืŸ ื“ื™ ื•ืง, ืื™ืŸ ืงื™ื™ืžื‘ืจื™ื“ื–ืฉ, ืขื˜ืœืขื›ืข ื™ืึธืจ ืื™ื™ื“ืขืจ ืื™ืš ื–ื™ืš ืื™ื™ื ื’ืขืฉืจื™ื‘ืŸ ื“ืจืึธืคึผื‘ืึธืงืก. ืื™ืš ื‘ื™ืŸ ื’ืขื•ื•ืขืŸ ื™ื ื•ื•ืึทืœื•ื•ื“, ื•ื•ื™ ืึท ื˜ื™ื™ืœ ืคื•ืŸ ืžื™ื™ืŸ ื“ืึธืงื˜ืึธืจืึทืœ ืคืึธืจืฉื•ื ื’, ืื™ืŸ ื“ืขืจ ืคืึทืจืื™ื™ื ื™ืงื•ื ื’ ืคื•ืŸ ืกื˜ืึทื˜ื™ืงืœื™ ื˜ื™ื™ืคึผื˜ ืื•ืŸ ื“ื™ื ืึทืžื™ืฉ ืฉืคึผืจืึทื›ืŸ. ืื™ืš ืื™ื– ื’ืขื•ื•ืขืŸ ื™ื ืกืคึผื™ื™ืขืจื“ ื“ื•ืจืš ืึทืŸ ืึทืจื˜ื™ืงืœ ื•ื•ืขื’ืŸ ื™ื ืงืจืึทืžืขื ื˜ืึทืœ ื˜ื™ื™ืคึผื™ื ื’ ื“ื•ืจืš Jeremy Siek ืื•ืŸ Walid Taha, ืื•ืŸ ื“ื•ืจืš ื“ื™ ื˜ื™ื™ืคึผื˜ ืจืึทืงืขื˜ ืคึผืจื•ื™ืขืงื˜. ืื™ืš ื”ืึธื‘ ื’ืขืคืจื•ืื•ื•ื˜ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ื•ื•ืขื’ืŸ ืฆื• ื ื•ืฆืŸ ื“ื™ ื–ืขืœื‘ืข ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคึผืจืึทืš ืคึฟืึทืจ ืคืึทืจืฉื™ื“ืŸ ืคึผืจืึทื“ื–ืฉืขืงืก - ืคื•ืŸ ืงืœื™ื™ืŸ ืกืงืจื™ืคึผืก ืฆื• ืงืึธื“ ื‘ืึทืกืขืก ื•ื•ืึธืก ื‘ืืฉื˜ื™ื™ื˜ ืคื•ืŸ ืคื™ืœืข ืžื™ืœื™ืึทื ื– ืคื•ืŸ ืฉื•ืจื•ืช. ื“ืขืจื‘ืฒึท ื”ืึธื‘ ืื™ืš ื’ืขื•ื•ืึธืœื˜ ืคึฟืึทืจื–ื™ื›ืขืจืŸ, ืึทื– ืื™ืŸ ืึท ืคึผืจืึธื™ืขืงื˜ ืคึฟื•ืŸ ืงื™ื™ืŸ ืคึฟืึทืจื ืขื, ื“ืึทืจืฃ ืžืขืŸ ื ื™ืฉื˜ ืžืึทื›ืŸ ืฆื• ื’ืจื•ื™ืกืข ืคึผืฉืจื•ืช. ืึท ื•ื•ื™ื›ื˜ื™ืง ื˜ื™ื™ืœ ืคื•ืŸ ืึทืœืข ื“ืขื ืื™ื– ื’ืขื•ื•ืขืŸ ื“ืขืจ ื’ืขื“ืึทื ืง ืคื•ืŸ ื‘ื™ืกืœืขื›ื•ื•ื™ื™ึทื– ืžืึทืš ืคื•ืŸ ืึท ืึทื ื˜ื™ื™ืคึผื˜ ืคึผืจืึธื•ื˜ืึทื˜ื™ื™ืคึผ ืคึผืจื•ื™ืขืงื˜ ืฆื• ืึท ืคื•ืœืฉื˜ืขื ื“ื™ืง ื˜ืขืกื˜ืขื“ ืกื˜ืึทื˜ื™ืงืœื™ ื˜ื™ื™ืคึผื˜ ืคืึทืจื˜ื™ืง ืคึผืจืึธื“ื•ืงื˜. ื“ื™ ื˜ืขื’, ื“ื™ ื’ืขื“ืื ืงืขืŸ ื–ืขื ืขืŸ ืœืึทืจื’ืขืœื™ ื’ืขื ื•ืžืขืŸ ืคึฟืึทืจ ื’ืขื’ืขื‘ืŸ, ืึธื‘ืขืจ ืื™ืŸ 2010 ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ืคึผืจืึธื‘ืœืขื ื•ื•ืึธืก ืื™ื– ื ืึธืš ืึทืงื˜ื™ื•ื•ืœื™ ื•ื™ืกืคืึธืจืฉืŸ.

ืžื™ื™ึทืŸ ืึธืจื™ื’ื™ื ืขืœ ืึทืจื‘ืขื˜ ืื™ืŸ ื˜ื™ืคึผ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ืื™ื– ื ื™ืฉื˜ ืึทื™ืžืขื“ ื‘ื™ื™ึท ืคึผื™ื˜ื”ืึธืŸ. ืึทื ืฉื˜ืึธื˜, ืื™ืš ื’ืขื•ื•ื™ื™ื ื˜ ืึท ืงืœื™ื™ืŸ "ื›ืึธื•ืžืžื™ื™ื“" ืฉืคึผืจืึทืš ืฉื•ื™ืŸ. ื“ืึธ ืื™ื– ืึท ื‘ื™ื™ืฉืคึผื™ืœ ื•ื•ืึธืก ื•ื•ืขื˜ ืœืึธื–ืŸ ืื™ืจ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ืึธืก ืžื™ืจ ื–ืขื ืขืŸ ื’ืขืจืขื“ื˜ ื•ื•ืขื’ืŸ (ื˜ื™ืคึผ ืึทื ืึทื˜ื™ื™ืฉืึทื ื– ื–ืขื ืขืŸ ืึทืคึผืฉืึทื ืึทืœ ื“ืึธ):

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

ื ื™ืฆืŸ ืึท ืกื™ืžืคึผืœืึทืคื™ื™ื“ ื’ืขื‘ื•ื™ืจืŸ ืฉืคึผืจืึทืš ืื™ื– ืึท ืคึผืจืึธืกื˜ ืฆื•ื’ืึทื ื’ ื’ืขื ื™ืฆื˜ ืื™ืŸ ื•ื•ื™ืกื ืฉืืคื˜ืœืขื›ืข ืคืึธืจืฉื•ื ื’. ื“ืึธืก ืื™ื– ืึทื–ื•ื™, ื ื™ื˜ ืงืœืขื ืกื˜ืขืจ ื•ื•ื™ื™ึทืœ ืขืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื’ืขืฉื•ื•ื™ื ื“ ื“ื•ืจื›ืคื™ืจืŸ ื™ืงืกืคึผืขืจืึทืžืึทื ืฅ, ืื•ืŸ ืื•ื™ืš ืจืขื›ื˜ ืฆื• ื“ืขื ืคืึทืงื˜ ืึทื– ื•ื•ืึธืก ื”ืื˜ ื’ืึธืจื ื™ืฉื˜ ืฆื• ื˜ืึธืŸ ืžื™ื˜ ื“ื™ ืœืขืจื ืขืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืœื™ื™ื›ื˜ ืื™ื’ื ืึธืจื™ืจื˜. ืคืึทืงื˜ื™ืฉ-ื•ื•ืขืœื˜ ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฉืคืจืึทื›ืŸ ื˜ืขื ื“ ืฆื• ื–ื™ื™ืŸ ื’ืจื•ื™ืก-ื•ื•ืึธื’ ื“ืขืจืฉื™ื™ื ื•ื ื’ืขืŸ ืžื™ื˜ ืงืึธืžืคึผืœืขืงืก ื™ืžืคึผืœืึทืžืึทื ืฅ, ืื•ืŸ ื“ืึธืก ืกืœืึธื•ื– ืึทืจืึธืคึผ ืขืงืกืคึผืขืจื™ืžืขื ื˜ืึทื˜ื™ืึธืŸ. ืึธื‘ืขืจ, ืึทืœืข ืจืขื–ื•ืœื˜ืึทื˜ืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืึท ืกื™ืžืคึผืœืึทืคื™ื™ื“ ืฉืคึผืจืึทืš ืงื•ืงืŸ ืึท ื‘ื™ืกืœ ืกืึทืกืคึผื™ืฉืึทืก, ื•ื•ื™ื™ึทืœ ืื™ืŸ ื‘ืืงื•ืžืขืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ, ื“ืขืจ ืคืึธืจืฉืขืจ ืงืขืŸ ื”ืึธื‘ืŸ ืžืงืจื™ื‘ ื’ืขื•ื•ืขืŸ ื‘ืึทื˜ืจืึทื›ื˜ื•ื ื’ ื•ื•ื™ื›ื˜ื™ืง ืคึฟืึทืจ ื“ื™ ืคึผืจืึทืงื˜ื™ืฉ ื ื•ืฆืŸ ืคื•ืŸ ืฉืคึผืจืึทื›ืŸ.

ืžื™ื™ึทืŸ ื˜ื™ืคึผ ื˜ืฉืขืงืขืจ ืคึฟืึทืจ ืึทืœืึธืจืข ืื™ื– ื’ืขื•ื•ืขืŸ ื–ื™ื™ืขืจ ืคึผืจืึทืžืึทืกื™ื ื’, ืึธื‘ืขืจ ืื™ืš ื’ืขื•ื•ืืœื˜ ืฆื• ืคึผืจื•ื‘ื™ืจืŸ ืขืก ื“ื•ืจืš ืขืงืกืคึผืขืจื™ืžืขื ื˜ื™ื ื’ ืžื™ื˜ ืคืึทืงื˜ื™ืฉ ืงืึธื“, ื•ื•ืึธืก, ืื™ืจ ื–ืืœ ื–ืึธื’ืŸ, ืื™ื– ื ื™ืฉื˜ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ืึทืœืึธืจืข. ืฆื•ืž ื’ืœื™ืง ืคึฟืึทืจ ืžื™ืจ, ื“ื™ ืึทืœืึธืจืข ืฉืคึผืจืึทืš ืื™ื– ืœืึทืจื’ืขืœื™ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ื–ืขืœื‘ืข ื’ืขื“ืื ืงืขืŸ ื•ื•ื™ ืคึผื™ื˜ื”ืึธืŸ. ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืจื™ื ื’ ื’ืขื ื•ื’ ืฆื• ืจื™ืžื™ื™ืง ื“ื™ ื˜ื™ืคึผื˜ืฉืขืงืขืจ ืึทื–ื•ื™ ืึทื– ืขืก ืงืขืŸ ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืคึผื™ื˜ื”ืึธืŸ ืก ืกื™ื ื˜ืึทืงืก ืื•ืŸ ืกืขืžืึทื ื˜ื™ืงืก. ื“ืึธืก ืขืจืœื•ื™ื‘ื˜ ืื•ื ื“ื– ืฆื• ืคึผืจื•ื‘ื™ืจืŸ ื˜ื™ืคึผ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ืื™ืŸ ืขืคึฟืขื ืขืŸ ืžืงื•ืจ ืคึผื™ื˜ื”ืึธืŸ ืงืึธื“. ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, ืื™ืš ื’ืขืฉืจื™ื‘ืŸ ืึท ื˜ืจืึทื ืกืคึผื™ืœืขืจ ืฆื• ื’ืขืจ ืงืึธื“ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ืึทืœืึธืจืข ืฆื• ืคึผื™ื˜ื”ืึธืŸ ืงืึธื“ ืื•ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืขืก ืฆื• ืื™ื‘ืขืจื–ืขืฆืŸ ืžื™ื™ืŸ ื˜ื™ืคึผื˜ืฉืขืงืขืจ ืงืึธื“. ืื™ืฆื˜ ืื™ืš ื”ืื˜ ืึท ื˜ื™ืคึผ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ืกื™ืกื˜ืขื ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ ื•ื•ืึธืก ืฉื˜ื™ืฆื˜ ืึท ืกืึทื‘ืกืขื˜ ืคื•ืŸ ืคึผื™ื˜ื”ืึธืŸ, ืขื˜ืœืขื›ืข ืžื™ืŸ ืคื•ืŸ ืึทื– ืฉืคึผืจืึทืš! (ื–ื™ื›ืขืจ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจืึทืœ ื“ื™ืกื™ื–ืฉืึทื ื– ื•ื•ืึธืก ื”ืึธื‘ืŸ ืึท ื–ื™ื ืขืŸ ืคึฟืึทืจ Alore ื–ืขื ืขืŸ ืฉื•ื•ืึทืš ืคึผืึทืกื™ืง ืคึฟืึทืจ Python, ืื•ืŸ ื“ืึธืก ืื™ื– ื ืึธืš ื‘ืืžืขืจืงื˜ ืื™ืŸ ืคึผืึทืจืฅ ืคื•ืŸ ื“ื™ Mypy ืงืึธื“ืขื‘ืึทืกืข.)

ืื™ืŸ ืคืึทืงื˜, ื“ื™ ืฉืคึผืจืึทืš ื’ืขืฉื˜ื™ืฆื˜ ื“ื•ืจืš ืžื™ื™ืŸ ื˜ื™ืคึผ ืกื™ืกื˜ืขื ืงืขืŸ ื ื™ืฉื˜ ื’ืึทื ืฅ ื–ื™ื™ืŸ ื’ืขืจื•ืคืŸ ืคึผื™ื˜ื”ืึธืŸ ืื™ืŸ ื“ืขื ืคื•ื ื˜: ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื•ื•ืึทืจื™ืึทื ื˜ ืคื•ืŸ ืคึผื™ื˜ื”ืึธืŸ ืจืขื›ื˜ ืฆื• ืขื˜ืœืขื›ืข ืœื™ืžื™ื˜ื™ื™ืฉืึทื ื– ืคื•ืŸ ื“ื™ ืคึผื™ื˜ื”ืึธืŸ 3 ื˜ื™ืคึผ ืึทื ืึทื˜ื™ื™ืฉืึทืŸ ืกื™ื ื˜ืึทืงืก.

ืขืก ื’ืขืงื•ืงื˜ ื•ื•ื™ ืึท ื’ืขืžื™ืฉ ืคื•ืŸ Java ืื•ืŸ Python:

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

ืื™ื™ื ืขืจ ืคื•ืŸ ืžื™ื™ืŸ ื’ืขื“ืื ืงืขืŸ ืื™ืŸ ื“ืขืจ ืฆื™ื™ื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ืฆื• ื ื•ืฆืŸ ื˜ื™ืคึผ ืึทื ืึทื˜ื™ื™ืฉืึทื ื– ืฆื• ืคึฟืึทืจื‘ืขืกืขืจืŸ ืคืึธืจืฉื˜ืขืœื•ื ื’ ื“ื•ืจืš ืงืึทืžืคึผื™ื™ืœื™ื ื’ ื“ืขื ืžื™ืŸ ืคื•ืŸ ืคึผื™ื˜ื”ืึธืŸ ืฆื• C, ืึธื“ืขืจ ื˜ืึธืžืขืจ JVM bytecode. ืื™ืš ื’ืขืงื•ืžืขืŸ ืฆื• ื“ืขืจ ื‘ื™ื ืข ืคื•ืŸ โ€‹โ€‹ืฉืจื™ื™ื‘ืŸ ืึท ืงืึทืžืคึผื™ื™ืœืขืจ ืคึผืจืึธื•ื˜ืึทื˜ื™ื™ืคึผ, ืึธื‘ืขืจ ืื™ืš ืคืืจืœืื–ืŸ ื“ืขื ื’ืขื“ืึทื ืง, ื•ื•ื™ื™ึทืœ ื˜ื™ืคึผ ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ื–ื™ืš ื’ืขืงื•ืงื˜ ื’ืึทื ืฅ ื ื•ืฆื™ืง.

ืื™ืš ืขื ื“ืœืขืš ืคึผืจื™ื–ืขื ื˜ื™ื ื’ ืžื™ื™ืŸ ืคึผืจื•ื™ืขืงื˜ ื‘ื™ื™ PyCon 2013 ืื™ืŸ ืกืึทื ื˜ืึท ืงืœืึทืจืึท. ืื™ืš ื”ืึธื‘ ืื•ื™ืš ื’ืขืจืขื“ื˜ ื•ื•ืขื’ืŸ ื“ืขื ืžื™ื˜ Guido van Rossum, ื“ืขืจ ื’ื•ื˜ื”ืึทืจืฆื™ืงืขืจ ืคึผื™ื˜ื”ืึธืŸ ื“ื™ืงื˜ืึทื˜ืึธืจ ืคึฟืึทืจ ืœืขื‘ืŸ. ืขืจ ืงืึทื ื•ื•ื™ื ืกื˜ ืžื™ืจ ืฆื• ืคืึทืœืŸ ืžื™ื™ืŸ ืื™ื™ื’ืŸ ืกื™ื ื˜ืึทืงืก ืื•ืŸ ืฉื˜ืขืงืŸ ืžื™ื˜ ื“ื™ ื ืึธืจืžืึทืœ ืคึผื™ื˜ื”ืึธืŸ 3 ืกื™ื ื˜ืึทืงืก. Python 3 ืฉื˜ื™ืฆื˜ ืคื•ื ืงืฆื™ืข ืึทื ืึทื˜ื™ื™ืฉืึทื ื–, ืึทื–ื•ื™ ืžื™ื™ืŸ ื‘ื™ื™ืฉืคึผื™ืœ ืงืขืŸ ื–ื™ื™ืŸ ืจื™ืจื™ื˜ืึทืŸ ื•ื•ื™ ื’ืขื•ื•ื™ื–ืŸ ืื•ื ื˜ืŸ, ืจื™ื–ืึทืœื˜ื™ื ื’ ืื™ืŸ ืึท ื ืึธืจืžืึทืœ ืคึผื™ื˜ื”ืึธืŸ ืคึผืจืึธื’ืจืึทื:

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

ืื™ืš ื”ืื˜ ืฆื• ืžืึทื›ืŸ ืขื˜ืœืขื›ืข ืงืึทืžืคึผืจืึทืžื™ื™ื–ื™ื– (ืขืจืฉื˜ืขืจ ืคื•ืŸ ืึทืœืข, ืื™ืš ื•ื•ื™ืœืŸ ืฆื• ื˜ืึธืŸ ืึทื– ืื™ืš ื™ื ื•ื•ืขื ื˜ื™ื“ ืžื™ื™ืŸ ืื™ื™ื’ืŸ ืกื™ื ื˜ืึทืงืก ืคึฟืึทืจ ื“ืขื ื–ื™ื™ืขืจ ืกื™ื‘ื”). ืื™ืŸ ื‘ืึทื–ื•ื ื“ืขืจ, Python 3.3, ื“ื™ ืœืขืฆื˜ืข ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ ืฉืคึผืจืึทืš ืื™ืŸ ื“ืขืจ ืฆื™ื™ื˜, ื”ืื˜ ื ื™ืฉื˜ ืฉื˜ื™ืฆืŸ ื•ื•ืขืจื™ืึทื‘ืึทืœ ืึทื ืึทื˜ื™ื™ืฉืึทื ื–. ืื™ืš ื“ื™ืกืงืึทืกื˜ ืžื™ื˜ Guido ื“ื•ืจืš E- ืคึผืึธืกื˜ ืคืึทืจืฉื™ื“ืŸ ืคึผืึทืกืึทื‘ื™ืœืึทื˜ื™ื– ืคึฟืึทืจ ืกื™ื ื˜ืึทืงื˜ื™ืง ืคึผืœืึทืŸ ืคื•ืŸ ืึทื–ืึท ืึทื ืึทื˜ื™ื™ืฉืึทื ื–. ืžื™ืจ ื‘ืึทืฉืœืึธืกืŸ ืฆื• ื ื•ืฆืŸ ื˜ื™ืคึผ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ ืคึฟืึทืจ ื•ื•ืขืจื™ืึทื‘ืึทืœื–. ื“ืึธืก ื”ืึธื˜ ื’ืขื“ื™ื ื˜ ื“ืขื ื‘ื“ืขื” ืฆื™ืœ, ืึธื‘ืขืจ ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื‘ื™ืกืœ ืงืึทืžื‘ืขืจืกืึทื (Python 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)

ืขืก ื”ืึธื˜ ื–ื™ืš ืึทืจื•ื™ืกื’ืขื•ื•ื™ื–ืŸ ืึทื– ื“ื™ (ืื•ืŸ ืื ื“ืขืจืข) ื”ืึทื ื“ืœ-ืึธืคืก ื˜ืึธืŸ ื ื™ื˜ ื˜ืึทืงืข ืขื ื™ืŸ - ื“ื™ ื‘ืขื ืขืคื™ืฅ ืคื•ืŸ ืกื˜ืึทื˜ื™ืง ื˜ื™ื™ืคึผื™ื ื’ ืžืขื ื˜ ืึทื– ื™ื•ื–ืขืจื– ื‘ืึทืœื“ ืคืืจื’ืขืกืŸ ื•ื•ืขื’ืŸ ื•ื•ื™ื™ื ื™ืงืขืจ-ื•ื•ื™-ืฉืœื™ื™ืžืขืกื“ื™ืง ืกื™ื ื˜ืึทืงืก. ื–ื™ื ื˜ ืงื™ื™ืŸ ืกืคึผืขืฆื™ืขืœืข ืกื™ื ื˜ืึทืงื˜ื™ืง ืงืึทื ืกื˜ืจืึทืงืฉืึทื ื– ื–ืขื ืขืŸ ื’ืขื ื™ืฆื˜ ืื™ืŸ ื“ื™ ื˜ื™ืคึผ-ืึธืคึผื’ืขืฉื˜ืขืœื˜ ืคึผื™ื˜ื”ืึธืŸ ืงืึธื“, ื™ื’ื–ื™ืกื˜ื™ื ื’ ืคึผื™ื˜ื”ืึธืŸ ืžื›ืฉื™ืจื™ื ืื•ืŸ ืงืึธื“ ืคึผืจืึทืกืขืกื™ื ื’ ืคึผืจืึทืกืขืกืึทื– ืคืึธืจื–ืขืฆืŸ ืฆื• ืึทืจื‘ืขื˜ืŸ ื ืึธืจืžืึทืœื™, ืžืื›ืŸ ืขืก ืคื™ืœ ื’ืจื™ื ื’ืขืจ ืคึฟืึทืจ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืฆื• ืœืขืจื ืขืŸ ื“ื™ ื ื™ื™ึทืข ื’ืขืฆื™ื™ึทื’.

Guido ืื•ื™ืš ืงืึทื ื•ื•ื™ื ืกื˜ ืžื™ืจ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ื“ืจืึธืคึผื‘ืึธืงืก ื ืึธืš ืื™ืš ื’ืขืขื ื“ื™ืงื˜ ืžื™ื™ืŸ ื’ืจืึทื“ื–ืฉืึทื•ื•ืึทื˜ ื˜ืขื–ื™ืก. ื“ืึธืก ืื™ื– ื•ื•ื• ื“ื™ ืžืขืจืกื˜ ื˜ืฉื™ืงืึทื•ื•ืข ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ืžื™ืคึผื™ ื’ืขืฉื™ื›ื˜ืข ื”ื™ื™ื‘ื˜.

ืฆื• ืคืึธืจื–ืขืฆืŸ ...

ืœื™ื‘ ืœื™ื™ืขื ืขืจ! ืื•ื™ื‘ ืื™ืจ ื ื•ืฆืŸ Python, ื‘ื™ื˜ืข ื–ืึธื’ืŸ ืื•ื ื“ื– ื•ื•ืขื’ืŸ ื“ื™ ื•ื•ืึธื’ ืคื•ืŸ ืคึผืจืึทื“ื–ืฉืขืงืก ืื™ืจ ืึทื ื˜ื•ื•ื™ืงืœืขืŸ ืื™ืŸ ื“ืขื ืฉืคึผืจืึทืš.

ื“ืขืจ ื“ืจืš ืฆื• ื“ืจื•ืงืŸ 4 ืžื™ืœื™ืึธืŸ ืฉื•ืจื•ืช ืคื•ืŸ ืคึผื™ื˜ื”ืึธืŸ ืงืึธื“. ื˜ื™ื™ืœ 1
ื“ืขืจ ื“ืจืš ืฆื• ื“ืจื•ืงืŸ 4 ืžื™ืœื™ืึธืŸ ืฉื•ืจื•ืช ืคื•ืŸ ืคึผื™ื˜ื”ืึธืŸ ืงืึธื“. ื˜ื™ื™ืœ 1

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’