Python (linguagem de programação)

Da Wikipédia, a enciclopédia livre
Ir para navegação Pular para pesquisar

Pitão
Logotipo do Python e wordmark.svg
ParadigmaMulti-paradigma : orientado a objetos , [1] procedimental ( imperativo ), funcional , estruturado , reflexivo
Projetado porGuido van Rossum
DesenvolvedorPython Software Foundation
Apareceu pela primeira vez20 de fevereiro de 1991 ; 30 anos atrás [2] ( 20/02/1991 )
Versão estável
3.9.7 [3] Edite isso no Wikidata / 30 de agosto de 2021 ; 9 dias atrás ( 30 de agosto de 2021 )
Disciplina de digitaçãoPato , tipagem dinâmica e forte ; [4] gradual (desde 3.5, mas ignorado em CPython ) [5]
SOWindows , Linux / UNIX , macOS e mais [6]
LicençaLicença Python Software Foundation
Extensões de nome de arquivo.py, .pyi, .pyc, .pyd, .pyo (antes de 3.5), [7] .pyw, .pyz (desde 3.5) [8]
Local na rede Internetwww .python .org
Implementações principais
CPython , PyPy , Stackless Python , MicroPython , CircuitPython , IronPython , Jython
Dialetos
Cython , RPython , Starlark [9]
Influenciado por
ABC , [10] Ada , [11] ALGOL 68 , [12] APL , [13] C , [14] C ++ , [15] CLU , [16] Dylan , [17] Haskell , [18] Ícone , [19 ] Java , [20] Lisp , [21] Modula-3 , [15] Perl , ML padrão [13]
Influenciado
Apache Groovy , Boo , Cobra , CoffeeScript , [22] D , F # , Genie , [23] Go , JavaScript , [24] [25] Julia , [26] Nim , Ring, [27] Ruby , [28] Swift [ 29]

Python é uma linguagem de programação interpretada de alto nível para fins gerais . Sua filosofia de design enfatiza a legibilidade do código com o uso de indentação significativa . Suas construções de linguagem , bem como sua abordagem orientada a objetos , visam ajudar os programadores a escrever código claro e lógico para projetos de pequena e grande escala. [30]

Python é tipado dinamicamente e coletado como lixo . Ele suporta múltiplos paradigmas de programação , incluindo programação estruturada (particularmente procedural ), orientada a objetos e funcional . É frequentemente descrito como uma linguagem de "baterias incluídas" devido à sua abrangente biblioteca de padrões . [31]

Guido van Rossum começou a trabalhar em Python no final da década de 1980, como sucessor da linguagem de programação ABC , e a lançou pela primeira vez em 1991 como Python 0.9.0. [32] Python 2.0 foi lançado em 2000 e introduziu novos recursos, como compreensão de listas e um sistema de coleta de lixo usando contagem de referência . Python 3.0 foi lançado em 2008 e foi uma revisão importante da linguagem que não é totalmente compatível com versões anteriores . Python 2 foi descontinuado com a versão 2.7.18 em 2020. [33]

Python é consistentemente classificado como uma das linguagens de programação mais populares. [34] [35] [36] [37]

História

O designer de Python, Guido van Rossum , na OSCON 2006

Python foi concebida no final dos anos 1980 [38] por Guido van Rossum no Centrum Wiskunde & Informatica (CWI) na Holanda como uma sucessora da linguagem de programação ABC , que foi inspirada em SETL , [39] capaz de lidar com exceções e fazer interface com o Sistema operacional Amoeba . [10] Sua implementação começou em dezembro de 1989. [40] Van Rossum assumiu a responsabilidade exclusiva pelo projeto, como o desenvolvedor principal, até 12 de julho de 2018, quando ele anunciou suas "férias permanentes" de suas responsabilidades como ditador benevolente para a vida do Python, um título que a comunidade Python concedeu a ele para refletir seu compromisso de longo prazo como o principal tomador de decisões do projeto. [41] Em janeiro de 2019, os desenvolvedores do núcleo Python ativos elegeram um "Conselho Diretor" de 5 membros para liderar o projeto. [42] Em 2021, os atuais membros deste conselho são Barry Warsaw, Brett Cannon, Carol Willing, Thomas Wouters e Pablo Galindo Salgado. [43]

Python 2.0 foi lançado em 16 de outubro de 2000, com muitos novos recursos importantes, incluindo um coletor de lixo com detecção de ciclo e suporte para Unicode . [44]

Python 3.0 foi lançado em 3 de dezembro de 2008. Foi uma revisão importante da linguagem que não é totalmente compatível com versões anteriores . [45] Muitos de seus principais recursos foram portados para Python 2.6.x [46] e séries de versões 2.7.x. As versões do Python 3 incluem o 2to3utilitário, que automatiza (pelo menos parcialmente) a tradução do código do Python 2 para o Python 3. [47]

A data de fim de vida do Python 2.7 foi inicialmente definida em 2015, em seguida, adiada para 2020 devido à preocupação de que um grande corpo de código existente não pudesse ser facilmente encaminhado para o Python 3. [48] [49] Sem mais patches de segurança ou outras melhorias serão lançadas para ele. [50] [51] Com o fim da vida útil do Python 2 , apenas o Python 3.6.x [52] e posterior são suportados.

Python 3.9.2 e 3.8.8 foram acelerados [53] já que todas as versões do Python (incluindo 2.7 [54] ) tinham problemas de segurança, levando a uma possível execução remota de código [55] e envenenamento do cache da web . [56]

Filosofia de design e características

Python é uma linguagem de programação multiparadigma . Programação orientada a objetos e programação estruturada são totalmente suportadas, e muitos de seus recursos suportam programação funcional e programação orientada a aspectos (incluindo por metaprogramação [57] e metaobjetos (métodos mágicos)). [58] Muitos outros paradigmas são suportados por meio de extensões, incluindo design by contract [59] [60] e programação lógica . [61]

Python usa tipagem dinâmica e uma combinação de contagem de referência e um coletor de lixo com detecção de ciclo para gerenciamento de memória . [62] Ele também possui resolução dinâmica de nomes ( vinculação tardia ), que vincula métodos e nomes de variáveis ​​durante a execução do programa.

O design do Python oferece algum suporte para programação funcional na tradição Lisp . Tem filter, mape reducefunções; listar compreensões , dicionários , conjuntos e expressões geradoras . [63] A biblioteca padrão tem dois módulos (itertools e functools) que implementam ferramentas funcionais emprestadas de Haskell e Standard ML . [64]

A filosofia central da linguagem é resumida no documento The Zen of Python ( PEP 20 ), que inclui aforismos como: [65]

  • Belo é melhor do que feio.
  • Explícito é melhor do que implícito.
  • Simples é melhor que complexo.
  • Complexo é melhor do que complicado.
  • A legibilidade conta.

Em vez de ter todas as suas funcionalidades embutidas em seu núcleo, o Python foi projetado para ser altamente extensível (com módulos). Essa modularidade compacta o tornou particularmente popular como meio de adicionar interfaces programáveis ​​aos aplicativos existentes. A visão de Van Rossum de uma pequena linguagem central com uma grande biblioteca padrão e intérprete facilmente extensível originou-se de suas frustrações com o ABC , que adotou a abordagem oposta. [38]

Python se esforça para uma sintaxe e gramática mais simples e menos confusas, enquanto dá aos desenvolvedores uma escolha em sua metodologia de codificação. Em contraste com Perl 's ' não é mais do que uma maneira de fazê-lo ' lema, Python abraça uma 'deve haver um e de preferência apenas uma maneira -obvious para fazê-lo' filosofia de design. [65] Alex Martelli , um Fellow da Python Software Foundation e autor do livro Python, escreve que "Descrever algo como 'inteligente' não é considerado um elogio na cultura Python." [66]

Os desenvolvedores do Python se esforçam para evitar a otimização prematura e rejeitam os patches para partes não críticas da implementação de referência do CPython que ofereceriam aumentos marginais na velocidade ao custo da clareza. [67] Quando a velocidade é importante, um programador Python pode mover funções críticas de tempo para módulos de extensão escritos em linguagens como C, ou usar PyPy , um compilador just-in-time . Cython também está disponível, o que traduz um script Python em C e faz chamadas de API diretas de nível C para o interpretador Python.

Os desenvolvedores do Python pretendem manter a linguagem divertida de usar. Isso se reflete em seu nome - uma homenagem ao grupo de comédia britânico Monty Python [68] - e em abordagens ocasionalmente divertidas de tutoriais e materiais de referência, como exemplos que se referem a spam e ovos (uma referência a um esboço de Monty Python ). do foo e bar padrão . [69] [70]

Um comum neologismo na comunidade Python é pythônico , que pode ter uma ampla gama de significados relacionados ao estilo de programa. Dizer que o código é pythônico é dizer que ele usa bem as expressões do Python, que é natural ou mostra fluência na linguagem, que está em conformidade com a filosofia minimalista do Python e com ênfase na legibilidade. Em contraste, o código que é difícil de entender ou que é lido como uma transcrição grosseira de outra linguagem de programação é chamado de impotônico . [71] [72]

Usuários e admiradores de Python, especialmente aqueles considerados bem informados ou experientes, são freqüentemente chamados de Pythonistas . [73] [74]

Sintaxe e semântica

Python foi criado para ser uma linguagem de fácil leitura. Sua formatação é visualmente organizada e geralmente usa palavras-chave em inglês, enquanto outros idiomas usam pontuação. Ao contrário de muitas outras linguagens, ele não usa chaves para delimitar blocos, e pontos-e-vírgulas após as instruções são permitidos, mas raramente, ou nunca, usados. Ele tem menos exceções sintáticas e casos especiais do que C ou Pascal . [75]

Recuo

Python usa recuo de espaço em branco , em vez de colchetes ou palavras-chave, para delimitar blocos . Um aumento no recuo ocorre após certas declarações; uma diminuição no recuo significa o fim do bloco atual. [76] Assim, a estrutura visual do programa representa com precisão a estrutura semântica do programa. [77] Este recurso é algumas vezes denominado regra de impedimento , que algumas outras línguas compartilham, mas na maioria das línguas a indentação não tem nenhum significado semântico. O tamanho de recuo recomendado é de quatro espaços. [78]

Demonstrações e de controlo de fluxo

