Conteúdo verificado

Python (linguagem de programação)

Assuntos Relacionados: Programação de Computadores

Fundo para as escolas Wikipédia

Esta seleção é feita para as escolas pela caridade infantil leia mais . patrocínio SOS Criança é legal!

Pitão
Python oficial do logotipo
Paradigma (s) multi-paradigma: orientada a objetos, imperativo, funcional, reflexo
Apareceu em 1991
Projetado por Guido van Rossum
Revelador Python Software Foundation
Versão estável 3.1.3 / 27 de novembro de 2010 (2010-11-27)
2.7.1 / 27 de novembro de 2010 (2010-11-27)
Release Preview 3.2 RC 1/16 de janeiro de 2011 (2011-01-16)
Disciplina Typing Pato, dinâmico, forte
As principais implementações CPython, IronPython, Jython, Python para S60, PyPy, Andorinha Unladen
Dialetos Cython, RPython, Stackless Python
Influenciado por ABC, ALGOL 68, C , C ++ , Haskell, Ícone, Java , Lisp, Modula-3, Perl
Influenciado Boo, Cobra, D, Falcon, Groovy, JavaScript, Rubi
OS Multi-plataforma
Licença Python Software Foundation License
Usual extensões de arquivo .py, .pyw, .pyc, .pyo, .pyd
  • www.python.org
  • Programação Python em Wikibooks

Python é uma interpretados, de uso geral linguagem de programação de alto nível, cuja filosofia de design realça a legibilidade do código. Python visa combinar "poder notável com uma sintaxe muito clara", e sua biblioteca padrão é grande e abrangente. A sua utilização de recuo para o bloco delimitadores é única entre as linguagens de programação populares.

Python suporta múltiplos programando paradigmas, principalmente, mas não se limitando a orientada a objeto, imperativa e, em menor grau, estilos de programação funcional. Dispõe de uma totalmente sistema de tipo dinâmica e automática gestão de memória, semelhante ao de Scheme, Ruby, Perl , e Tcl. À semelhança de outros linguagens dinâmicas, Python é frequentemente utilizado como um linguagem de script, mas também é utilizado numa grande variedade de contextos não-scripting.

O implementação de referência do Python ( CPython) é software e livre e de código aberto tem um modelo de desenvolvimento baseado na comunidade, como fazer todas ou quase todas as suas implementações alternativas. CPython é gerido pela organização sem fins lucrativos Python Software Foundation.

Intérpretes Python estão disponíveis para muitos sistemas operacionais e programas em Python podem ser embalados em código executável autônomo para muitos sistemas utilizando várias ferramentas.

História

Python foi concebido no final de 1980 e sua implementação foi iniciada em Dezembro de 1989 por Guido van Rossum em CWI na Holanda como um sucessor para o Linguagem de programação ABC (ele próprio inspirado por SETL) capaz de manipulação de exceção e interface com o Sistema operacional ameba. Van Rossum é o principal autor do Python, e continuando seu papel central na decisão da direção do Python é refletida no título dado a ele pela comunidade Python, Ditador benevolente para a Vida (BDFL).

Python 2.0 foi lançado em 16 de Outubro de 2000, com muitos dos principais novos recursos, incluindo um completo coletor de lixo e suporte para Unicode. No entanto, a mudança mais importante foi o próprio processo de desenvolvimento, com uma mudança para um processo mais transparente e apoiado pela comunidade. Python 3.0, um grande lançamento, para trás-incompatíveis, foi lançado em 3 de Dezembro de 2008, após um longo período de testes. Muitas das suas principais características têm sido portado para o Python para trás compatível com 2.6 e 2.7. Python foi o vencedor do Programação TIOBE Língua Award de 2010 para ter o maior ganho de participação de mercado linguagem de programação ao longo do mesmo ano (+ 1,81%).

Filosofia de programação

Python é uma multi-paradigma linguagem de programação. Ao invés de forçar os programadores a adotar um estilo particular de programação, permite vários estilos: programação orientada a objetos e programação estruturada são totalmente suportados, e há uma série de recursos de linguagem que suporta programação funcional e programação orientada a aspectos (inclusive por metaprogramming e por métodos mágicos). Muitos outros paradigmas são suportados usando extensões, como pyDBC e Contratos de Python que permitem Projeto por Contrato.

