A linguagem de programação Python é famosa por sua simplicidade e concisão. Uma sintaxe simples e compreensível semelhante ao pseudo-código, bem como uma forte digitação dinâmica, contribuem para o treinamento rápido e indolor dos iniciantes.
O intérprete de idiomas cuida de todo o trabalho de baixo nível, liberando o programador da necessidade de gerenciamento manual de memória. A impossibilidade prática de obter uma falha de segmentação, bem como um sistema de exceção conveniente, equipado com mensagens claras, permitem depurar programas rapidamente. Situações em que suas quedas devido a um erro requerem depuração profunda são bastante raras.
Inteiros insubstituíveis e segurança ao trabalhar com os contêineres da biblioteca padrão fazem do Python um bom meio de pré-prototipar idéias, e um grande número de bibliotecas matemáticas de alta qualidade determina a liderança dessa linguagem nos campos de aprendizado de máquina, análise de dados e computação científica.
Programadores mais sofisticados apreciam essa linguagem por ferramentas convenientes para a construção de dutos atrasados ou, como costumam dizer, preguiçosos. No Python, essa funcionalidade é implementada por iteradores e assim por diante. geradores. A biblioteca de programação assíncrona também é muito boa.
Mas nem tudo nesse idioma é fácil e simples. Além de uma solução arquitetônica específica chamada GIL , incorporada no principal intérprete da linguagem CPython
e problemas relacionados à eficiência da multithreading, o Python também possui desvantagens mais fundamentais que limitam muito seu escopo.
Rapidez
, , . , , API , 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
— .
Seja como for, o Python é uma ótima ferramenta para escrever código rapidamente. Suas amplas capacidades dinâmicas, assim como sua compreensibilidade e, não tenho medo dessa palavra, a beleza da sintaxe são determinadas pelo fato de que o processo de compilação de programas realmente causa satisfação. No entanto, como qualquer ferramenta, essa linguagem tem suas desvantagens e é útil lembrá-las antes de iniciar seus projetos.