As declarações do Python incluem (entre outras):

  • A declaração de atribuição , usando um único sinal de igual =.
  • A ifinstrução, que executa condicionalmente um bloco de código, junto com elsee elif(uma contração de else-if).
  • A forinstrução, que itera sobre um objeto iterável, capturando cada elemento para uma variável local para uso pelo bloco anexado.
  • A whileinstrução, que executa um bloco de código, desde que sua condição seja verdadeira.
  • A tryinstrução, que permite que exceções levantadas em seu bloco de código anexado sejam capturadas e tratadas por exceptcláusulas; ele também garante que o código de limpeza em um finallybloco sempre será executado, independentemente de como o bloco termina.
  • A raiseinstrução, usada para levantar uma exceção especificada ou relançar uma exceção detectada.
  • A classinstrução, que executa um bloco de código e anexa seu namespace local a uma classe , para uso em programação orientada a objetos.
  • A defdeclaração, que define uma função ou método .
  • A withinstrução, que inclui um bloco de código dentro de um gerenciador de contexto (por exemplo, adquirir um bloqueio antes que o bloco de código seja executado e liberar o bloqueio depois, ou abrir um arquivo e, em seguida, fechá-lo), permitindo a aquisição de recurso-é-inicialização Comportamento semelhante a (RAII) e substitui um idioma try / finally comum. [79]
  • A breakinstrução sai de um loop.
  • A continueinstrução pula esta iteração e continua com o próximo item.
  • A delinstrução remove uma variável, o que significa que a referência do nome ao valor é excluída e tentar usar essa variável causará um erro. Uma variável excluída pode ser reatribuída.
  • A passdeclaração, que funciona como um NOP . É sintaticamente necessário para criar um bloco de código vazio.
  • A assertinstrução, usada durante a depuração para verificar as condições que devem ser aplicadas.
  • A yieldinstrução, que retorna um valor de uma função geradora e yieldtambém é um operador. Este formulário é usado para implementar co-rotinas .
  • A returninstrução, usada para retornar um valor de uma função.
  • A importinstrução, que é usada para importar módulos cujas funções ou variáveis ​​podem ser usadas no programa atual.

A instrução de atribuição ( =) opera vinculando um nome como uma referência a um objeto separado e alocado dinamicamente . As variáveis ​​podem ser posteriormente rebatidas a qualquer momento para qualquer objeto. Em Python, um nome de variável é um portador de referência genérico e não tem um tipo de dados fixo associado a ele. Porém, em um determinado momento, uma variável se referirá a algum objeto, que terá um tipo. Isso é conhecido como tipagem dinâmica e é contrastado com linguagens de programação tipadas estaticamente , onde cada variável pode conter apenas valores de um determinado tipo.

Python não suporta otimização de chamada final ou continuações de primeira classe e, de acordo com Guido van Rossum, nunca será. [80] [81] No entanto, um melhor suporte para funcionalidade semelhante à co-rotina é fornecido, estendendo os geradores de Python . [82] Antes de 2.5, os geradores eram iteradores preguiçosos ; a informação foi passada unidirecionalmente para fora do gerador. No Python 2.5, é possível passar informações de volta para uma função geradora e, no Python 3.3, as informações podem ser passadas por vários níveis de pilha. [83]

Expressões

Algumas expressões Python são semelhantes às encontradas em linguagens como C e Java , enquanto outras não:

  • Adição, subtração e multiplicação são iguais, mas o comportamento da divisão é diferente. Existem dois tipos de divisões em Python. Eles são divisão de piso (ou divisão inteira) //e /divisão de ponto flutuante . [84] Python também usa o **operador para exponenciação.
  • A partir do Python 3.5, o novo @operador infixo foi introduzido. Ele deve ser usado por bibliotecas como a NumPy para multiplicação de matrizes . [85] [86]
  • A partir do Python 3.8, a sintaxe :=, chamada de 'operador walrus', foi introduzida. Ele atribui valores a variáveis ​​como parte de uma expressão maior. [87]
  • Em Python, ==compara por valor, versus Java, que compara numéricos por valor [88] e objetos por referência. [89] (Comparações de valor em Java em objetos podem ser realizadas com o equals()método.) O isoperador Python pode ser usado para comparar identidades de objeto (comparação por referência). Em Python, as comparações podem ser encadeadas, por exemplo .a <= b <= c
  • Python usa as palavras and, or, notpara seus operadores booleanos em vez do simbólico &&, ||, !usado em Java e C.
  • Python tem um tipo de expressão denominado compreensão de lista , bem como uma expressão mais geral denominada expressão geradora . [63]
  • Funções anônimas são implementadas usando expressões lambda ; no entanto, eles são limitados porque o corpo pode ser apenas uma expressão.
  • Expressões condicionais em Python são escritas como [90] (diferente em ordem de operandos do operador comum a muitas outras linguagens).x if c else yc ? x : y
  • Python faz uma distinção entre listas e tuplas . As listas são escritas como , são mutáveis ​​e não podem ser usadas como chaves de dicionários (as chaves de dicionário devem ser imutáveis em Python). As tuplas são escritas como , são imutáveis ​​e, portanto, podem ser usadas como chaves de dicionários, desde que todos os elementos da tupla sejam imutáveis. O operador pode ser usado para concatenar duas tuplas, o que não modifica diretamente seu conteúdo, mas, em vez disso, produz uma nova tupla contendo os elementos de ambas as tuplas fornecidas. Assim, dada a variável inicialmente igual a , executando primeiro avalia , que produz , que é então atribuída de volta a[1, 2, 3](1, 2, 3)+t(1, 2, 3)t = t + (4, 5)t + (4, 5)(1, 2, 3, 4, 5)t, assim efetivamente "modificando o conteúdo" de t, enquanto se conforma à natureza imutável dos objetos de tupla. Os parênteses são opcionais para tuplas em contextos não ambíguos. [91]
  • Python apresenta desempacotamento de sequência em que múltiplas expressões, cada uma avaliando qualquer coisa que pode ser atribuída (uma variável, uma propriedade gravável, etc.), são associadas de maneira idêntica àquela formando literais de tupla e, como um todo, são colocadas no lado esquerdo do sinal de igual em uma instrução de atribuição. A instrução espera um objeto iterável no lado direito do sinal de igual que produz o mesmo número de valores que as expressões graváveis ​​fornecidas quando iterado e iterará por meio dele, atribuindo cada um dos valores produzidos à expressão correspondente à esquerda . [92]
  • Python tem um operador de "formato de string" %. Isso funciona de forma análoga para printfformatar strings em C, por exemplo, avalia para . No Python 3 e 2.6+, isso foi complementado pelo método da classe, por exemplo . Python 3.6 adicionado "F-cordas": . [93]"spam=%s eggs=%d" % ("blah", 2)"spam=blah eggs=2"format()str"spam={0} eggs={1}".format("blah", 2)blah = "blah"; eggs = 2; f'spam={blah} eggs={eggs}'
  • Strings em Python podem ser concatenadas , "adicionando-as" (mesmo operador para adicionar inteiros e flutuantes). Por exemplo, retornos . Mesmo que suas strings contenham números, eles ainda são adicionados como strings em vez de inteiros. Por exemplo, retornos ."spam" + "eggs""spameggs""2" + "2""22"
  • Python tem vários tipos de literais de string :
    • Strings delimitadas por aspas simples ou duplas. Ao contrário de shells Unix , Perl e linguagens influenciadas por Perl, aspas simples e aspas duplas funcionam de forma idêntica. Ambos os tipos de string usam a barra invertida ( \) como um caractere de escape . A interpolação de string tornou-se disponível no Python 3.6 como "literais de string formatadas". [93]
    • Strings entre aspas triplas, que começam e terminam com uma série de três aspas simples ou duplas. Eles podem abranger várias linhas e funcionar como aqui documentos em shells, Perl e Ruby .
    • Variedades de string brutas, denotadas pela prefixação do literal de string com um r. As sequências de escape não são interpretadas; portanto, as strings brutas são úteis onde barras invertidas literais são comuns, como expressões regulares e caminhos no estilo do Windows . Compare " @-quoting" em C # .
  • Python tem índice de matriz e expressões de divisão de matriz em listas, denotadas como a[key], ou . Os índices são baseados em zero e os índices negativos são relativos ao final. As fatias levam elementos do índice inicial até, mas não incluindo, o índice final . O terceiro parâmetro de fatia, denominado step ou stride , permite que os elementos sejam pulados e revertidos. Os índices de fatia podem ser omitidos, por exemplo, retorna uma cópia de toda a lista. Cada elemento de uma fatia é uma cópia superficial .a[start:stop]a[start:stop:step]a[:]

Em Python, uma distinção entre expressões e instruções é rigidamente aplicada, em contraste com linguagens como Common Lisp , Scheme ou Ruby . Isso leva à duplicação de algumas funcionalidades. Por exemplo:

  • Compreensões de lista vs. forloops
  • Expressões condicionais vs. ifblocos
  • As funções internas eval()vs. exec()funções (no Python 2, execé uma declaração); o primeiro é para expressões, o último é para declarações.

As instruções não podem fazer parte de uma expressão, portanto, lista e outras compreensões ou expressões lambda , sendo todas expressões, não podem conter instruções. Um caso particular disso é que uma instrução de atribuição como não pode fazer parte da expressão condicional de uma instrução condicional. Isso tem a vantagem de evitar um erro C clássico de confundir um operador de atribuição com um operador de igualdade em condições: é código C sintaticamente válido (mas provavelmente não intencional), mas causa um erro de sintaxe em Python. a = 1===if (c = 1) { ... }if c = 1: ...

Métodos

Métodos em objetos são funções anexadas à classe do objeto; a sintaxe é, para métodos e funções normais, açúcar sintático para . Os métodos Python têm um parâmetro explícito para acessar dados de instância , em contraste com o implícito (ou ) em algumas outras linguagens de programação orientadas a objetos (por exemplo, C ++ , Java, Objective-C ou Ruby ). [94] Além disso, o Python também fornece métodos, às vezes chamados de métodos dunderinstance.method(argument)Class.method(instance, argument)selfselfthisdevido aos seus nomes que começam e terminam com sublinhados duplos, para estender a funcionalidade da classe personalizada para oferecer suporte a funções nativas, como impressão, comprimento, comparação, suporte para operações aritméticas, conversão de tipo e muito mais. [95]

Digitando

A hierarquia de tipo padrão em Python 3

Python usa digitação duck e tem objetos digitados, mas nomes de variáveis ​​não digitados. As restrições de tipo não são verificadas em tempo de compilação ; em vez disso, as operações em um objeto podem falhar, significando que o objeto fornecido não é de um tipo adequado. Apesar de ser tipado dinamicamente , Python é fortemente tipado , proibindo operações que não sejam bem definidas (por exemplo, adicionar um número a uma string) em vez de tentar silenciosamente entendê-las.

Python permite que os programadores definam seus próprios tipos usando classes , que são mais frequentemente usadas para programação orientada a objetos . Novas instâncias de classes são construídas chamando a classe (por exemplo, ou ), e as classes são instâncias da metaclasse (ela mesma uma instância de si mesma), permitindo metaprogramação e reflexão . SpamClass()EggsClass() type