Usos Python tipagem dinâmica e uma combinação de contagem de referência e um ciclo de detecção coletor de lixo para gerenciamento de memória. Uma característica importante do Python é dinâmico resolução de nomes ( ligação tardia), que se liga método e nomes de variáveis durante a execução do programa.

Em vez de exigir toda a funcionalidade desejada a ser construída no núcleo da linguagem, Python foi projetada para ser altamente extensível. Novos módulos built-in pode ser facilmente escrito em C , C ++ ou Cython. Python também pode ser utilizada como linguagem de extensão para módulos e aplicações existentes que necessitam de um interface programável. Este projeto de um pequeno núcleo da linguagem com uma grande biblioteca padrão e um intérprete facilmente extensível foi destinado por Van Rossum desde o início por causa de suas frustrações com ABC (que esposou a mentalidade oposta).

O projeto de Python oferece apenas suporte limitado para programação funcional na Tradição Lisp. No entanto, a filosofia de design da Python apresenta semelhanças significativas para aqueles de línguas Lisp-família minimalistas, tais como Esquema. A biblioteca padrão tem dois módulos (itertools e functools) que implementam comprovadas ferramentas funcionais emprestados de Haskell e ML padrão.

Embora a oferta de escolha na codificação metodologia, a filosofia Python rejeita sintaxe exuberante, como em Perl , em favor de uma gramática menos desordenado sparser. Desenvolvedores do Python promover expressamente uma "cultura" ou ideologia baseada no que eles querem que a linguagem a ser, favorecendo formas de linguagem que eles vêem como "bonito", "explícito" e "simples". Como Alex Martelli colocá-lo em seu Python Cookbook (2ª ed, p 230..): ". Para descrever algo tão inteligente não é considerado um elogio na cultura Python" A filosofia de Python rejeita a Perl " há mais de uma maneira de fazê-lo "abordagem de design de linguagem em favor do" não deve haver um caminho e de preferência apenas um óbvio para fazê-lo ".

Desenvolvedores do Python evitam optimização prematura, e, além disso, para rejeitar manchas partes não críticas de CPython que oferecem um aumento marginal na velocidade à custa de clareza. Python é por vezes descrito como "lento". No entanto, pela Princípio de Pareto, a maioria dos problemas e seções de programas não são a velocidade crítica. Quando a velocidade é um problema, os programadores Python tendem a tentar usar um compilador JIT como Psyco, reescrevendo as funções de tempo crítico em "mais perto do metal" linguagens como C, ou por traduzir (um dialeto de) código Python para código C usando ferramentas como Cython.

O núcleo filosofia da linguagem é resumido pelo documento "PEP 20 (O Zen de Python)".

Nome e neologismos

Uma meta importante dos desenvolvedores de Python está fazendo o divertimento de usar Python. Isto reflecte-se na origem do nome (com base na série de televisão Flying Circus do Monty Python), na prática comum de usar referências de Monty Python em exemplo de código, e em uma abordagem lúdica para, ocasionalmente, tutoriais e materiais de referência. Por exemplo, a variáveis metasyntactic frequentemente utilizados em literatura Python são Spam e ovos, em vez do tradicional foo e bar.

Um comum neologismo na comunidade Python é Python, que pode ter uma ampla gama de significados relacionados ao estilo de programa. Dizer que um pedaço de código é Python é dizer que ele usa expressões idiomáticas bem Python, que é natural ou mostra fluência no idioma. Da mesma forma, quer dizer de um recurso de interface ou linguagem Python que é dizer é que funciona bem com expressões Python, que a sua utilização se articule com o resto da língua.

Em contraste, uma marca de código unpythonic é que ele tenta escrever C ++ (ou Lisp, Perl ou Java) em código Python, ou seja, fornece uma transcrição áspera em vez de uma tradução idiomática de formulários a partir de uma outra língua. O conceito de pythonicity está fortemente ligado à filosofia minimalista do Python de legibilidade e evitando o "há mais de uma maneira de fazê-lo" abordagem. Código ilegível ou expressões incompreensíveis são unpythonic.

Usuários e admiradores do Python-o mais especialmente aquelas consideradas experiente ou experiente-são muitas vezes referidos como Pythonists, Pythonistas, e Pythoneers.

