рдкрд╛рдпрдерди рднрд╛рд╖рд╛ рдХрд╛ рдореБрдЦреНрдп рдиреБрдХрд╕рд╛рди

рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдЕрдкрдиреА рд╕рд╛рджрдЧреА рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рд┐рджреНрдз рд╣реИред рдЫрджреНрдо рдХреЛрдб рдХреЗ рд╕рдорд╛рди рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╡рд╛рдХреНрдп рд░рдЪрдирд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдордЬрдмреВрдд рдЧрддрд┐рд╢реАрд▓ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рддреНрд╡рд░рд┐рдд рдФрд░ рджрд░реНрдж рд░рд╣рд┐рдд рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИред


рднрд╛рд╖рд╛ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕рднреА рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддрд╛ рд╣реИ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдореИрдиреБрдЕрд▓ рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдореБрдХреНрдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╡рд┐рднрд╛рдЬрди рджреЛрд╖ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрд╕рдВрднрд╡рддрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рд╕рдВрджреЗрд╢реЛрдВ рд╕реЗ рд╕реБрд╕рдЬреНрдЬрд┐рдд рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЕрдкрд╡рд╛рдж рдкреНрд░рдгрд╛рд▓реА, рдЖрдкрдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдбрд┐рдмрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЬрдм рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг рдЙрдирдХреЗ рдЧрд┐рд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЧрд╣рд░реА рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддреЛ рд╡реЗ рдХрд╛рдлреА рджреБрд░реНрд▓рдн рд╣реИрдВред


рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЕрдкреВрд░рдгреАрдп рдкреВрд░реНрдгрд╛рдВрдХ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдкрд╛рдпрдерди рдХреЛ рдкреВрд░реНрд╡-рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд╛рдзрди рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдЧрдгрд┐рддреАрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдорд╢реАрди рд╕реАрдЦрдиреЗ, рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЗрд╕ рднрд╛рд╖рд╛ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред


рдЕрдзрд┐рдХ рдкрд░рд┐рд╖реНрдХреГрдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╡рд┐рд▓рдВрдмрд┐рдд рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рднрд╛рд╖рд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдЖрд▓рд╕реА, рдкрд╛рдЗрдкрд▓рд╛рдЗрдиред рдкрд╛рдпрдерди рдореЗрдВ, рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдФрд░ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдЬрдирд░реЗрдЯрд░ред рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рднреА рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╣реИред


рд▓реЗрдХрд┐рди рдЗрд╕ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдЖрд╕рд╛рди рдФрд░ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдЬреАрдЖрдИрдПрд▓ рдирд╛рдордХ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд╕рдорд╛рдзрд╛рди рдХреЗ рдЕрд▓рд╛рд╡рд╛ , рднрд╛рд╖рд╛ рдХреЗ рдореБрдЦреНрдп рд╡реНрдпрд╛рдЦреНрдпрд╛рдХрд╛рд░ CPythonрдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреА рджрдХреНрд╖рддрд╛ рдХреЗ рд╕рд╛рде рд╕рдиреНрдирд┐рд╣рд┐рдд , рдкрд╛рдпрдерди рдореЗрдВ рдЕрдзрд┐рдХ рдореМрд▓рд┐рдХ рдХрдорд┐рдпрд╛рдВ рднреА рд╣реИрдВ рдЬреЛ рдЗрд╕рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддреА рд╣реИрдВред


рдЧрддрд┐


рдЗрдирдореЗрдВ рд╕реЗ рдореБрдЦреНрдп рдХреЛ рдЗрд╕рдХреА рд╕реБрд╕реНрддреА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдбрд┐рдЧреНрд░реА рдХреЗ рд╕рд╛рде рдиреНрдпрд╛рдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ AOT рд╕рдВрдХрд▓рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдПрдкреАрдЖрдИ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдЖрд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ ред рдлрд┐рд▓рд╣рд╛рд▓ рдЗрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, C рдФрд░ C ++ред рдкрд╣рд▓рд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, NumPyрдордирдорд╛рдирд╛ рдЖрдпрд╛рдо рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЧрдгрд┐рддреАрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ ред рджреВрд╕рд░реЗ рдкрд░ - рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдврд╝рддреА рд░реВрдкрд░реЗрдЦрд╛ PyTorchред


, - . , , , Cython, , , .