Antes da versão 3.0, Python teve dois tipos de aulas: de estilo antigo e novo estilo . [96] A sintaxe de ambos os estilos é a mesma, a diferença é se a classe objecté herdada de, direta ou indiretamente (todas as classes de novo estilo herdam de objecte são instâncias de type). Nas versões do Python 2 a partir do Python 2.2, ambos os tipos de classes podem ser usados. As classes de estilo antigo foram eliminadas no Python 3.0.

O plano de longo prazo é suportar a digitação gradual [97] e a partir do Python 3.5, a sintaxe da linguagem permite especificar tipos estáticos, mas eles não são verificados na implementação padrão, CPython . Um verificador de tipo estático opcional experimental chamado mypy oferece suporte à verificação de tipo em tempo de compilação. [98]

Resumo dos tipos integrados do Python 3
Modelo Mutabilidade Descrição Exemplos de sintaxe
bool imutável Valor booleano True
False
bytearray mutável Sequência de bytes bytearray(b'Some ASCII')
bytearray(b"Some ASCII")
bytearray([119, 105, 107, 105])
bytes imutável Sequência de bytes b'Some ASCII'
b"Some ASCII"
bytes([119, 105, 107, 105])
complex imutável Número complexo com partes reais e imaginárias 3+2.7j
3 + 2.7j
dict mutável Matriz associativa (ou dicionário) de pares de chave e valor; podem conter tipos mistos (chaves e valores), as chaves devem ser do tipo hashble {'key1': 1.0, 3: False}
{}
ellipsisuma imutável Um marcador de posição de reticências para ser usado como um índice em matrizes NumPy ...
Ellipsis
float imutável Número de ponto flutuante de precisão dupla . A precisão depende da máquina, mas na prática geralmente é implementada como um número IEEE 754 de 64 bits com 53 bits de precisão. [99]

1.414

frozenset imutável Conjunto não ordenado , não contém duplicatas; pode conter tipos mistos, se hashable frozenset([4.0, 'string', True])
int imutável Inteiro de magnitude ilimitada [100] 42
list mutável Lista , pode conter tipos mistos [4.0, 'string', True]
[]
NoneTypeuma imutável Um objeto que representa a ausência de um valor, geralmente chamado de nulo em outras linguagens None
NotImplementedTypeuma imutável Um espaço reservado que pode ser retornado de operadores sobrecarregados para indicar tipos de operando sem suporte. NotImplemented
range imutável Uma sequência de números comumente usada para fazer um loop de um número específico de vezes em forloops [101] range(1, 10)
range(10, -5, -2)
set mutável Conjunto não ordenado , não contém duplicatas; pode conter tipos mistos, se hashable {4.0, 'string', True}
set()
str imutável Uma string de caracteres : sequência de pontos de código Unicode 'Wikipedia'
"Wikipedia"
"" "Abrangendo 
várias 
linhas" ""
tuple imutável Pode conter tipos mistos (4.0, 'string', True)
('single element',)
()

^ a Não acessível diretamente pelo nome

Operações aritméticas

Python tem os símbolos usuais para os operadores aritméticos ( +, -, *, /), o operador de divisão chão //e a operação de módulo % (em que a parte restante pode ser negativa, por exemplo 4 % -3 == -2). Ele também tem **por exponenciação , por exemplo, 5**3 == 125e 9**0.5 == 3.0, e um operador multiplicação matricial @. [102] Esses operadores funcionam como na matemática tradicional; com as mesmas regras de precedência , os operadores infixam ( +e -também podem ser unários para representar números positivos e negativos, respectivamente).

A divisão entre inteiros produz resultados de ponto flutuante. O comportamento da divisão mudou significativamente ao longo do tempo: [103]

  • O Python atual (ou seja, desde o 3.0) mudou /para ser sempre uma divisão de ponto flutuante, por exemplo .5/2 == 2.5
  • O Python 2.2 alterou a divisão inteira para arredondar em direção ao infinito negativo, por exemplo, 7/3 == 2e -7/3 == -3. O //operador de divisão de piso foi apresentado. Assim 7//3 == 2, -7//3 == -3, 7.5//3 == 2.0e -7.5//3 == -3.0. Adicionar faz com que um módulo use as regras do Python 3.0 para divisão (veja a seguir).from __future__ import division
  • O Python 2.1 e anteriores usavam o comportamento de divisão do C. O /operador é uma divisão inteira se ambos os operandos forem inteiros e, caso contrário, uma divisão de ponto flutuante. A divisão inteira é arredondada para 0, por exemplo, e .7/3 == 2-7/3 == -2

Em termos de Python, /é a verdadeira divisão (ou simplesmente divisão ) e //é a divisão do piso. / antes da versão 3.0 é a divisão clássica . [103]

O arredondamento para o infinito negativo, embora diferente da maioria dos idiomas, adiciona consistência. Por exemplo, significa que a equação é sempre verdadeira. Isso também significa que a equação é válida para valores positivos e negativos de . No entanto, manter a validade desta equação significa que enquanto o resultado de está, como esperado, no intervalo semiaberto [0, b ), onde é um número inteiro positivo, ele deve estar no intervalo ( b , 0] quando é negativo. [104](a + b)//b == a//b + 1b*(a//b) + a%b == aaa%bbb

Python fornece uma roundfunção para arredondar um float para o inteiro mais próximo. Para desempate , o Python 3 usa arredondar para igual : round(1.5)e round(2.5)ambos produzem 2. [105] As versões anteriores a 3 usavam arredondamento de zero : round(0.5)é 1.0, round(-0.5)é −1.0. [106]

Python permite expressões booleanas com múltiplas relações de igualdade de uma maneira consistente com o uso geral em matemática. Por exemplo, a expressão a < b < ctesta se aé menor que be bmenor que c. [107] Linguagens derivadas de C interpretam essa expressão de maneira diferente: em C, a expressão seria avaliada primeiro a < b, resultando em 0 ou 1, e esse resultado seria então comparado com c. [108]

Python usa aritmética de precisão arbitrária para todas as operações de inteiros. O Decimaltipo / classe no decimalmódulo fornece números de ponto flutuante decimal com uma precisão arbitrária predefinida e vários modos de arredondamento. [109] A Fractionclasse no fractionsmódulo fornece precisão arbitrária para números racionais . [110]

Devido à extensa biblioteca de matemática do Python e à biblioteca de terceiros NumPy que estende ainda mais os recursos nativos, é freqüentemente usado como uma linguagem de script científica para auxiliar em problemas como processamento e manipulação de dados numéricos. [111] [112]

Exemplos de programação

Programa Hello World :

print ( 'Olá, mundo!' )

Programa para calcular o fatorial de um número inteiro positivo:

n  =  int ( input ( 'Digite um número, e seu fatorial será impresso:' ))

if  n  <  0 : 
    raise  ValueError ( 'Você deve inserir um número inteiro não negativo' )

fatorial  =  1 
para  i  no  intervalo ( 2 ,  n  +  1 ): 
    fatorial  * =  i

imprimir ( fatorial )

Bibliotecas

A grande biblioteca padrão do Python, comumente citada como um de seus maiores pontos fortes, [113] fornece ferramentas adequadas para muitas tarefas. Para aplicativos voltados para a Internet, muitos formatos e protocolos padrão, como MIME e HTTP, são suportados. Inclui módulos para a criação de interfaces gráficas com o usuário , conexão com bancos de dados relacionais , geração de números pseudo-aleatórios , aritmética com decimais de precisão arbitrária, [114] manipulação de expressões regulares e teste de unidade .

Algumas partes da biblioteca padrão são cobertas por especificações (por exemplo, a implementação da Web Server Gateway Interface (WSGI) wsgirefsegue o PEP 333 [115] ), mas a maioria dos módulos não. Eles são especificados por seu código, documentação interna e suítes de teste . No entanto, como a maior parte da biblioteca padrão é código Python de plataforma cruzada, apenas alguns módulos precisam ser alterados ou reescritos para implementações variantes.

Em março de 2021, o Python Package Index (PyPI), o repositório oficial para software Python de terceiros, contém mais de 290.000 [116] pacotes com uma ampla gama de funcionalidades, incluindo:

Ambientes de desenvolvimento

A maioria das implementações Python (incluindo CPython) inclui um loop read – eval – print (REPL), permitindo que funcionem como um interpretador de linha de comando para o qual o usuário insere instruções sequencialmente e recebe os resultados imediatamente.

Outros shells, incluindo IDLE e IPython , adicionam outras habilidades, como autopreenchimento aprimorado, retenção de estado de sessão e destaque de sintaxe .

Bem como ambientes de desenvolvimento integrado de desktop padrão , existem IDEs baseados em navegador da Web ; SageMath (destinado ao desenvolvimento de programas Python relacionados à ciência e matemática); PythonAnywhere , um IDE baseado em navegador e ambiente de hospedagem; e Canopy IDE, um Python IDE comercial que enfatiza a computação científica . [117]

Implementações

Implementação de referência

CPython é a implementação de referência de Python. Ele é escrito em C, atendendo ao padrão C89 com vários recursos selecionados do C99 (com versões C posteriores lançadas, é considerado desatualizado; [118] [119] CPython inclui suas próprias extensões C, mas extensões de terceiros não estão limitadas a C mais antigo versões, podem, por exemplo, ser implementadas com C11 ou C ++ [120] ). [121] Ele compila programas Python em um bytecode intermediário [122] que é então executado por sua máquina virtual . [123]CPython é distribuído com uma grande biblioteca padrão escrita em uma mistura de C e Python nativo. Está disponível para muitas plataformas, incluindo Windows (começando com Python 3.9, o instalador Python deliberadamente falha ao instalar no Windows 7 e 8; [124] [125] Windows XP era suportado até Python 3.5) e a maioria dos sistemas Unix-like modernos, incluindo macOS (e Apple M1 Macs, desde Python 3.9.1, com instalador experimental) e suporte não oficial para, por exemplo, VMS . [126] A portabilidade da plataforma foi uma de suas primeiras prioridades, [127] durante o período de tempo do Python 1 e 2, até mesmo OS / 2 e Solarisforam apoiados; [128] o suporte foi abandonado para muitas plataformas.

Outras implementações

  • PyPy é um interpretador rápido e compatível com Python 2.7 e 3.6. [129] Seu compilador just-in-time traz uma melhoria significativa de velocidade em relação ao CPython, mas várias bibliotecas escritas em C não podem ser usadas com ele. [130]
  • Stackless Python é um fork significativo do CPython que implementa microthreads ; ele não usa a pilha de chamadas da mesma maneira, permitindo, assim, programas maciçamente simultâneos. O PyPy também tem uma versão sem pilha. [131]
  • MicroPython e CircuitPython são Python três variantes optimizadas para microcontroladores , incluindo Lego Mindstorms EV3 . [132]
  • Pyston é uma variante do tempo de execução Python que usa compilação just-in-time para acelerar a execução de programas Python. [133]
  • Cinder é uma bifurcação orientada para desempenho do CPython 3.8 que contém uma série de otimizações, incluindo cache inline de bytecode, avaliação rápida de co-rotinas, um JIT método por vez e um compilador de bytecode experimental. [134]

