ααααααα ααΎαααΌαααΆαααααΌααααα’αααααΌααααααααααΌαααααΆααααααααααααΆααα’αααΈααααααα Dropbox αααααααΆαααΆαα½αααΉαααΆααααααααααααααααααΌα Python α
Dropbox αααααα αααΎααα αααα»α Python α ααΆβααΆβααΆααΆβαα½αβαααβααΎαβααααΎβαααΆαβααΌααααΌααΆα ααΆααβαααααΆααβααααΆααααβαααααβααΆαααααα αα·αβαααααα·ααΈβαααααα·ααΈβαα»αααααΌαααα ααΎαααααααΎ Go, TypeScript αα·α Rust α αααΎαααα ααα»αααα Python ααΊααΆααΆααΆα ααααααααααΎαα ααααα·α αΆαααΆααΎααΆαααααααΆαααααααΎα α αΎαααΎααααα»ααα·ααΆαα’αααΈααΌα Python ααΆααααΆααααααΆαα ααΆααΆαααααααααΆαααΆααΆαααΆααααα αΌαααΆαααααααααΌαααααααααααΎα±ααααΆαααΆααααα»αααααΆααααααΆααααααΉαααααααΆ α αΎαα αΆααααααΎααααααΆαααααΆαααααΆαααααααα·αααΆαααΆαααΆαα ααΎααααΈααΆααααααααααα αΆααα ααΎαααΆαα αΆααααααΎαααααΆααααααΌαααΆαααααΎααααΌαααΌαααααααΎααα ααΆααΆααααα½ααα·αα·ααααααααααα·αα·αααααααααααΎ mypy α ααααααα ααααΆαααααααααααα½ααα·αα·αααααααααααΆα ααααα‘ααααααααα·αααααα»ααααααΆαα Python α Mypy ααΊααΆαααααααααααααΎαα αα α’αααα’αα·ααααααααααΆααααααααΆααααΎααΆααα αααα»α Dropbox α
Dropbox ααΊααΆαααα»αα αα»αααααΌααααααα’αα»ααααααΆααααα½ααα·αα·ααααααααααα·αα·αααααα αααα»αααΌα Python αα ααΆαααααααΆααααα Mypy ααααΌαααΆαααααΎαα αααα»αααααααααΆααααΆααααΆααααα αα α»αααααααααα α§ααααααααααΆαααα·αα’ααααΌα ααααα½ααααα·ααΆαααΆ "ααΆαααΆααααααα αααα»αααΆαααααα»ααα" α ααΎαβααΆαβααβαααΆαβααααΆαβααΎααααΈβαα βαααβααααααβαααβααΎαβαα βαααβαααα αα ααΆαααααΌα ααΆααα·α αα ααΆαααΆα αααΎαααααα·ααααααα αα·αααΆααα·ααααααααΆαααα αααααΆαααααααααααααααααααααα·ααααΆααααα½ααα·αα·ααααααααααα·αα·αααααα αααα»α Python ααΈααΆαα αΆααααααΎααααα½αα±ααααααΆααααα’αΎαααααααΆ αααααΆααααααα½αααααααααααααΆαααααΆααααααααα»α αα αΌααααααααααααααααα αα ααααααααΆααα·αα·αααααΎααααααα αα·αααΆααααααΆααααααααααΆαααααΆαααΆααΏαααααααΆαααααΆααα’αααα’αα·ααααααααΆαααα·αα’αααααααααααα αααα»α Python α α₯α‘αΌααααααααααΆαααΆαααααααααΌαααΆαααΆαααααααα§αααααααΆα αααΎαααΌα ααΆ IDEs αα·αα§ααααααα·ααΆαααΌαα
β
α ααα»α’αααΈααΆαααΆααΆααααα½ααα·αα·αααααααααα αΆαααΆα α?
ααααα·αααΎα’αααααααΆααααααΎ Python ααΆαα’ααααααΆααααα α’ααααααα ααααΆααΆαααΆααααααα ααα‘αααααααΆα ααα»α’αααΈααΆαααΆααΆαααΆαα ααααΌαα ααααααααααααα»ααα·αααΆαααΆαα’ααααααααα·αα·αααα αα·α mypy ααΆαααααααΈααααα α¬αααα ααααΆα’αααα αΌαα α·ααα Python αααΆαααΆααααΆαααααααΆαααααΆαααΆαα’ααααααΆααααα α αΎαα’αααΈααααααα»αααΎαα‘αΎαααααΎα±ααα’αααααα α·αααα αααααΉααααααααααααΆαααΆαα’αααααα·αα·ααααααΊααα ααααααααααααΆαα ααααααααααα’αααααΆαααααα α’αααααΆααααααΉαααα’ααααΎααΆαααΆαα’αααααα·αα·αααα α αΎααα ααΈαααα αα α’αααααΆααααααααΌαααΆαααΆααΆααααα αααΎαα
α§αααΆααΆααααααααΆααααΆαααα½αααΆαααΆααααααα αααΆαααααΊααααααΆαα α αΎαααΆααΆαααααααααΆαααΆα’αααααααααααααα·ααΈααΆα αααΎααααα»αααααΎααΆαααΎααΆα αααα‘ααααΎαααααααααααααααααΆααα αααααα’ααααΎαααα·αααααααααααΎα ααΎαα’αΆα αα·ααΆαααΆαααΆααΆααααααΉαα’αααΈααΌαααααααΆααΉαααααΆαααΆαααααΉααααα»αααΆααααααΆααα·αααΆαααααα’αααα’αα·ααααααα ααΎααααΆαα αααΆααααααααααααααα ααΆα’αΆα αα·ααΆααααα»αααΆααααααααα α§ααΆα ααα ααΎα’αΆαα»αααααα’αααΈαααααααααααΌααααααΌααα ααΆααα’αα»αααα α¬αααααααα»αααΆαααΆαααα’αΆα αααααααααα·αααΆαα αααααΊααΆαααα½αααααααΆαααααΆααΏαααα·ααΆαααααΎαααααα·αααααΎα αααΆαααααααααααααα
- ααΎαα»αααΆααααα’αΆα
αααααααααα·αααΆαααα
None
? - ααΎα’αΆαα»αααααααααα½αααΆα’αααΈ?
items
? - ααΎα’αααΈαα
ααΆαααααααα»ααααααα
id
:int
ααΎααΆstr
α¬αααα ααααΆααααααααααΆαααααα½ααααα? - ααΎα’αΆαα»αααααααααα½αααααΆαααααΈαα? ααΎααΆα’αΆα αα αα½α αααααα»αααΆαααααααΆαα tuple αα ααΆ?
ααααα·αααΎα’ααααααα‘ααααΎαα’αααααααΌααααααΆααααααΆααααΈααααααααΆαααααα α αΎαααααΆααΆαααααΎααααα½αααααααααααΆααα ααΆααααααΆαααααΊααΆαα·α αα ααΆαααααΆαααααααα»αα
class Resource:
id: bytes
...
def read_metadata(self,
items: Sequence[str]) -> Dict[str, MetadataItem]:
...
read_metadata
αα·ααααα‘αααααα·αNone
α αΆααααΆααααΈαααααααααα‘αααααα·αααΊαα·ααααOptional[β¦]
.- α’αΆαα»ααααα
items
ααΊααΆααααΆαααααααααΆααα ααΆαα·αα’αΆα ααααΌαααΆαααααΎααααααααααα αααααααα - αα»ααααααα
id
ααΊααΆααααα’ααααααααα
αα αααα»ααα·ααααααα’αα½α ααα»αααααααΆααααααΉαααΆ subtleties ααΆααα’ααααΉαααααΌαααΆααα·αααααΆαα αααα»αα―αααΆααααααΆαααααΆααααααΆαα½α (docstring)α ααα»αααααααα·ααααααααααααΌαα§ααΆα αααααΆα αααΎαααααΆααα·ααααααΆα―αααΆααααααααα·αααααΌαααΆαααααααααααΎαααΆααΉαααΆαααα αααα»αααΌααααα’αααααααΌαααααΎααΆαα αααααΈααΆα―αααΆαααααααααΆααα αααα»αααΌαααααα αααααα·αα’αΆα ααΉαααα’ααααΎααΆαααααΉαααααΌαααΆαααααα»αααααααΆααΆαααα α―αααΆααααα’αΆα ααΆαααΆααα·αα αααΆααααΆαα αα·αααααΉαααααΌα αα·αααΎαα αα α ααααααΆααααα ααα‘αα αα αααα»ααααα»ααα α¬αααααααα αααα αΆαααα’αΆα ααααΆααα ααΆααααααααααααα»αα
ααααααααα Python ααΌαααααα»αααααΆααααΆαααααΌα α¬ααααααααααααα αα α ααα»α αααα αααααααααααα αα·ααααα»αα αα»ααααααααΎ Python α’αΆα ααΉαααααααα»αααΉααααα½αααααΆααα "ααΎααΎααα½ααααααα’αααΈαααΆααα’ααα‘αΎααα·αααΆααΆααΆααΆαα’ααααααααΆαααααααααα?"α
αααααααααααα½ααα·αα·αααααααααααΌα ααΆ mypy αααααααΆααααα αΆααΆαααΎααααααααα±ααα’αααα’αα·ααααααααΌαααΆααΆααααΌαααΆααααααΆααααΆααα·αααααΆα’αααΈαααααα α αΎαααααα·αα·αααααΎαααΆααααααΆααααααααααααααΌαααΉαααΆαα’αα»αααααααααα·ααΈ (α αΎαααΆαααααΎαααααα·αα·αααααΎαα’αααα·ααΆαααααααΆ)α ααΆααΌαα ααΎαα’αΆα αα·ααΆαααΆαααΆααααααααααΆαααααααΆαααα ααΆαα ααααααααΎα ααΌα ααΆα―αααΆααααααΆααααα½ααα·αα·αααααααααα»αααααααααα
ααΆαααααΎααααΆααααααααααααααααααΆααα»ααααααααα·αααααααα α αΎααα½αααΆααΊαα·αααααΆααααΆαααααα»αααα
- αααααααααααα½ααα·αα·αααααααααα’αΆα
ααααΎαααα α»ααα½αα
ααα½αααΌα
(αα·ααα·αααΌα
)α α§ααΆα αααααααααΆααΊαα
αααααααα½αααααααα
ααααΎαααΆαααααα
None
α¬αααααααααα·αααααααααααα - ααΆαααααΌαα‘αΎααα·αααααΌαααΆαααααα½ααααΆαααααΆαα ααΈααααααααααααααα·αα·αααααααααααΆαααΆαααααΉαααααΌαααααΆααα’αααΈα’αααΈααααααααΌαααααΌαααααΆααααααΌαα αααα»ααααααΆαα½αααααΆααα ααΎααα·αα αΆαααΆα ααααααΉααααααΆααααΆαααααααααααααΌα 100% ααΆαα½αααΉαααΆαααααΎααααα ααααααα»αααααΈααΆααααα ααΆααααααΆαα·αα’αΆα αα αα½α αααααα ααΎααα·αα αΆαααΆα αααααααααααΈααααα ααααΆαααα ααΎααααΈαααααααααΌαα ααα»αααααα αΆαααααα
- ααΌααααΈαααα ααΎααααααααααααα ααΆααΏαα mypy α’αΆα ααααΎααΆααα·αα·ααααααααααααααααααα»ααααααααα½ααα·ααΆααΈα α αΎαααΆαα’αα»ααααααΆαααααΎαααααααΆααααααΆα αααΆααααααΆαααα·ααα·ααΆααΈα¬ααΌααααΈααααΆααΈα αααααααααααα½ααα·αα·ααααααααααααααα±ααα’αααααααααααααα·ααΈααΌαααα·αααααα’ααααΆαα αα·αα’αα»ααααΆαα±ααααΆααααααΎααΆαααΆαααααααΆααααΆαααΏαααΆααα»αα ααΆαααααααααΌαααΆααααααααααα»ααααα½α αα·ααα·ααΆααααα»αααΆααααααΆααΆαααΆαααααα―αααΆααααααα½αα’αααααΆααα·ααααααΆαα αα’α αα·αααααααΎααααΈααα½ααααααααααααααΌαααΏαααΆααα»αα
IDEs αα·αα’αααααααααα½αααΌα ααΆ PyCharm α¬ Visual Studio Code ααααΎααααΆααααΆαααααα αααΆααααααααααααα ααΎααααΈαααααα±ααα’αααα’αα·ααααααααΌαααΆααααααααΌα ααΆαααααα·α ααα α»α αα·αααΆαααΆαααααααααΆααααΆααααααΎαααΆααΆαααααααΎααΆααΌαα α α αΎαααΆαααααααααΆααααααΆα’ααααααααααααα½αα ααα½αααααΆαααΆαα’ααααααα»αααααα αααααΆααα’αααααααααααααα·ααΈαα½αα ααα½α ααΆααα’αααααααΊααΆα’αΆαα»αααααα αααααααα»αααΆααααα α·ααααααα»αααΆαααΆαα αααααΊααΆα’αααΈαααααΆαααααααααααααΆαααααααΆααααΈααΆαα’αα»ααααα ααααΈααααΎααααΆααααααααααΆαααααααααα·ααααααΌαα±ααααΆααααααααααα·αα·αααααααααααΆα ααααα‘ααααΌα ααΆ mypy αα αααααΈααΆααΆαα½αααααααΌαααΆαααααααααΆααααΆ mypy αα½ααααααΆααΆαααααααααααααα±ααααααααΆαα½αααΉαααΌααααααα
ααααααΆαααααααα mypy
αααααααα·αα mypy ααΆαα αΆααααααΎααα αααα»αα αααααα’ααααααα αααα»αααΈαααα»α Cambridge ααα»ααααΆαααααΆααα»ααααααααααα»αααΆαα αΌααα½αααΆαα½α Dropbox α αααα»αααΆαα αΌααα½αααΆαααααααααΆαααααΆαααααΆαααααΆααααααα·ααααααααα»α αααα»αααΆαααααα½αααααα½αααααΆααΆαααααΆαααΆααααα αΌαααΆααααΆαααααααα αα·αααΆαααααα αααα»αβααααΌαβααΆαβαααα»ααααα·αβαααβα’αααααβααααΈβααΈβααΆαβααΆαβαααα αΌαβαααβααα Jeremy Siek αα·α Walid Taha αα·αβαααβαααααα Typed Racket α αααα»αααΆαααααΆααΆαααααααααα·ααΈααααΎααΆααΆααααααααααα·ααΈααΌα ααααΆαααααΆαααααααααααααα - ααΈααααααΈαααΌα ααα αΌααααααΌαααααΆαααΌααααααΆαααΆααααΆααααααΆααα αααα»ααααααΆαα½αααααΆααα αααα»αα ααααΆααΆααΆ αα αααα»αααααααααααΆαααααααΆαααΆαα½α ααΆααΉααα·αααααΌαααααΎααΆααααααααααα½αααααααααααα αααααααααΆαααα½αααααΆαααΆααα’αααααααΊαααα·αααααΆαααααΆααααααΌαααααα·α αααα α ααΈααααααααααΌααααα·αααΆαααΆααααα αΌααα ααΆααα·ααααααααα αααααΆαααΆααααα αΌααααααααΆαααααααααααααααΌαααΆαααΆααααααααΆαααΌααααΌααΆαα ααααααααααα αααα·αααΆαααααααααΌαααΆαααα½ααααααΆαααΌααααΌααΆα ααα»αααααα αααα»αααααΆα 2010 ααΆααΊααΆαααα αΆααααα ααααααΌαααΆαααααααααααΆααααααα
ααΆαααΆαααΎααααααααα»ααααα»αααΆααααα½ααα·αα·αααααααααααΊαα·αααΆααααααααααΎ Python ααα αααα»ααα
αα·α αααα»αααΆαααααΎααΆααΆααΌα
αα½α "ααααΎαα
αααα"
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 α αΎαααααΎααΆααΎααααΈααααααααΌαα’αααααΆαα’αααααααααααα»αα α₯α‘αΌαααααααα»αααΆααααααααααα·αα·αααααααααααααααααααΆααΆααΆ Python αααααΆααααααααααααα Python αααααΆααΆααΆααααααααα! (ααΆααααααα α α·ααααααααααααΆαααααααααα½αα ααα½αααααααααΆααααααΆαα Alore ααΊαα·αααααααααΉα Python α αΎαααααα ααα’αΆα ααααααααΆααααΆααα αααα»αααααααα mypy codebase α )
ααΆααα·α ααΆααΆαααααΆααααααααααααααααααααααααααααα»ααα·αα’αΆα ααααΌαααΆαααα α ααΆ Python αα α ααα»α αααααα ααΆααΆαααΆαααααααα Python αααααΆααααααααααααα½αα ααα½αααααΆαααααααααααα αααΆααααααααααααα 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 α αααα»αααΆαααΆααααααααΆααααΆαααααΆααααααααααΌα’αααα ααααα ααα»αααααααα»αααΆαααααααα αααααα·αααα αααααΆαααΆααα·αα·αααααΎααααααααααα½αα―αααΎααα ααΆαααααααααααΆααα
αααα»αααΆααααα ααααΆααααα αΆαααΈαααααααααααααα»ααα PyCon 2013 αα Santa Claraα αααα»αααααΆααα·ααΆαα’αααΈααΏααααααΆαα½αααα Guido van Rossum αααααΆααααΉαααΆαααααΆα αααΆα Python ααααααα»αααααααΆααααΈαα·αα ααΆααααΆααααα α»ααααα αΌααααα»αα±αααααααΆααααΆαααααααααααααααΆαααααα½ααααααααα»α α αΎααα ααΆααααΉαααΆααααααααααααααααααΆα Python 3 α Python 3 ααΆααααααΆαααααααα’αααΈαα»αααΆα ααΌα ααααα§ααΆα ααααααααααα»αα’αΆα ααααΌαααΆααααααα‘αΎααα·αααΌα ααΆααααα αΆαααΆαααααα αααααΆαααααααα αααα»ααααααα·ααΈ Python ααααααΆα
def fib(n: int) -> int:
if n <= 1:
return n
else:
return fib(n - 1) + fib(n - 2)
αααα»αααααΌαααααααΎααΆααααααααααα½ααα½αα ααα½α (ααΆααααΌααααα»αα ααααααααααΆααααΆαααα»αααΆααααααΎαααΆαααααααααααααααΆαααααα½ααααααααα»ααααααΆααα ααα»ααααα) α ααΆαα·ααα Python 3.3 αααααΆααααα α»αααααααααα»αααααΆααΆαα αααααα αα·αααΆααααααΆαααααααα’αααααα αααα»αααΆααα·ααΆααααΆααΆαα½αααα Guido ααΆαα’ααΈαααα’αααΈααααααΆααααααααααααΆααααΆααα ααΆααΆαααααααααααααα αααΆαααααααααααααα ααΎαααΆααααααα α α·αααααααΎααα·ααααααααααααααααΆααα’αααα ααΆααΆααααααΎααααααααααααΆαααααααα»α ααα»ααααααΆαααΆααα·ααΆαααααα·α (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)
ααΆααΆαααααααααΆαααΆααΆααααααΌαααΆαα·αααααααααΆααααα (αα·ααααααααα) αα·αααΆαα·αααααΆαααα - α’αααααααααααααααΆαααΆαα’αααααα·αα·ααααααΆααααααΆα’αααααααΎααααΆααααΆααααααα α’αααΈααΆαααααααααααααααα·αααΌαααα’α₯αααα ααα αααααΆαααααΆαααΆαααααΆαααΆααΆααααααααααααα·αααααΆαα½αααααΌαααΆαααααΎααααΆαααα αααα»αααΌα Python αααααΆααα·αα·αααααααααααα α§ααααα Python αααααΆαααααΆαα αα·αααααΎαααΆαααααΎαααΆαααΌαααααααααΎαααΆαααΆααααααΆ αααααααΎα±ααααΆααΆααααααΆααααα½ααααααΆααα’αααα’αα·αααααααααα»αααΆααααα§αααααααααΈα
Guido ααααΆααααα α»ααααα αΌααααα»αα±ααα αΌααα½αααΆαα½α Dropbox αααααΆααααΈαααα»αααΆααααα αααα·ααααααααααα ααααΆααα·ααααΆαααααααα»αα αααααΊααΆααααααααααα½αα±ααα αΆααα’αΆαααααααααα»αααααΏα mypy α αΆααααααΎαα
αα βααΆαβααΆβααααβαααβ¦
α’αααα’αΆαααΆααΈαααα‘αΆαα! ααααα·αααΎα’αααααααΎ Python ααΌαααααΆααααΎαα’αααΈααΆαααααααΆααααααααααααα’ααααααααΎαααΆααΆααΆαααα
ααααα: www.habr.com