O prefixo Py pode ser usado para mostrar que algo está relacionada com o Python. Exemplos do uso de este prefixo em nomes de aplicações Python ou bibliotecas incluir PyGame, uma ligação de SDL para Python (comumente usado para criar jogos); PyS60, uma implementação para o Symbian Series 60 Sistema Operacional; PyQt e PyGTK, que ligam Qt e GTK, respectivamente, para Python; e PyPy, uma implementação de Python escrita em Python. O prefixo é usado também fora de nomear os pacotes de software: o principal Python conferência é nomeado PyCon.

Uso

Python é frequentemente utilizado como um linguagem de script para aplicações web, por exemplo, através mod_wsgi pela Servidor web Apache. Com Web Server Gateway Interface, uma API padrão foi desenvolvido para facilitar estas aplicações. Frameworks de aplicação web como Django, Pilões, TurboGears, web2py, Flask e Desenvolvedores de apoio do Zope na concepção e manutenção de aplicações complexas. Bibliotecas como NumPy, SciPy e Matplotlib permitir Python para ser utilizada de forma eficaz em computação científica.

Python tem sido incorporado com sucesso em uma série de produtos de software como uma linguagem de script, incluindo em método de software, tais como elementos finitos Pacotes de animação Abaqus, 3D, como Maya, MotionBuilder, Softimage, Cinema 4D, BodyPaint 3D, Modo e Programas de imagens Blender e 2D como GIMP, Inkscape, Scribus e Paint Shop Pro. GNU GDB usa Python como uma impressora bonita para mostrar estruturas complexas, tais como recipientes de C ++. ESRI está agora a promover Python como a melhor escolha para a criação de scripts em ArcGIS. Foi mesmo usado em vários jogos de vídeo e foi adotado como um dos dois disponíveis linguagens de script em Google Docs.

Para muitos sistemas operacionais, Python é um componente padrão; ele vem com mais Distribuições de Linux, NetBSD, OpenBSD e com Mac OS X e pode ser usado a partir do terminal. Um número de distribuições Linux usam instaladores escritos em Python: Ubuntu utiliza o Instalador Ubiquity, enquanto Red Hat Linux e Fedora usam o Instalador Anaconda. Gentoo Linux utiliza Python em sua sistema de gerenciamento de pacotes, Portage ea ferramenta padrão para acessá-lo, emergir. Pardus usa-lo para a administração e durante a inicialização do sistema.

Python também tem visto o uso extensivo no indústria de segurança da informação, incluindo explorar o desenvolvimento.

Entre os usuários do Python estão YouTube eo original Cliente de BitTorrent. Grandes organizações que fazem uso de Python incluem Google , Yahoo! , CERN, NASA e ITA. A maior parte do Software para o açúcar One Laptop per Child XO, desenvolvido agora em Sugar Labs, é escrito em Python.

Sintaxe e semântica

Com sintaxe destacada código 2.x do Python.

Python foi concebido para ser uma linguagem de fácil leitura. Ele é projetado para ter um layout visual sóbrio, muitas vezes usando palavras-chave em inglês, onde outras línguas usam pontuação. Python requer menos clichê do que o tradicional línguas manifestamente digitados estruturados, tais como C ou Pascal, e tem um menor número de excepções sintácticas e casos especiais do que qualquer um destes. Para uma descrição detalhada das diferenças entre versões 2.xe 3.x, consulte História do Python.

Entalhe

Usos Python recuo de espaço em branco, em vez de chaves ou palavras-chave, para delimitar quadras (uma característica também conhecido como o regra off-side). Um aumento no recuo vem após certas declarações; uma diminuição no recuo significa o fim do bloco actual.

As declarações e fluxo de controle