Implementações não suportadas

Outros compiladores Python just-in-time foram desenvolvidos, mas agora não são compatíveis:

  • O Google iniciou um projeto chamado Unladen Swallow em 2009, com o objetivo de acelerar o interpretador Python em cinco vezes usando o LLVM , e de melhorar sua capacidade de multithreading para escalar para milhares de núcleos, [135] enquanto implementações comuns sofrem com o bloqueio global do interpretador .
  • Psyco é um compilador especializado just-in-time descontinuado que se integra com CPython e transforma bytecode em código de máquina em tempo de execução. O código emitido é especializado para certos tipos de dados e é mais rápido do que o código Python padrão. Psyco não oferece suporte a Python 2.7 ou posterior.
  • PyS60 era um interpretador Python 2 para telefones celulares Série 60 lançado pela Nokia em 2005. Ele implementou muitos dos módulos da biblioteca padrão e alguns módulos adicionais para integração com o sistema operacional Symbian . O Nokia N900 também oferece suporte a Python com bibliotecas de widgets GTK , permitindo que programas sejam escritos e executados no dispositivo de destino. [136]

Cross-compiladores para outros idiomas

Existem vários compiladores para linguagens de objeto de alto nível , com Python irrestrito, um subconjunto restrito de Python ou uma linguagem semelhante ao Python como linguagem de origem:

  • Cython compila (um superconjunto de) Python 2.7 para C (enquanto o código resultante também pode ser usado com Python 3 e também, por exemplo, C ++).
  • Nuitka compila Python em C ++. [137]
  • Pythran compila um subconjunto de Python 3 para C ++. [138] [139] [140]
  • Pyrex (versão mais recente em 2010) e Shed Skin (versão mais recente em 2013) compilam para C e C ++, respectivamente.
  • O Grumpy do Google (versão mais recente em 2017) transpila o Python 2 para o Go . [141] [142] [143]
  • IronPython (agora abandonado pela Microsoft) permite a execução de programas Python 2.7 no .NET Common Language Runtime . [144]
  • Jython compila Python 2.7 para bytecode Java, permitindo o uso de bibliotecas Java de um programa Python. [145]
  • MyHDL é uma linguagem de descrição de hardware (HDL) baseada em Python , que converte o código MyHDL em código Verilog ou VHDL .
  • Numba usa LLVM para compilar um subconjunto de Python para código de máquina.
  • Brython, [146] Transcrypt [147] [148] e Pyjs (última versão em 2012) compilam Python para JavaScript .
  • RPython pode ser compilado em C e é usado para construir o interpretador PyPy de Python.

Performance

Uma comparação de desempenho de várias implementações Python em uma carga de trabalho não numérica (combinatória) foi apresentada na EuroSciPy '13. [149] O desempenho do Python em comparação com outras linguagens de programação também é avaliado pelo The Computer Language Benchmarks Game . [150]

Desenvolvimento

O desenvolvimento do Python é conduzido em grande parte por meio do processo Python Enhancement Proposal (PEP), o principal mecanismo para propor novos recursos importantes, coletar a opinião da comunidade sobre problemas e documentar as decisões de design do Python. [151] O estilo de codificação Python é abordado no PEP 8. [152] Os PEPs excepcionais são revisados ​​e comentados pela comunidade Python e pelo conselho diretor. [151]

O aprimoramento da linguagem corresponde ao desenvolvimento da implementação de referência do CPython. A lista de discussão python-dev é o fórum principal para o desenvolvimento da linguagem. Questões específicas são discutidas no rastreador de bugs Roundup hospedado em bugs.python.org . [153] O desenvolvimento ocorreu originalmente em um repositório de código-fonte auto-hospedado executando o Mercurial , até que o Python mudou para o GitHub em janeiro de 2017. [154]

Os lançamentos públicos do CPython vêm em três tipos, diferenciados por qual parte do número da versão é incrementada:

  • Versões incompatíveis com versões anteriores, em que o código deve ser interrompido e precisa ser portado manualmente . A primeira parte do número da versão é incrementada. Esses lançamentos acontecem com pouca frequência - a versão 3.0 foi lançada 8 anos após a 2.0.
  • Os lançamentos principais ou de "recursos" ocorreram a cada 18 meses, mas com a adoção de uma cadência de lançamento anual começando com Python 3.9, espera-se que aconteçam uma vez por ano. [155] [156] Eles são amplamente compatíveis, mas apresentam novos recursos. A segunda parte do número da versão é incrementada. Cada versão principal é suportada por correções de bugs por vários anos após seu lançamento. [157]
  • Lançamentos de correção de bugs , [158] que não introduzem novos recursos, ocorrem a cada 3 meses e são feitos quando um número suficiente de bugs foi corrigido no upstream desde o último lançamento. Vulnerabilidades de segurança também são corrigidas nessas versões. A terceira e última parte do número da versão é incrementada. [158]

Muitos candidatos alfa, beta e de lançamento também são lançados como prévias e para teste antes dos lançamentos finais. Embora haja um cronograma aproximado para cada lançamento, eles geralmente são atrasados ​​se o código não estiver pronto. A equipe de desenvolvimento do Python monitora o estado do código executando o grande conjunto de testes de unidade durante o desenvolvimento. [159]

A principal conferência acadêmica sobre Python é a PyCon . Existem também programas especiais de orientação em Python, como o Pyladies .

O Pythons 3.10 torna obsoleto o wstr (a ser removido no Python 3.12; o que significa que as extensões do Python [160] precisam ser modificadas até então), [161] e também planeja adicionar correspondência de padrões à linguagem. [162]

Geradores de documentação API

As ferramentas que podem gerar documentação para Python API incluem pydoc (disponível como parte da biblioteca padrão), Sphinx , Pdoc e seus garfos, Doxygen e Graphviz , entre outros. [163]

Nomenclatura

O nome de Python deriva do grupo de comédia britânico Monty Python, de quem o criador do Python, Guido van Rossum, gostou durante o desenvolvimento da linguagem. As referências do Monty Python aparecem com frequência no código e na cultura do Python; [164] por exemplo, as variáveis ​​metassintáticas frequentemente usadas na literatura Python são spam e eggs em vez do tradicional foo e bar . [164] [165] A documentação oficial do Python também contém várias referências às rotinas do Monty Python. [166] [167]

O prefixo Py- é usado para mostrar que algo está relacionado ao Python. Exemplos do uso desse prefixo em nomes de aplicativos ou bibliotecas Python incluem Pygame , uma vinculação de SDL a Python (comumente usada para criar jogos); PyQt e PyGTK , que ligam Qt e GTK ao Python, respectivamente; e PyPy , uma implementação Python originalmente escrita em Python.

Popularidade

Desde 2003, Python tem consistentemente classificado entre as dez linguagens de programação mais populares no Índice da Comunidade de Programação TIOBE , onde, em fevereiro de 2021 , é a terceira linguagem mais popular (atrás de Java e C). [168] Foi selecionada a linguagem de programação do ano (para "o maior aumento nas classificações em um ano") em 2007, 2010, 2018 e 2020 (a única linguagem a fazê-lo quatro vezes [169] ). [170]

Um estudo empírico descobriu que linguagens de script, como Python, são mais produtivas do que linguagens convencionais, como C e Java, para problemas de programação envolvendo manipulação de string e pesquisa em um dicionário, e determinou que o consumo de memória era muitas vezes "melhor do que Java e não muito pior do que C ou C ++ ". [171]

Grandes organizações que usam Python incluem Wikipedia , Google , [172] Yahoo! , [173] CERN , [174] NASA , [175] Facebook , [176] Amazon , Instagram , [177] Spotify [178] e algumas entidades menores como ILM [179] e ITA . [180] O site de rede social de notícias Reddit foi escrito principalmente em Python. [181]

Usos

Python Powered

Python pode servir como uma linguagem de script para aplicativos da web , por exemplo, via mod_wsgi para o servidor da web Apache . [182] Com a Web Server Gateway Interface , uma API padrão evoluiu para facilitar essas aplicações. Frameworks da Web como Django , Pylons , Pyramid , TurboGears , web2py , Tornado , Flask , Bottle e Zope apoiam os desenvolvedores no design e manutenção de aplicações complexas. Pyjs e IronPythonpode ser usado para desenvolver o lado do cliente de aplicativos baseados em Ajax. SQLAlchemy pode ser usado como um mapeador de dados para um banco de dados relacional. Twisted é um framework para programar comunicações entre computadores e é usado (por exemplo) pelo Dropbox .

Bibliotecas como NumPy , SciPy e Matplotlib permitem o uso efetivo de Python em computação científica, [183] [184] com bibliotecas especializadas como Biopython e Astropy fornecendo funcionalidade específica de domínio. SageMath é um sistema de álgebra computacional com uma interface de notebook programável em Python: sua biblioteca cobre muitos aspectos da matemática , incluindo álgebra , combinatória , matemática numérica , teoria dos números e cálculo .[185] OpenCV tem vínculos python com um rico conjunto de recursos para visão computacional e processamento de imagens . [186]

Python é comumente usado em projetos de inteligência artificial e projetos de aprendizado de máquina com a ajuda de bibliotecas como TensorFlow , Keras , Pytorch e Scikit-learn . [187] [188] [189] [190] Como uma linguagem de script com arquitetura modular , sintaxe simples e ferramentas de processamento de rich text, Python é frequentemente usado para processamento de linguagem natural . [191]

Python foi incorporado com sucesso em muitos produtos de software como linguagem de script, incluindo software de método de elemento finito como Abaqus , modelador paramétrico 3D como FreeCAD , pacotes de animação 3D como 3ds Max , Blender , Cinema 4D , Lightwave , Houdini , Maya , modo , MotionBuilder , Softimage , o compositor de efeitos visuais Nuke , programas de imagem 2D como GIMP , [192] Inkscape , Scribus ePaint Shop Pro , [193] e programas de notação musical como scorewriter e capella . GNU Debugger usa Python como uma impressora bonita para mostrar estruturas complexas, como contêineres C ++. A Esri promove o Python como a melhor escolha para escrever scripts no ArcGIS . [194] Também foi usado em vários videogames, [195] [196] e foi adotado como a primeira das três linguagens de programação disponíveis no Google App Engine , sendo as outras duas Java e Go . [197]

Muitos sistemas operacionais incluem Python como um componente padrão. Ele vem com a maioria das distribuições Linux , [198] AmigaOS 4 (usando Python 2.7), FreeBSD (como um pacote), NetBSD , OpenBSD (como um pacote) e macOS e pode ser usado a partir da linha de comando (terminal). Muitas distribuições Linux usam instaladores escritos em Python: Ubuntu usa o instalador Ubiquity , enquanto Red Hat Linux e Fedora usam o instalador Anaconda . Gentoo Linux usa Python em seu sistema de gerenciamento de pacotes , Portage.