, , . :


  • Python . Bash, Sh , . . : Linux.
  • . : sqlite3, Django ..
  • , , . Python API . : NumPy, CuPy, PyTorch ..

Python


:


  • .
  • .

CPython, :


typedef struct _object {
    Py_ssize_t ob_refcnt;
    PyTypeObject *ob_type;
} PyObject;

ob_refcnt , . , , , , . ob_type . , , , , , .


, . , .


Python, -, . , .


. , [100, 200, 300, 400, 500], , , , int, , . , , , . , , .



, , Python, . , , , Java , , , . , Java, тАФ , JIT-?


(PyPy ..) Numba, , . , , Python тАФ :


  • -,


    , , , . .


    - :


    >>> x = 3
    >>> x = '36'
    >>> 
    >>> def foo(a, b):
    >>>     if b:
    >>>         return [a]
    >>>     return a
    >>> 
    >>> foo(x, True)
    ['36']
    
    >>> foo(x, False)
    '36'
    
    >>> class Bar:
    >>>     __slots__ = ('baz',)
    >>> 
    >>> x = Bar()
    >>> x.baz = 332
    >>> x.baz
    332
    
    >>> x.baz = 'Some string'
    >>> x.baz
    'Some string'
    
    >>> foo(x, True)
    [<__main__.Bar at 0x10ff0d700>]

    , . , , , , тАФ , .


  • тАФ .


    , , . , :


    >>> a = 5
    >>> b = True
    >>> 
    >>> if b:
    >>>     x = 100
    >>> x
    100
    
    >>> for i in range(10):
    >>>     for j in range(5):
    >>>         pass
    >>> print(i, j)
    9 4

  • . :


    >>> class Meta(type):
    >>>     def __new__(cls, name, bases, attrs):
    >>>         if list in bases:
    >>>             return super().__new__(cls, name, (tuple,), attrs)
    >>>         return super().__new__(cls, name, (list,), attrs)
    >>> 
    >>> class Foo(list, metaclass=Meta):
    >>>     pass
    >>> 
    >>> class Bar(tuple, metaclass=Meta):
    >>>     pass
    >>> 
    >>> issubclass(Foo, list)
    False
    >>> issubclass(Foo, tuple)
    True
    >>> issubclass(Bar, tuple)
    False
    >>> issubclass(Bar, list)
    True

    . , , , . , , , тАФ , . .


    , , , .


    Foo Bar Meta, , . , list, , , tuple, тАФ  list.


    .


  • , .


    >>> from collections.abc import Iterable
    >>> 
    >>> def wrap_class(cls):
    >>>     if issubclass(cls, Iterable):
    >>>         class FooCounter(cls):
    >>>             def count_foo(self):
    >>>                 return sum(1 for item in self if item == 'foo')
    >>> 
    >>>         return FooCounter
    >>>     raise TypeError(f'Class {cls} is not an iterable type')
    >>> 
    >>> wrap_class(list)([2, 3, 'foo', 'bar', 'baz', 'foo']).count_foo()
    2


Python. , MyPy, . , , . , , , typing , . , wrap_class -, .


, , Python 3.8, , , , , - .


, , , . , , Python Numba.



Python, : . , .


, . , , Julia. CPython тАФ  .


рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдкрд╛рдпрдерди рдХреЛрдб рдлрд╛рд╕реНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рдЙрдкрдХрд░рдг рд╣реИред рдЗрд╕рдХреА рд╡реНрдпрд╛рдкрдХ рдЧрддрд┐рд╢реАрд▓ рдХреНрд╖рдорддрд╛, рд╕рд╛рде рд╣реА рдЗрд╕рдХреА рд╕рдордЭ рдФрд░, рдореИрдВ рдЗрд╕ рд╢рдмреНрдж рд╕реЗ рдбрд░рддрд╛ рдирд╣реАрдВ рд╣реВрдВ, рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреА рд╕реБрдВрджрд░рддрд╛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрддреБрд╖реНрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИред рдлрд┐рд░ рднреА, рдХрд┐рд╕реА рднреА рдЙрдкрдХрд░рдг рдХреА рддрд░рд╣, рдЗрд╕ рднрд╛рд╖рд╛ рдХреА рдЕрдкрдиреА рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рдпрд╛рдж рд░рдЦрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИред


All Articles