As declarações de Python incluem (entre outros):

  • O if declaração, que condicionalmente executa um bloco de código, juntamente com else e elif (uma contração de else-if).
  • O for declaração, que itera sobre um objeto iterável, capturando cada elemento de uma variável local para uso pelo bloco anexado.
  • O while declaração, que executa um bloco de código enquanto a sua condição for verdadeira.
  • O try declaração, que permite exceções levantadas no seu bloco de código anexado a ser capturados e manipulados por except cláusulas; ele também garante que código de limpeza em uma finally bloco sempre será executada independentemente de como as saídas de bloco.
  • O class declaração, que executa um bloco de código e anexa seu namespace local para um classe, para uso em programação orientada a objetos.
  • O def declaração, que define um função ou método.
  • O with declaração (a partir de Python 2.6), que inclui um bloco de código dentro de um gerente de contexto (por exemplo, a aquisição de um bloquear antes do bloco de código é executado, e liberando o bloqueio depois).
  • O pass declaração, que serve como um NOP e pode ser usado em lugar de um bloco de código.
  • O assert declaração, utilizado durante a depuração para verificar se há condições que deveriam aplicar.
  • O yield declaração, que retorna um valor de um função de gerador. (A partir de Python 2.5, yield também é um operador. Este formulário é usado para implementar coroutines - ver abaixo).

Cada declaração tem sua própria semântica: por exemplo, o def declaração não executar seu bloco imediatamente, ao contrário da maioria outras declarações.

Não CPython não suporta primeira classe continuações, e de acordo com Guido van Rossum nunca será. No entanto, um melhor suporte para coroutine funcionalidade semelhante é fornecida em 2.5, através do alargamento do Python geradores. Antes de 2,5, foram geradores preguiçoso iterators; informação foi passada unidireccionalmente para fora do gerador. A partir de Python 2.5, é possível passar informações de volta para uma função de gerador.

Expressões

Expressões Python são semelhantes às linguagens como C e Java . Algumas notas importantes:

  • Em Python 2, o operador / em inteiros faz a divisão inteira, ou seja, ele trunca o resultado para um número inteiro. Em Python 3, no entanto, o resultado do / é sempre um valor de ponto flutuante, e um novo operador // é introduzido para fazer a divisão inteira. Em Python 2, esse comportamento pode ser ativado usando a instrução de divisão de importação ou __future__-cast tipo float (x) / float (y)
  • Em Python, == compara em termos de valor, em contraste com Java, onde ele compara por referência (comparações de valor em Java usar o método equals). Para comparar por referência em Python, use o operador is.
  • Python usa as palavras and , or , not para os seus operadores booleanos ao invés do simbólico && , || , ! .
  • Python tem um importante tipo de expressão conhecido como um lista compreensão. As versões recentes do Python estenderam compreensões lista em uma expressão mais geral conhecido como expressão gerador.
  • Funções anônimas são implementados usando expressões lambda; no entanto, estes são limitados na medida em que o corpo pode ser apenas uma única expressão.
  • As expressões condicionais em Python são escritos como se y x z outra (diferente, a fim de operandos do ?: Operador comum a muitos outros idiomas).
  • Python faz uma distinção entre listas e tuplas. As listas são escritas como [1, 2, 3], são mutáveis, e não pode ser usado como as chaves de dicionários (chaves de dicionário deve ser imutável em Python). Tuplos são escritas como (1, 2, 3), são imutável e assim pode ser usado como as chaves de dicionários. Os parênteses em torno da tupla são opcionais em alguns contextos. Tuplas podem aparecer no lado esquerdo de um sinal de igualdade; portanto, uma expressão como X, Y = Y, X pode ser usado para trocar duas variáveis.
  • Python 2 tem um "formato de cadeia" operador%. Estas funções análogas às expressões printf em C , por exemplo, "foo =% s bar =% d"% ("blah", 2) avalia a "barra foo = blah = 2". Em Python 3 este foi substituído pelo método de formato na classe string, por exemplo, "foo = {0} bar = {1}". Format ("blah", 2).
  • Python tem vários tipos de cordas.
    • De qualquer aspas simples ou duplas podem ser usados para citar cordas. Ao contrário de linguagens shell do Unix, Perl ou linguagens como Perl-influenciada Ruby ou Aspas simples, aspas duplas Groovy e funcionam de forma idêntica, ou seja, não há nenhuma seqüência de interpolação $ expressões foo.
    • Há também cordas multi-linha, que começam e terminam com uma série de três aspas simples ou duplas e funcionam como aqui documentos em línguas shell, Perl e Ruby.
    • Finalmente, todos os tipos de cordas anteriormente mencionados vêm em " variedades brutos "(indicado pela colocação de um r literal antes da citação de abertura), o que não fazer nenhum barra invertida-interpolação e, portanto, são muito úteis para expressões regulares ou do Windows caminhos -estilo; comparar "@ -quoting" em C #.
  • Python tem expressões fatia em listas, denotado como ... [à esquerda: direita] ou ... [left: right: stride]. Por exemplo, se os nums variável é atribuído à lista de [1, 3, 5, 7, 8, 13, 20], em seguida, as seguintes expressões irá avaliar Verdadeiro:
    • nums [2: 5] == [5, 7, 8], ou seja, a fatia vai até, mas não incluindo, o indicador direito.
    • nums [1:] == [3, 5, 7, 8, 13, 20], ou seja, todos os elementos, mas o primeiro, porque um índice direito omitido significa "o fim".
    • nums [: - 3] == [1, 3, 5, 7], ou seja, um índice deixou omitido significa "o início", e um índice negativo (esquerda ou direita) conta a partir do final.
    • nums [:] faz uma cópia da lista. Isto significa nums == nums [:] é verdade, mas nums é nums [:] é falsa. Alterações na cópia não afetará o original.
    • nums [1: 5: 2] == [3, 7], ou seja, se três números são dadas, o terceiro é chamado de "stride", indicando neste caso que a cada segundo elemento será selecionado.