Python é usado extensivamente na indústria de segurança da informação , incluindo no desenvolvimento de exploit. [199] [200]

A maior parte do software Sugar para o One Laptop per Child XO, agora desenvolvido no Sugar Labs , é escrito em Python. [201] O projeto de computador de placa única Raspberry Pi adotou o Python como sua principal linguagem de programação do usuário.

O LibreOffice inclui Python e pretende substituir Java por Python. Seu provedor de scripts Python é um recurso central [202] desde a versão 4.0 de 7 de fevereiro de 2013.

Línguas influenciadas pelo Python

O design e a filosofia do Python influenciaram muitas outras linguagens de programação:

  • Boo usa recuo, uma sintaxe semelhante e um modelo de objeto semelhante. [203]
  • O Cobra usa indentação e uma sintaxe semelhante, e seu documento de agradecimentos lista o Python primeiro entre as linguagens que o influenciaram. [204]
  • CoffeeScript , uma linguagem de programação que faz compilação cruzada para JavaScript, tem sintaxe inspirada em Python.
  • ECMAScript / JavaScript emprestou iteradores e geradores do Python. [205]
  • GDScript , uma linguagem de script muito semelhante ao Python, embutida no motor de jogo Godot . [206]
  • Go foi projetado para a "velocidade de trabalho em uma linguagem dinâmica como o Python" [207] e compartilha a mesma sintaxe para fatiar matrizes.
  • Groovy foi motivado pelo desejo de trazer a filosofia de design Python para Java . [208]
  • Julia foi projetada para ser "tão utilizável para programação geral quanto Python". [26]
  • Nim usa recuo e sintaxe semelhante. [209]
  • O criador do Ruby , Yukihiro Matsumoto , disse: "Eu queria uma linguagem de script que fosse mais poderosa do que Perl e mais orientada a objetos do que Python. É por isso que decidi projetar minha própria linguagem." [210]
  • Swift , uma linguagem de programação desenvolvida pela Apple, tem alguma sintaxe inspirada em Python. [211]

As práticas de desenvolvimento do Python também foram emuladas por outras linguagens. Por exemplo, a prática de exigir um documento que descreva a justificativa e as questões relacionadas a uma mudança na linguagem (em Python, um PEP) também é usada em Tcl , [212] Erlang , [213] e Swift. [214]

Veja também