Em Python, uma distinção entre as expressões e declarações é rigidamente aplicada, em contraste com linguagens como Lisp comum, Esquema ou Ruby. Isto leva a alguma duplicação de funcionalidade, por exemplo,

  • compreensões lista vs. laços "for"
  • expressões condicionais vs. "se" blocos
  • O eval () vs. exec () builtins (em Python 2, exec é um declarator declaração); eval () é para expressões, exec () é para as demonstrações.

Demonstrações não pode ser uma parte de uma expressão e assim a lista e outros compreensões ou expressões lambda, todas as expressões que são, não podem conter declarações. Um caso particular desta situação é que um comando de atribuição como "a = 1 'não pode formar parte da expressão condicional de uma declaração condicional; este tem a vantagem de evitar um erro de C clássico de confundir uma atribuição símbolo '=', para um operador de igualdade '==' que permaneceria em C válido se (c = 1) {...} mas se c = 1: ... é código Python inválido.

Métodos

Métodos em objetos são funções ligadas a classe do objeto; a sintaxe instance.method(argument) é, por métodos e funções normais, açúcar sintático para Class.method(instance, argument) . Métodos Python têm um explícito self parâmetro para acesso dados de instância, em contraste com a auto implícita em algumas outras linguagens de programação orientada a objetos (por exemplo, Java , C ++ ou Ruby).

Datilografia

Usos Python tipagem pato e digitou objetos, mas nomes de variáveis sem tipo. Restrições de tipo não são verificados em tempo de compilação; em vez disso, as operações em um objeto pode falhar, significando que o objeto dado não é de um tipo adequado. Apesar de ser tipagem dinâmica, o Python é com rigidez, proibindo operações que não estão bem definidos (por exemplo, adicionar um número a uma string) em vez de silenciosamente tentando dar sentido a eles.

Python permite que os programadores para definir seus próprios tipos usando classes, que são mais frequentemente utilizadas para programação orientada a objetos. Novo instâncias de classes são construídos chamando a classe (por exemplo, SpamClass() ou EggsClass() ), e as próprias classes são instâncias da metaclass type (ele próprio uma instância de si mesmo), permitindo metaprogramming e reflexão.

Antes da versão 3.0, Python teve dois tipos de classes: "antigos" e "novo estilo". Aulas de estilo antigo foram eliminados no Python 3.0, tornando todas as classes de estilo novo. Em versões entre 2.2 e 3.0, os dois tipos de classes podem ser utilizados. A sintaxe de ambos os estilos é o mesmo, a diferença é se a classe object é herdada de, direta ou indiretamente (todas as classes de estilo novo herdar de object e são instâncias de type ).

Aqui está um resumo dos tipos built-in do Python:

Tipo Descrição Exemplo de sintaxe
str Um imutável seqüência de caracteres. Em Python 2, cordas são uma seqüência de caracteres. Cadeias de caracteres Unicode precisam ser declaradas prefixando com a letra u. Em Python 3 cordas são Unicode por padrão. 'Wikipedia'
"Wikipedia"
"" "Spanning
múltiplas
linhas "" "
bytes Uma sequência imutável de bytes b'Some ASCII '
b "Alguns ASCII"
Lista Mutável, pode conter tipos mistos [4.0, 'string', True]
tuple Imutável, pode conter tipos mistos (4.0, 'string', True)
set , frozenset Desordenada, não contém duplicatas. A frozenset é imutável. {4.0, 'string', True}
frozenset ([4.0, 'string', True])
dict Um grupo mutável de pares de chave e valor {'Key1': 1,0, 3: false}
int Um imutável número de precisão fixa de magnitude ilimitada 42
flutuador Um imutável número de ponto flutuante (precisão definida pelo sistema) 3.1415927
complexo Um imutável número complexo com o número real e partes imaginárias 3 + 2.7j
bool Um valor de verdade imutável Verdade
Falso

Matemática

Python define o operador módulo de modo a que o resultado de a % b está no intervalo aberto [0,b) , onde b é um número inteiro positivo. (Quando b é negativo, o resultado encontra-se no intervalo (b, 0]). Esta é a maneira usual de definir a operação de módulo em matemática. No entanto, este, por conseguinte, afecta o modo como a divisão de número inteiro é definido. Para manter a validade da equação b * (a // b) + a % b = a , a divisão de número inteiro é definido para arredondar direcção menos infinito. Portanto 7 // 3 2 é, mas (−7) // 3 é -3. Isto é diferente de muitos linguagens de programação, onde o resultado da divisão de inteiros arredonda em direção a zero eo operador módulo é, consequentemente, definido de uma forma que pode retornar números negativos.

Python fornece uma round função para arredondamento flutua para números inteiros. Versão 2.6.1 e uso inferior rodada longe de zero: round(0.5) é de 1,0, round(-0.5) é -1,0. Versão 3.0 e uso maior round-a-even: round(1.5) é de 2,0, round(2.5) é de 2,0. A Decimal tipo / classe no módulo decimal (desde a versão 2.4) fornece representação numérica exata e vários modos de arredondamento.

Python permite expressões booleanas com múltiplas relações de igualdade em uma maneira que seja consistente com o uso geral em matemática. Por exemplo, a expressão a < b < c testa se a é inferior a b e b é menor do que c . Idiomas derivado C-interpretar esta expressão diferente: em C, a expressão seria primeiro avaliar a < b , resultando em 0 ou 1, e que resultado seria então comparado com c .

Implementações

CPython

A implementação tradicional Python, conhecido como CPython, é escrito em C reunião do Padrão C89. CPython compila programas em Python para intermediário código de bytes, os quais são então executados pela máquina virtual. Distribui-se com uma grande biblioteca padrão escrito numa mistura de C e Python. Navios CPython em versões para várias plataformas, incluindo Microsoft Windows e mais moderno Sistemas Unix-like. CPython se destinava a partir de praticamente a sua própria concepção de ser multi-plataforma; seu uso e desenvolvimento em plataformas esotéricas, como Ameba, queridos ao lado de mais convencionais, como Unix e Mac OS, tem ajudado muito a este respeito.

Stackless Python é um fork significativo de CPython que implementa microroscas; ele não usa a pilha de memória C. Pode ser esperado para rodar em aproximadamente as mesmas plataformas que CPython é executado.

Google iniciou um projeto chamado Andorinha sem carga em 2009 com o objetivo de aumentar a velocidade do interpretador Python por cinco vezes e melhorando sua capacidade multithreading para escalar para milhares de núcleos.

Implementações alternativas

Jython compila o programa Python em código Java byte, que pode então ser executado por todos os Java Virtual Machine implementação. Isso também permite o uso de funções de biblioteca de classe Java a partir do programa Python. IronPython segue uma abordagem semelhante, a fim de executar programas em Python sobre .NET Common Language Runtime. PyPy é um experimental implementação de auto-hospedagem de Python, escrita em Python, que pode produzir vários tipos de bytecode, código objeto e idiomas intermédios. Também existem compiladores para de alto nível objeto idiomas, com ou sem restrições Python, um subconjunto restrito do Python, ou uma linguagem semelhante ao Python como o idioma de origem. PyPy é deste tipo, compilando RPython para várias línguas; outros exemplos incluem Pijamas para compilar JavaScript; Galpão Pele compilação de C ++ ; e Cython e Pyrex compilação de C .

Em 2005 Nokia lançou um interpretador Python para o Series 60 telefones celulares chamados PyS60. Ele inclui muitos dos módulos a partir das implementações CPython e alguns módulos adicionais para a integração com a Sistema operacional Symbian. Este projecto foi mantido até à data para ser executado em todas as variantes da plataforma S60 e existem vários módulos de terceiros disponíveis. A Nokia N900 também suporta Python com bibliotecas GTK janelas, com o recurso que os programas podem ser escrito e executado no próprio dispositivo. Há também um interpretador Python para Dispositivos Windows CE (incluindo Pocket PC). Ele é chamado PythonCE. Existem ferramentas adicionais disponíveis para fácil aplicação e desenvolvimento GUI.

A máquina virtual PyMite começou em 2000 e fez sua primeira aparição pública na PyCon 2003. PyMite foi dobrada em Python-on-a-Chip em 2009. Python-on-a-Chip (p14p) é um projeto para desenvolver um reduzido máquina virtual Python (codinome PyMite) que executa um subconjunto significativo da linguagem Python em microcontroladores sem um sistema operacional em como pouco quanto 4KB de RAM.

Por volta de 2004, o Pyastra projeto criado um tradutor especializado e montador que tem como alvo muito restrito de recursos- microcontroladores.

ChinesePython (中蟒) é uma linguagem de programação Python utilizando léxico da língua chinesa. Além de palavras reservadas e nomes de variáveis, a maioria das operações de tipos de dados podem ser codificados em chinês também.

Semântica de interpretação

A maioria das implementações de Python (incluindo CPython ) pode funcionar como um linha de comando intérprete, para os quais o usuário insere declarações sequencialmente e recebe os resultados imediatamente. Em suma, Python atua como um shell. Enquanto a semântica dos outros modos de execução (bytecode compilação, ou compilação de código nativo) preservar a semântica seqüenciais, eles oferecem um aumento de velocidade ao custo de interatividade, assim eles geralmente só são utilizados fora de uma interação de linha de comando (por exemplo, , quando a importação de um módulo).

Outros conchas adicionar capacidades além daquelas no interpretador de base, incluindo IDLE e IPython. Embora geralmente seguindo o estilo visual do shell Python, eles implementar recursos como auto-realização, a retenção de estado de sessão, e destaque de sintaxe.

Algumas implementações pode compilar não só para bytecode, mas pode se transformar em código Python código de máquina. Até agora, isso só foi feito para subconjuntos restritas do Python. PyPy adota essa abordagem, nomeando sua versão restrita compilable de Python RPython.

É um psico especializado apenas no compilador tempo que se integra com CPython e transforma bytecode para código de máquina em tempo de execução. O código produzido é especializada em certa tipos de dados e é mais rápido do que o código Python padrão. Psyco é compatível com todo o código Python, e não apenas um subconjunto.

Desenvolvimento

Desenvolvimento Python é conduzido em grande parte através do processo de Python Enhancement Proposal (PEP). PEPs são documentos padronizados de design que fornecem informações gerais relacionadas com Python, incluindo propostas, descrições, lógicas de design e explicações para recursos de linguagem. PEPs pendentes são revisados e comentados por Van Rossum, o projeto de Python Ditador benevolente para a Vida (líder / idioma arquiteto). Os desenvolvedores do CPython também comunicar através de uma lista de discussão, python-dev, que é o principal fórum para a discussão sobre o desenvolvimento da linguagem; questões específicas são discutidas na Roundup bug perseguidor mantida a python.org. Desenvolvimento tem lugar no auto-hospedado svn.python.org.

Lançamentos públicos de CPython vêm em três tipos, que se distinguem pela qual parte do número de versão é incrementado:

  • versões para trás-incompatíveis, onde se espera que o código de quebrar e deve ser manualmente portado. A primeira parte do número de versão é incrementado. Estes lançamentos acontecer com pouca freqüência, por exemplo, a versão 3.0 foi lançado 8 anos após 2.0.
  • liberações principais ou "recurso", que são em grande parte compatível, mas introduzem novos recursos. A segunda parte do número de versão é incrementado. Estes lançamentos estão programados para ocorrer aproximadamente a cada 18 meses, e cada versão principal é apoiada por correções de bugs por vários anos após o seu lançamento.
  • lançamentos de reparação de erros, que introduzem nenhum novo recurso, mas corrigir bugs. A terceira e última parte do número de versão é incrementado. Estes lançamentos são feitos sempre que um número suficiente de bugs foram corrigidos a montante desde a última versão, ou aproximadamente a cada 3 meses. As vulnerabilidades de segurança também são corrigidos em versões de reparação de erros.

Um número de alfa, beta e liberá-candidatos também são liberados como previews e para testes antes do lançamento final é feita. Embora haja uma agenda intensa para cada versão, esta é muitas vezes adiado se o código não está pronto. A equipe de desenvolvimento monitorar o estado do código, executando o grande suíte de teste de unidade durante o desenvolvimento, e utilizando o Buildbot sistema de integração contínua.

Biblioteca padrão

Python tem uma grande biblioteca padrão, comumente citado como um dos pontos mais fortes do Python, fornecendo ferramentas pré-escritas adequados para muitas tarefas. Isso é deliberado e tem sido descrito como um "baterias incluídas" filosofia Python. Os módulos da biblioteca padrão pode ser aumentada com módulos personalizados escritos em C ou Python. Bibliotecas C ++ Boost inclui uma biblioteca, Boost.Python, para permitir a interoperabilidade entre C ++ e Python. Por causa da grande variedade de ferramentas fornecidas pela biblioteca padrão, combinada com a capacidade de utilizar uma linguagem de nível inferior, tal como C ++ e C, já que é capaz de interagir entre outras bibliotecas, pitão pode ser um poderoso linguagem cola entre linguagens e ferramentas.

A biblioteca padrão é particularmente bem adaptado para escrever aplicativos para a Internet, com um grande número de formatos e protocolos padrão (como MIME e HTTP) já suportados. Módulos para a criação de interfaces gráficas de usuário, conectando a bancos de dados relacionais, aritmética de precisão arbitrária com decimais, manipulando expressões regulares, e fazendo testes de unidade também estão incluídos.

Algumas partes da biblioteca padrão são cobertos pelas especificações (por exemplo, a Aplicação WSGI wsgiref segue PEP 333), mas a maioria dos módulos não são. Eles são especificadas pelo seu código, documentação interna e conjunto de testes (se fornecido). No entanto, porque a maioria da biblioteca padrão é multi-plataforma de código Python, há apenas alguns módulos que devem ser alterados ou totalmente reescrito por implementações alternativas.

A biblioteca padrão não é essencial para executar Python ou incorporar Python dentro de um aplicativo. Blender 2.49 por exemplo omite a maior parte da biblioteca padrão.

Para teste de software, a biblioteca padrão fornece o unittest e doctest módulos.

Influências sobre outros idiomas

Concepção e filosofia do Python influenciaram várias linguagens de programação, incluindo:

  • Pyrex e o seu derivado Cython são tradutores de código que são dirigidas a escrever extensões C rápidas para o interpretador CPython. A linguagem é principalmente Python com extensões de sintaxe para C ++ e funções C. Ambas as línguas produzir código compilable C como saída.
  • Boo usa recuo, uma sintaxe semelhante, e um modelo de objeto similar. No entanto, utiliza Boo tipagem estática e está intimamente integrado com o .NET Framework.
  • Cobra utiliza reentrância e uma sintaxe semelhante. "Agradecimentos" do documento lista Cobra Python primeiro entre as línguas que influenciaram. No entanto, Cobra suporta diretamente projetar a contrato, testes de unidade e opcional tipagem estática.
  • ECMAScript emprestado iteradores, geradores, e compreensões lista de Python.
  • Go é descrito como incorporando a "velocidade de desenvolvimento de trabalhar em uma linguagem dinâmica como Python".
  • Groovy foi motivada pelo desejo de trazer a filosofia de design Python para Java .
  • OCaml tem uma sintaxe opcional, chamado twt (o espaço em branco Coisa), inspirado em Python e Haskell.

Práticas de desenvolvimento do Python também têm sido imitado por outras línguas. A prática de exigir um documento que descreve a justificativa para, e as questões em torno, uma mudança para o idioma (no caso do Python, um PEP) também é usado em Tcl e Erlang por causa da influência do Python.

Retirado de " http://en.wikipedia.org/w/index.php?title=Python_(programming_language)&oldid=411022789 "