Referências

  1. ^ "Perguntas frequentes gerais do Python - documentação do Python 3.9.2" . docs.python.org . Arquivado do original em 24 de outubro de 2012 . Retirado em 28 de março de 2021 .
  2. ^ "Python 0.9.1 parte 01/21" . arquivos alt.sources. Arquivado do original em 11 de agosto de 2021 . Retirado em 11 de agosto de 2021 .
  3. ^ "Python 3.9.7 e 3.8.12 já estão disponíveis" . 30 de agosto de 2021 . Retirado em 31 de agosto de 2021 .
  4. ^ "Por que o Python é uma linguagem dinâmica e também uma linguagem fortemente tipada - Python Wiki" . wiki.python.org . Arquivado do original em 14 de março de 2021 . Página visitada em 27 de janeiro de 2021 .
  5. ^ "PEP 483 - The Theory of Type Hints" . Python.org . Arquivado do original em 14 de junho de 2020 . Página visitada em 14 de junho de 2018 .
  6. ^ "Baixar Python" . Python.org . Arquivado do original em 8 de agosto de 2018 . Página visitada em 24 de maio de 2021 .
  7. ^ A extensão de arquivo .pyo foi removida do Python 3.5. Veja PEP 0488 Arquivado em 1º de junho de 2020 na Wayback Machine
  8. ^ Holth, Moore (30 de março de 2014). "PEP 0441 - Melhorando o suporte a aplicativos Python ZIP" . Arquivado do original em 26 de dezembro de 2018 . Retirado em 12 de novembro de 2015 .
  9. ^ "Starlark Language" . Arquivado do original em 15 de junho de 2020 . Retirado em 25 de maio de 2019 .
  10. ^ a b "Por que o Python foi criado em primeiro lugar?" . Perguntas frequentes gerais sobre Python . Python Software Foundation. Arquivado do original em 24 de outubro de 2012 . Página visitada em 22 de março de 2007 .
  11. ^ "Manual de Referência Ada 83 (instrução de aumento)" . Arquivado do original em 22 de outubro de 2019 . Página visitada em 7 de janeiro de 2020 .
  12. ^ Kuchling, Andrew M. (22 de dezembro de 2006). "Entrevista com Guido van Rossum (julho de 1998)" . amk.ca . Arquivado do original em 1 ° de maio de 2007 . Página visitada em 12 de março de 2012 .
  13. ^ a b "itertools - Funções que criam iteradores para um loop eficiente - documentação do Python 3.7.1" . docs.python.org . Arquivado do original em 14 de junho de 2020 . Retirado em 22 de novembro de 2016 .
  14. ^ van Rossum, Guido (1993). "Uma introdução ao Python para programadores UNIX / C". Proceedings of the NLUUG Najaarsconferentie (Dutch UNIX Users Group) . CiteSeerX 10.1.1.38.2023 . embora o design de C esteja longe de ser ideal, sua influência no Python é considerável. 
  15. ^ a b "Classes" . O Tutorial Python . Python Software Foundation. Arquivado do original em 23 de outubro de 2012 . Página visitada em 20 de fevereiro de 2012 . É uma mistura dos mecanismos de classe encontrados em C ++ e Modula-3
  16. ^ Lundh, Fredrik. "Chamada por objeto" . effbot.org . Arquivado do original em 23 de novembro de 2019 . Retirado em 21 de novembro de 2017 . substitua "CLU" por "Python", "registro" por "instância" e "procedimento" por "função ou método" e você obterá uma descrição bastante precisa do modelo de objeto do Python.
  17. ^ Simionato, Michele. "A Ordem de Resolução de Método Python 2.3" . Python Software Foundation. Arquivado do original em 20 de agosto de 2020 . Retirado em 29 de julho de 2014 . O método C3 em si não tem nada a ver com Python, já que foi inventado por pessoas que trabalham em Dylan e é descrito em um artigo destinado a ouvintes
  18. ^ Kuchling, AM "Functional Programming HOWTO" . Documentação do Python v2.7.2 . Python Software Foundation. Arquivado do original em 24 de outubro de 2012 . Página visitada em 9 de fevereiro de 2012 .
  19. ^ Schemenauer, Neil; Peters, Tim; Hetland, Magnus Lie (18 de maio de 2001). “PEP 255 - Geradores Simples” . Propostas de aprimoramento do Python . Python Software Foundation. Arquivado do original em 5 de junho de 2020 . Página visitada em 9 de fevereiro de 2012 .
  20. ^ Smith, Kevin D .; Jewett, Jim J .; Montanaro, Skip; Baxter, Anthony (2 de setembro de 2004). "PEP 318 - Decoradores de Funções e Métodos" . Propostas de aprimoramento do Python . Python Software Foundation. Arquivado do original em 3 de junho de 2020 . Página visitada em 24 de fevereiro de 2012 .
  21. ^ "Mais ferramentas de controle de fluxo" . Documentação do Python 3 . Python Software Foundation. Arquivado do original em 4 de junho de 2016 . Retirado em 24 de julho de 2015 .
  22. ^ "CoffeeScript" . coffeescript.org . Arquivado do original em 12 de junho de 2020 . Retirado em 3 de julho de 2018 .
  23. ^ "O tutorial da linguagem de programação Genie" . Arquivado do original em 1 de junho de 2020 . Página visitada em 28 de fevereiro de 2020 .
  24. ^ "Influências de Perl e Python em JavaScript" . www.2ality.com . 24 de fevereiro de 2013. Arquivado do original em 26 de dezembro de 2018 . Retirado em 15 de maio de 2015 .
  25. ^ Rauschmayer, Axel. "Capítulo 3: A Natureza do JavaScript; Influências" . O'Reilly, Speaking JavaScript . Arquivado do original em 26 de dezembro de 2018 . Retirado em 15 de maio de 2015 .
  26. ^ a b "Por que criamos Julia" . Site de Julia . Fevereiro de 2012. Arquivado do original em 2 de maio de 2020 . Retirado em 5 de junho de 2014 . Queremos algo tão utilizável para programação geral quanto Python [...]
  27. ^ Ring Team (4 de dezembro de 2017). "Toque e outros idiomas" . ring-lang.net . ring-lang . Arquivado do original em 25 de dezembro de 2018 . Retirado em 4 de dezembro de 2017 .
  28. ^ Bini, Ola (2007). Projetos práticos JRuby on Rails Web 2.0: trazendo Ruby on Rails para a plataforma Java . Berkeley: APress. p. 3 . ISBN 978-1-59059-881-8.
  29. ^ Lattner, Chris (3 de junho de 2014). "Página inicial de Chris Lattner" . Chris Lattner. Arquivado do original em 25 de dezembro de 2018 . Retirado em 3 de junho de 2014 . A linguagem Swift é o produto do esforço incansável de uma equipe de especialistas em linguagem, gurus de documentação, ninjas de otimização de compiladores e um grupo interno de dogfooding incrivelmente importante que forneceu feedback para ajudar a refinar e testar ideias. É claro que também se beneficiou muito das experiências duramente conquistadas por muitas outras linguagens no campo, extraindo ideias de Objective-C, Rust, Haskell, Ruby, Python, C #, CLU e muitos outros para listar.
  30. ^ Kuhlman, Dave. "A Python Book: Beginning Python, Advanced Python, and Python Exercises" . Seção 1.1. Arquivado do original (PDF) em 23 de junho de 2012.
  31. ^ "Sobre o Python" . Python Software Foundation. Arquivado do original em 20 de abril de 2012 . Página visitada em 24 de abril de 2012 ., segunda seção "Os fãs de Python usam a frase" baterias incluídas "para descrever a biblioteca padrão, que cobre tudo, desde o processamento assíncrono até arquivos zip."
  32. ^ Rossum, Guido Van (20 de janeiro de 2009). "The History of Python: A Brief Timeline of Python" . A história do Python . Arquivado do original em 5 de junho de 2020 . Retirado em 5 de março de 2021 .
  33. ^ Peterson, Benjamin (20 de abril de 2020). "Python Insider: Python 2.7.18, a última versão do Python 2" . Python Insider . Arquivado do original em 26 de abril de 2020 . Página visitada em 27 de abril de 2020 .
  34. ^ "Stack Overflow Developer Survey 2020" . Stack Overflow . Arquivado do original em 2 de março de 2021 . Retirado em 5 de março de 2021 .
  35. ^ "O Estado do Ecossistema do Desenvolvedor em 2020 Infográfico" . JetBrains: Ferramentas de desenvolvedor para profissionais e equipes . Arquivado do original em 1º de março de 2021 . Retirado em 5 de março de 2021 .
  36. ^ "index | TIOBE - The Software Quality Company" . www.tiobe.com . Arquivado do original em 25 de fevereiro de 2018 . Retirado em 2 de fevereiro de 2021 . Python ganhou o prêmio de linguagem de programação TIOBE do ano! Esta é a quarta vez na história, o que é um recorde! O título é concedido à linguagem de programação que ganhou mais popularidade em um ano.
  37. ^ "PYPL Popularidade do índice de Linguagem de Programação" . pypl.github.io . Arquivado do original em 14 de março de 2017 . Página visitada em 26 de março de 2021 .
  38. ^ a b Venners, Bill (13 de janeiro de 2003). "The Making of Python" . Artima Developer . Artima. Arquivado do original em 1 de setembro de 2016 . Página visitada em 22 de março de 2007 .
  39. ^ van Rossum, Guido (29 de agosto de 2000). "SETL (era: morno sobre literais de intervalo)" . Python-Dev (lista de discussão). Arquivado do original em 14 de julho de 2018 . Página visitada em 13 de março de 2011 .
  40. ^ van Rossum, Guido (20 de janeiro de 2009). "Uma breve linha do tempo do Python" . A história do Python . Arquivado do original em 5 de junho de 2020 . Página visitada em 20 de janeiro de 2009 .
  41. ^ Fairchild, Carlie (12 de julho de 2018). "Guido van Rossum renunciando ao papel de ditador benevolente para a vida de Python" . Linux Journal . Arquivado do original em 13 de julho de 2018 . Página visitada em 13 de julho de 2018 .
  42. ^ "PEP 8100" . Python Software Foundation. Arquivado do original em 4 de junho de 2020 . Retirado em 4 de maio de 2019 .
  43. ^ "PEP 13 - Governança da linguagem Python" . Python.org . Arquivado do original em 27 de maio de 2021 . Retirado em 25 de agosto de 2021 .
  44. ^ Kuchling, AM; Zadka, Moshe (16 de outubro de 2000). "O que há de novo no Python 2.0" . Python Software Foundation. Arquivado do original em 23 de outubro de 2012 . Página visitada em 11 de fevereiro de 2012 .
  45. ^ "Versão do Python 3.0" . Python Software Foundation. Arquivado do original em 14 de junho de 2020 . Página visitada em 8 de julho de 2009 .
  46. ^ van Rossum, Guido (5 de abril de 2006). "PEP 3000 - Python 3000" . Propostas de aprimoramento do Python . Python Software Foundation. Arquivado do original em 3 de março de 2016 . Página visitada em 27 de junho de 2009 .
  47. ^ "2to3 - Tradução de código Python 2 para 3 automatizada" . docs.python.org . Arquivado do original em 4 de junho de 2020 . Retirado em 2 de fevereiro de 2021 .
  48. ^ "PEP 373 - Programação de lançamento do Python 2.7" . python.org . Arquivado do original em 19 de maio de 2020 . Retirado em 9 de janeiro de 2017 .
  49. ^ "PEP 466 - Aprimoramentos de segurança de rede para Python 2.7.x" . python.org . Arquivado do original em 4 de junho de 2020 . Retirado em 9 de janeiro de 2017 .
  50. ^ "Sunsetting Python 2" . Python.org . Arquivado do original em 12 de janeiro de 2020 . Retirado em 22 de setembro de 2019 .
  51. ^ "PEP 373 - Programação de lançamento do Python 2.7" . Python.org . Arquivado do original em 13 de janeiro de 2020 . Retirado em 22 de setembro de 2019 .
  52. ^ "Python Developer's Guide - Python Developer's Guide" . devguide.python.org . Arquivado do original em 9 de novembro de 2020 . Recuperado em 17 de dezembro de 2019 .
  53. ^ Langa, Łukasz (19 de fevereiro de 2021). "Python Insider: Python 3.9.2 e 3.8.8 agora disponíveis" . Python Insider . Arquivado do original em 25 de fevereiro de 2021 . Página visitada em 26 de fevereiro de 2021 .
  54. ^ "Portal do Cliente Red Hat - Acesso a suporte e conhecimento 24 horas por dia, 7 dias por semana" . access.redhat.com . Arquivado do original em 6 de março de 2021 . Página visitada em 26 de fevereiro de 2021 .
  55. ^ "CVE - CVE-2021-3177" . cve.mitre.org . Arquivado do original em 27 de fevereiro de 2021 . Página visitada em 26 de fevereiro de 2021 .
  56. ^ "CVE - CVE-2021-23336" . cve.mitre.org . Arquivado do original em 24 de fevereiro de 2021 . Página visitada em 26 de fevereiro de 2021 .
  57. ^ The Cain Gang Ltd. "Metaclasses Python: Quem? Por quê? Quando?" (PDF) . Arquivado do original (PDF) em 30 de maio de 2009 . Página visitada em 27 de junho de 2009 .
  58. ^ "3.3. Nomes de métodos especiais" . A referência da linguagem Python . Python Software Foundation. Arquivado do original em 15 de dezembro de 2018 . Página visitada em 27 de junho de 2009 .
  59. ^ "PyDBC: pré-condições do método, pós-condições do método e invariantes de classe para Python" . Arquivado do original em 23 de novembro de 2019 . Página visitada em 24 de setembro de 2011 .
  60. ^ "Contratos para Python" . Arquivado do original em 15 de junho de 2020 . Página visitada em 24 de setembro de 2011 .
  61. ^ "PyDatalog" . Arquivado do original em 13 de junho de 2020 . Retirado em 22 de julho de 2012 .
  62. ^ "Estendendo e incorporando o interpretador Python: contagens de referência" . Docs.python.org. Arquivado do original em 18 de outubro de 2012 . Página visitada em 5 de junho de 2020 . Como o Python faz uso intenso de e , ele precisa de uma estratégia para evitar vazamentos de memória, bem como o uso de memória liberada. O método escolhido é chamado de contagem de referência .malloc()free()
  63. ^ a b Hettinger, Raymond (30 de janeiro de 2002). “PEP 289 - Expressões do Gerador” . Propostas de aprimoramento do Python . Python Software Foundation. Arquivado do original em 14 de junho de 2020 . Página visitada em 19 de fevereiro de 2012 .
  64. ^ "6.5 itertools - Funções que criam iteradores para um loop eficiente" . Docs.python.org. Arquivado do original em 14 de junho de 2020 . Retirado em 22 de novembro de 2016 .
  65. ^ a b Peters, Tim (19 de agosto de 2004). "PEP 20 - O Zen do Python" . Propostas de aprimoramento do Python . Python Software Foundation. Arquivado do original em 26 de dezembro de 2018 . Página visitada em 24 de novembro de 2008 .
  66. ^ Martelli, Alex; Ravenscroft, Anna; Ascher, David (2005). Python Cookbook, 2ª edição . O'Reilly Media . p. 230. ISBN 978-0-596-00797-3. Arquivado do original em 23 de fevereiro de 2020 . Retirado em 14 de novembro de 2015 .
  67. ^ "Cultura Python" . ebeab . 21 de janeiro de 2014. Arquivado do original em 30 de janeiro de 2014.
  68. ^ "Perguntas frequentes gerais sobre Python" . Documentação do Python v2.7.3 . Docs.python.org. Arquivado do original em 24 de outubro de 2012 . Página visitada em 4 de junho de 2020 .
  69. ^ "15 maneiras que o Python é uma força poderosa na web" . Arquivado do original em 11 de maio de 2019 . Retirado em 3 de julho de 2018 .
  70. ^ "8.18. Pprint - Impressora bonita de dados - documentação do Python 3.8.3" . docs.python.org . Arquivado do original em 22 de janeiro de 2021 . Página visitada em 4 de junho de 2020 .
  71. ^ Clark, Robert (26 de abril de 2019). "Como ser pitônico e por que você deve se preocupar" . Médio . Arquivado do original em 13 de agosto de 2021 . Página visitada em 20 de janeiro de 2021 .
  72. ^ "Estilo de código - O guia do Mochileiro para Python" . docs.python-guide.org . Arquivado do original em 27 de janeiro de 2021 . Página visitada em 20 de janeiro de 2021 .
  73. ^ Goodger, David. "Código como um Pythonista: Python idiomática" . Arquivado do original em 27 de maio de 2014 . Página visitada em 24 de março de 2009 .
  74. ^ "Como pensar como um Pythonista" . Arquivado do original em 23 de março de 2018 . Página visitada em 24 de março de 2009 .
  75. ^ "Python é uma boa linguagem para programadores iniciantes?" . Perguntas frequentes gerais sobre Python . Python Software Foundation. Arquivado do original em 24 de outubro de 2012 . Página visitada em 21 de março de 2007 .
  76. ^ "Mitos sobre indentação em Python" . Secnetix.de. Arquivado do original em 18 de fevereiro de 2018 . Página visitada em 19 de abril de 2011 .
  77. ^ Guttag, John V. (12 de agosto de 2016). Introdução à computação e programação usando Python: com aplicação para compreender dados . MIT Press. ISBN 978-0-262-52962-4.
  78. ^ "PEP 8 - Guia de estilo para código Python" . Python.org . Arquivado do original em 17 de abril de 2019 . Página visitada em 26 de março de 2019 .
  79. ^ "Destaques: Python 2.5" . Python.org . Arquivado do original em 4 de agosto de 2019 . Página visitada em 20 de março de 2018 .
  80. ^ van Rossum, Guido (22 de abril de 2009). "Eliminação da recursão da cauda" . Neopythonic.blogspot.be. Arquivado do original em 19 de maio de 2018 . Retirado em 3 de dezembro de 2012 .
  81. ^ van Rossum, Guido (9 de fevereiro de 2006). "Design de linguagem não é apenas resolver quebra-cabeças" . Fóruns Artima . Artima. Arquivado do original em 17 de janeiro de 2020 . Página visitada em 21 de março de 2007 .
  82. ^ van Rossum, Guido; Eby, Phillip J. (10 de maio de 2005). “PEP 342 - Corrotinas via Geradores Avançados” . Propostas de aprimoramento do Python . Python Software Foundation. Arquivado do original em 29 de maio de 2020 . Página visitada em 19 de fevereiro de 2012 .
  83. ^ "PEP 380" . Python.org. Arquivado do original em 4 de junho de 2020 . Retirado em 3 de dezembro de 2012 .
  84. ^ "divisão" . python.org . Arquivado do original em 20 de julho de 2006 . Retirado em 30 de julho de 2014 .
  85. ^ "PEP 0465 - Um operador infixo dedicado para multiplicação de matrizes" . python.org . Arquivado do original em 4 de junho de 2020 . Retirado em 1 de janeiro de 2016 .
  86. ^ "Versão e registro de mudanças do Python 3.5.1" . python.org . Arquivado do original em 14 de maio de 2020 . Retirado em 1 de janeiro de 2016 .
  87. ^ "O que há de novo no Python 3.8" . Arquivado do original em 8 de junho de 2020 . Página visitada em 14 de outubro de 2019 .
  88. ^ "Capítulo 15. Expressões - 15.21.1. Operadores de igualdade numérica == e! =" . Oracle Corporation . Arquivado do original em 7 de junho de 2020 . Retirado em 28 de agosto de 2016 .
  89. ^ "Capítulo 15. Expressões - 15.21.3. Operadores de igualdade de referência == e! =" . Oracle Corporation. Arquivado do original em 7 de junho de 2020 . Retirado em 28 de agosto de 2016 .
  90. ^ van Rossum, Guido; Hettinger, Raymond (7 de fevereiro de 2003). “PEP 308 - Expressões condicionais” . Propostas de aprimoramento do Python . Python Software Foundation. Arquivado do original em 13 de março de 2016 . Página visitada em 13 de julho de 2011 .
  91. ^ "4. Tipos integrados - documentação do Python 3.6.3rc1" . python.org . Arquivado do original em 14 de junho de 2020 . Retirado em 1 de outubro de 2017 .
  92. ^ "5.3. Tuplas e sequências - documentação do Python 3.7.1rc2" . python.org . Arquivado do original em 10 de junho de 2020 . Página visitada em 17 de outubro de 2018 .
  93. ^ a b "PEP 498 - Literal String Interpolation" . python.org . Arquivado do original em 15 de junho de 2020 . Retirado em 8 de março de 2017 .
  94. ^ "Por que 'self' deve ser usado explicitamente nas definições e chamadas de métodos?" . Perguntas frequentes sobre design e história . Python Software Foundation. Arquivado do original em 24 de outubro de 2012 . Página visitada em 19 de fevereiro de 2012 .
  95. ^ Sweigart, Al (2020). Além das coisas básicas com Python: Melhores práticas para escrever código limpo . Sem Starch Press. p. 322. ISBN 978-1-59327-966-0. Arquivado do original em 13 de agosto de 2021 . Retirado em 7 de julho de 2021 .
  96. ^ "The Python Language Reference, section 3.3. New-style and classic classes, for release 2.7.1" . Arquivado do original em 26 de outubro de 2012 . Página visitada em 12 de janeiro de 2011 .
  97. ^ "Digite dicas para Python" . LWN.net. 24 de dezembro de 2014. Arquivado do original em 20 de junho de 2019 . Retirado em 5 de maio de 2015 .
  98. ^ "mypy - Tipagem estática opcional para Python" . Arquivado do original em 6 de junho de 2020 . Retirado em 28 de janeiro de 2017 .
  99. ^ "15. Aritmética de Ponto Flutuante: Problemas e Limitações - documentação do Python 3.8.3" . docs.python.org . Arquivado do original em 6 de junho de 2020 . Página visitada em 6 de junho de 2020 . Quase todas as máquinas hoje (novembro de 2000) usam aritmética de ponto flutuante IEEE-754, e quase todas as plataformas mapeiam flutuadores Python para IEEE-754 de “precisão dupla”.
  100. ^ Zadka, Moshe; van Rossum, Guido (11 de março de 2001). "PEP 237 - Unificando inteiros longos e inteiros" . Propostas de aprimoramento do Python . Python Software Foundation. Arquivado do original em 28 de maio de 2020 . Página visitada em 24 de setembro de 2011 .
  101. ^ "Tipos integrados" . Arquivado do original em 14 de junho de 2020 . Retirado em 3 de outubro de 2019 .
  102. ^ "PEP 465 - Um operador infixo dedicado para multiplicação de matrizes" . python.org . Arquivado do original em 29 de maio de 2020 . Retirado em 3 de julho de 2018 .
  103. ^ a b Zadka, Moshe; van Rossum, Guido (11 de março de 2001). “PEP 238 - Mudança de Operador da Divisão” . Propostas de aprimoramento do Python . Python Software Foundation. Arquivado do original em 28 de maio de 2020 . Retirado em 23 de outubro de 2013 .
  104. ^ "Por que Python's Integer Division Floors" . Arquivado do original em 5 de junho de 2020 . Página visitada em 25 de agosto de 2010 .
  105. ^ "round" , A biblioteca padrão do Python, versão 3.2, §2: funções integradas , arquivado do original em 25 de outubro de 2012 , recuperado em 14 de agosto de 2011
  106. ^ "round" , A biblioteca padrão do Python, versão 2.7, §2: funções integradas , arquivado do original em 27 de outubro de 2012 , recuperado em 14 de agosto de 2011
  107. ^ Beazley, David M. (2009). Referência Python Essential (4ª ed.). p. 66 .
  108. ^ Kernighan, Brian W .; Ritchie, Dennis M. (1988). A linguagem de programação C (2ª ed.). p. 206 .
  109. ^ Batista, Facundo. "PEP 0327 - Tipo de dados decimais" . Python.org . Arquivado do original em 4 de junho de 2020 . Retirado em 26 de setembro de 2015 .
  110. ^ "O que há de novo no Python 2.6 - documentação do Python v2.6.9" . docs.python.org . Arquivado do original em 23 de dezembro de 2019 . Retirado em 26 de setembro de 2015 .
  111. ^ "10 razões Python balança para pesquisa (e algumas razões para não fazer) - Hoyt Koepke" . www.stat.washington.edu . Arquivado do original em 31 de maio de 2020 . Retirado em 3 de fevereiro de 2019 .
  112. ^ Shell, Scott (17 de junho de 2014). "Uma introdução ao Python para computação científica" (PDF) . Arquivado (PDF) do original em 4 de fevereiro de 2019 . Retirado em 3 de fevereiro de 2019 .
  113. ^ Piotrowski, Przemyslaw (julho de 2006). "Construir um ambiente de desenvolvimento Web rápido para páginas de servidor Python e Oracle" . Rede de Tecnologia Oracle . Oráculo. Arquivado do original em 2 de abril de 2019 . Página visitada em 12 de março de 2012 .
  114. ^ Batista, Facundo (17 de outubro de 2003). "PEP 327 - Tipo de dados decimais" . Propostas de aprimoramento do Python . Python Software Foundation. Arquivado do original em 4 de junho de 2020 . Página visitada em 24 de novembro de 2008 .
  115. ^ Eby, Phillip J. (7 de dezembro de 2003). "PEP 333 - Python Web Server Gateway Interface v1.0" . Propostas de aprimoramento do Python . Python Software Foundation. Arquivado do original em 14 de junho de 2020 . Página visitada em 19 de fevereiro de 2012 .
  116. ^ Debill, Erik. "Contagens de módulo" . ModuleCounts . Arquivado do original em 9 de setembro de 2017 . Retirado em 2 de fevereiro de 2021 .
  117. ^ Pensado, Canopy. "Canopy" . www.enthought.com . Arquivado do original em 15 de julho de 2017 . Retirado em 20 de agosto de 2016 .
  118. ^ "Mailman 3 Por que não estamos permitindo o uso de C11? - Python-Dev - python.org" . mail.python.org . Arquivado do original em 14 de abril de 2021 . Retirado em 1 de março de 2021 .
  119. ^ "Problema 35473: o compilador Intel (icc) não oferece suporte total aos recursos C11, incluindo atomics - rastreador Python" . bugs.python.org . Arquivado do original em 14 de abril de 2021 . Retirado em 1 de março de 2021 .
  120. ^ "4. Construindo extensões C e C ++ - documentação do Python 3.9.2" . docs.python.org . Arquivado do original em 3 de março de 2021 . Retirado em 1 de março de 2021 .
  121. ^ van Rossum, Guido (5 de junho de 2001). "PEP 7 - Guia de estilo para código C" . Propostas de aprimoramento do Python . Python Software Foundation. Arquivado do original em 1 de junho de 2020 . Página visitada em 24 de novembro de 2008 .
  122. ^ "Código de bytes CPython" . Docs.python.org. Arquivado do original em 5 de junho de 2020 . Retirado em 16 de fevereiro de 2016 .
  123. ^ "Python 2.5 internos" (PDF) . Arquivado (PDF) do original em 6 de agosto de 2012 . Página visitada em 19 de abril de 2011 .
  124. ^ "Log de alterações - documentação do Python 3.9.0" . docs.python.org . Arquivado do original em 7 de fevereiro de 2021 . Página visitada em 8 de fevereiro de 2021 .
  125. ^ "Baixar Python" . Python.org . Arquivado do original em 8 de dezembro de 2020 . Página visitada em 13 de dezembro de 2020 .
  126. ^ "história [vmspython]" . www.vmspython.org . Arquivado do original em 2 de dezembro de 2020 . Página visitada em 4 de dezembro de 2020 .
  127. ^ "Uma entrevista com Guido van Rossum" . Oreilly.com. Arquivado do original em 16 de julho de 2014 . Página visitada em 24 de novembro de 2008 .
  128. ^ "Baixe Python para outras plataformas" . Python.org . Arquivado do original em 27 de novembro de 2020 . Página visitada em 4 de dezembro de 2020 .
  129. ^ "Compatibilidade com PyPy" . Pypy.org. Arquivado do original em 6 de junho de 2020 . Retirado em 3 de dezembro de 2012 .
  130. ^ "comparação de velocidade entre CPython e Pypy" . Speed.pypy.org. Arquivado do original em 10 de maio de 2021 . Retirado em 3 de dezembro de 2012 .
  131. ^ "Recursos do Stackless no nível do aplicativo - documentação do PyPy 2.0.2" . Doc.pypy.org. Arquivado do original em 4 de junho de 2020 . Retirado em 17 de julho de 2013 .
  132. ^ "Python-for-EV3" . LEGO Education . Arquivado do original em 7 de junho de 2020 . Página visitada em 17 de abril de 2019 .
  133. ^ Yegulalp, Serdar (29 de outubro de 2020). "Pyston retorna dos mortos para acelerar Python" . InfoWorld . Arquivado do original em 27 de janeiro de 2021 . Página visitada em 26 de janeiro de 2021 .
  134. ^ "cinder: fork do CPython orientado para o desempenho do Instagram" . Arquivado do original em 4 de maio de 2021 . Retirado em 4 de maio de 2021 .
  135. ^ "Planos para otimizar Python" . Hospedagem de projetos do Google . 15 de dezembro de 2009. Arquivado do original em 11 de abril de 2016 . Página visitada em 24 de setembro de 2011 .
  136. ^ "Python no Nokia N900" . Geometria estocástica . 29 de abril de 2010. Arquivado do original em 20 de junho de 2019 . Retirado em 9 de julho de 2015 .
  137. ^ "Página inicial de Nuitka | Página inicial de Nuitka" . nuitka.net . Arquivado do original em 30 de maio de 2020 . Retirado em 18 de agosto de 2017 .
  138. ^ Borderies, Olivier (24 de janeiro de 2019). "Pythran: Python na velocidade C ++!" . Médio . Arquivado do original em 25 de março de 2020 . Página visitada em 25 de março de 2020 .
  139. ^ "Pythran - documentação do Pythran 0.9.5" . pythran.readthedocs.io . Arquivado do original em 19 de fevereiro de 2020 . Página visitada em 25 de março de 2020 .
  140. ^ "Cópia arquivada" (PDF) . Arquivado (PDF) do original em 18 de abril de 2021 . Página visitada em 20 de janeiro de 2021 . CS1 maint: archived copy as title (link)
  141. ^ "google / mal-humorado" . 10 de abril de 2020. Arquivado do original em 15 de abril de 2020 . Recuperado em 25 de março de 2020 - via GitHub.
  142. ^ "Projetos" . opensource.google . Arquivado do original em 24 de abril de 2020 . Página visitada em 25 de março de 2020 .
  143. ^ Francisco, Thomas Claburn em San. "O código Grumpy do Google torna o Python Go" . www.theregister.com . Arquivado do original em 7 de março de 2021 . Página visitada em 20 de janeiro de 2021 .
  144. ^ "IronPython.net /" . ironpython.net . Arquivado do original em 17 de abril de 2021 . Página visitada em 22 de abril de 2021 .
  145. ^ "FAQ do Jython" . www.jython.org . Arquivado do original em 22 de abril de 2021 . Página visitada em 22 de abril de 2021 .
  146. ^ "Brython" . brython.info . Arquivado do original em 3 de agosto de 2018 . Página visitada em 21 de janeiro de 2021 .
  147. ^ "Transcriptar - Python no navegador" . transcrypt.org . Arquivado do original em 19 de agosto de 2018 . Página visitada em 22 de dezembro de 2020 .
  148. ^ "Transcrypt: Anatomy of a Python to JavaScript Compiler" . InfoQ . Arquivado do original em 5 de dezembro de 2020 . Página visitada em 20 de janeiro de 2021 .
  149. ^ Murri, Riccardo (2013). Desempenho de tempos de execução Python em um código científico não numérico . Conferência Europeia sobre Python na Ciência (EuroSciPy). arXiv : 1404.6388 . Bibcode : 2014arXiv1404.6388M .
  150. ^ "O jogo de benchmarks da linguagem do computador" . Arquivado do original em 14 de junho de 2020 . Recuperado em 30 de abril de 2020 .
  151. ^ a b Varsóvia, Barry; Hylton, Jeremy; Goodger, David (13 de junho de 2000). “PEP 1 - Propósito e Diretrizes do PEP” . Propostas de aprimoramento do Python . Python Software Foundation. Arquivado do original em 6 de junho de 2020 . Página visitada em 19 de abril de 2011 .
  152. ^ "PEP 8 - Guia de estilo para código Python" . Python.org . Arquivado do original em 17 de abril de 2019 . Página visitada em 26 de março de 2019 .
  153. ^ Canhão, Brett. "Guido, Some Guys, and a Mailing List: How Python is Developed" . python.org . Python Software Foundation. Arquivado do original em 1 ° de junho de 2009 . Página visitada em 27 de junho de 2009 .
  154. ^ "Python Developer's Guide - Python Developer's Guide" . devguide.python.org . Arquivado do original em 9 de novembro de 2020 . Recuperado em 17 de dezembro de 2019 .
  155. ^ "PEP 602 - Ciclo de Lançamento Anual para Python" . Python.org . Arquivado do original em 14 de junho de 2020 . Página visitada em 6 de novembro de 2019 .
  156. ^ "Alterando a cadência de lançamento do Python [LWN.net]" . lwn.net . Arquivado do original em 6 de novembro de 2019 . Página visitada em 6 de novembro de 2019 .
  157. ^ Norwitz, Neal (8 de abril de 2002). "[Python-Dev] Cronogramas de lançamento (era estabilidade e mudança)" . Arquivado do original em 15 de dezembro de 2018 . Página visitada em 27 de junho de 2009 .
  158. ^ a b Aahz; Baxter, Anthony (15 de março de 2001). "PEP 6 - Lançamentos de correção de bug" . Propostas de aprimoramento do Python . Python Software Foundation. Arquivado do original em 5 de junho de 2020 . Página visitada em 27 de junho de 2009 .
  159. ^ "Python Buildbot" . Guia do desenvolvedor Python . Python Software Foundation. Arquivado do original em 5 de junho de 2020 . Página visitada em 24 de setembro de 2011 .
  160. ^ "1. Extensão do Python com C ou C ++ - documentação do Python 3.9.1" . docs.python.org . Arquivado do original em 23 de junho de 2020 . Página visitada em 14 de fevereiro de 2021 .
  161. ^ "PEP 623 - Remover wstr de Unicode" . Python.org . Arquivado do original em 5 de março de 2021 . Página visitada em 14 de fevereiro de 2021 .
  162. ^ "PEP 634 - Correspondência de Padrão Estrutural: Especificação" . Python.org . Arquivado do original em 6 de maio de 2021 . Página visitada em 14 de fevereiro de 2021 .
  163. ^ "Ferramentas de documentação" . Python.org . Arquivado do original em 11 de novembro de 2020 . Página visitada em 22 de março de 2021 .
  164. ^ a b "Abrindo seu apetite" . O Tutorial Python . Python Software Foundation. Arquivado do original em 26 de outubro de 2012 . Página visitada em 20 de fevereiro de 2012 .
  165. ^ "Em Python, devo usar else após um retorno em um bloco if?" . Stack Overflow . Stack Exchange. 17 de fevereiro de 2011. Arquivado do original em 20 de junho de 2019 . Retirado em 6 de maio de 2011 .
  166. ^ Lutz, Mark (2009). Aprendendo Python: poderosa programação orientada a objetos . O'Reilly Media, Inc. p. 17. ISBN 9781449379322. Arquivado do original em 17 de julho de 2017 . Retirado em 9 de maio de 2017 .
  167. ^ Fehily, Chris (2002). Python . Peachpit Press. p. xv. ISBN 9780201748840. Arquivado do original em 17 de julho de 2017 . Retirado em 9 de maio de 2017 .
  168. ^ "Índice TIOBE" . TIOBE - The Software Quality Company. Arquivado do original em 14 de junho de 2020 . Página visitada em 26 de fevereiro de 2021 .
  169. ^ Blake, autor Troy (18 de janeiro de 2021). "Índice TIOBE de janeiro de 2021" . Notícias e informações de tecnologia por SeniorDBA . Arquivado do original em 21 de março de 2021 . Página visitada em 26 de fevereiro de 2021 .
  170. ^ Índice de software TIOBE (2015). "TIOBE Programming Community Index Python" . Arquivado do original em 7 de setembro de 2015 . Retirado em 10 de setembro de 2015 .
  171. ^ Prechelt, Lutz (14 de março de 2000). "Uma comparação empírica de C, C ++, Java, Perl, Python, Rexx e Tcl" (PDF) . Arquivado (PDF) do original em 3 de janeiro de 2020 . Retirado em 30 de agosto de 2013 .
  172. ^ "Citações sobre Python" . Python Software Foundation. Arquivado do original em 3 de junho de 2020 . Página visitada em 8 de janeiro de 2012 .
  173. ^ "Organizações que usam Python" . Python Software Foundation. Arquivado do original em 21 de agosto de 2018 . Página visitada em 15 de janeiro de 2009 .
  174. ^ "Python: o Santo Graal da programação" . Boletim do CERN . Publicações do CERN (31/2006). 31 de julho de 2006. Arquivado do original em 15 de janeiro de 2013 . Página visitada em 11 de fevereiro de 2012 .
  175. ^ Shafer, Daniel G. (17 de janeiro de 2003). "Python Dinamiza Projeto de Missão do Ônibus Espacial" . Python Software Foundation. Arquivado do original em 5 de junho de 2020 . Página visitada em 24 de novembro de 2008 .
  176. ^ "Tornado: Real-Time Web Framework do Facebook para Python - Facebook para Desenvolvedores" . Facebook para desenvolvedores . Arquivado do original em 19 de fevereiro de 2019 . Página visitada em 19 de junho de 2018 .
  177. ^ "O que impulsiona o Instagram: centenas de instâncias, dezenas de tecnologias" . Engenharia do Instagram. 11 de dezembro de 2016. Arquivado do original em 15 de junho de 2020 . Página visitada em 27 de maio de 2019 .
  178. ^ "Como usamos Python no Spotify" . Spotify Labs . 20 de março de 2013. Arquivado do original em 10 de junho de 2020 . Retirado em 25 de julho de 2018 .
  179. ^ Fortenberry, Tim (17 de janeiro de 2003). "Industrial Light & Magic Runs on Python" . Python Software Foundation. Arquivado do original em 6 de junho de 2020 . Página visitada em 11 de fevereiro de 2012 .
  180. ^ Taft, Darryl K. (5 de março de 2007). "Python Slithers into Systems" . eWeek.com . Ziff Davis Holdings. Arquivado do original em 13 de agosto de 2021 . Página visitada em 24 de setembro de 2011 .
  181. ^ GitHub - reddit-archive / reddit: código histórico de reddit.com. , The Reddit Archives, arquivado do original em 1 de junho de 2020 , recuperado em 20 de março de 2019
  182. ^ "Estatísticas de uso e participação de mercado do Python para sites" . 2012. Arquivado do original em 13 de agosto de 2021 . Página visitada em 18 de dezembro de 2012 .
  183. ^ Oliphant, Travis (2007). "Python for Scientific Computing" . Computação em Ciência e Engenharia . 9 (3): 10–20. Bibcode : 2007CSE ..... 9c..10O . CiteSeerX 10.1.1.474.6460 . doi : 10.1109 / MCSE.2007.58 . S2CID 206457124 . Arquivado do original em 15 de junho de 2020 . Retirado em 10 de abril de 2015 .  
  184. ^ Millman, K. Jarrod; Aivazis, Michael (2011). "Python para cientistas e engenheiros" . Computação em Ciência e Engenharia . 13 (2): 9–12. Bibcode : 2011CSE .... 13b ... 9M . doi : 10.1109 / MCSE.2011.36 . Arquivado do original em 19 de fevereiro de 2019 . Retirado em 7 de julho de 2014 .
  185. ^ Science Education with SageMath , Innovative Computing in Science Education, arquivado do original em 15 de junho de 2020 , recuperado em 22 de abril de 2019
  186. ^ "OpenCV: Tutoriais OpenCV-Python" . docs.opencv.org . Arquivado do original em 23 de setembro de 2020 . Retirado em 14 de setembro de 2020 .
  187. ^ Dean, Jeff ; Monga, Rajat; et al. (9 de novembro de 2015). "TensorFlow: aprendizado de máquina em grande escala em sistemas heterogêneos" (PDF)