Exemplos de Código

Podemos encontrar vários (e muito bons) exemplos de códigos Python no endereço a seguir:

http://www.scriptbrasil.com.br/codigos/python/

Ide - Exmplo da ide Eric e como instalar!

Eric Ide – O que é isto ?

Eric é uma completa ferramenta para edição de Python e Ruby. (Detalhe: Ela é escrita em Python)
É baseada em QT, o que a torna uma ferramenta compatível para qualquer sistema operacional onde se possa instalar o Python. Esta ide foi feita para ser utilizada para programar de maneira rápida e também para ser utilizada como gestora de projetos. Esta ferramenta inclui um sistema de plugins que podem ser baixados diretamente do programa, o que torna esta ide bastante extensível.
Página do Eric: http://eric-ide.python-projects.org/Informações mais detalhadas sobre a ide estão disponíveis no site.

Instalando a Ide ...
Para instalar esta ide, precisamos atender alguns pré-requisitos...
· Python ( lógico ) rsrsrs
· PyQT - Download PyQT
· Eric – Download do Eric
Observações:
O download do PyQt deve ser feito de acordo com a versão do Python que foi instalada em seu computador.

Todos os arquivos estão disponibilizados no site: http://www.riverbankcomputing.co.uk/software/pyqt/download

Após feito o download, instale o PyQt ...




Depois de instalado, descompacte o Eric onde desejar que ele fique instalado. No meu caso, descompactei em uma pasta na raiz do disco chamada EricIDE ...

Entre no prompt-comando:


Entre no diretório em que você descompactou o Eric.


E rode o seguinte comando.
Python install.py




Aguarde até o fim deste processo, e depois, entre no Windows Explorer, na pasta onde você colocou o Eric, e encontre o arquivo eric4.py




É só clicar 2 vezes e está funcionando a sua ide...




Depois é só ajustar de acordo com as suas necessidades...

API ( Algumas Demonstrações)

Os módulos que estão logo abaixo, fazem parte da biblioteca padrão Python.

Reconhecimento de Padrões em Strings.
O módulo 're' fornece ferramentas para lidar com processamento de strings através de expressões regulares. Para reconhecimento de padrões complexos e manipulações elaboradas, expressões regulares oferecem uma solução sucinta e eficiente:

>>> import re
>>> re.findall(r’\bf[a-z]*’, ’which foot or hand fell fastest’)
[’foot’, ’fell’, ’fastest’]
>>> re.sub(r’(\b[a-z]+) \1’, r’\1’, ’cat in the the hat’)
’cat in the hat’

Quando as exigências são simples, métodos de strings são preferíveis por serem mais fáceis de ler e depurar:

>>> ’Ronaldo brilha’.replace(’brilha’, ’Curintxia’)
’Ronaldo Curintxia’

Matemática
O módulo math oferece acesso às funções da biblioteca C para matemática e ponto flutuante:

>>> import math
>>> math.cos(math.pi / 4.0)
0.70710678118654757
>>> math.log(1024, 2)
10.0

O módulo random fornece ferramentas para gerar seleções aleatórias:

>>> import random
>>> random.choice([’maca’, ’pera’, ’banana’])
’maca’
>>> random.sample(xrange(100), 10) # sampling without replacement
[30, 83, 16, 4, 8, 81, 41, 50, 18, 33]
>>> random.random() # random float
0.17970987693706186
>>> random.randrange(6) # random integer chosen from range(6)
4

Tratamento de Exceções

Exceções
Mesmo que um comando ou expressão estejam sintaticamente corretos, talvez ocorra um erro na hora de sua execução. Erros detectados durante a execução são chamados exceções e não são necessariamente fatais. Logo veremos como tratá-las em programas Python. A maioria das exceções não são tratadas e acabam resultando em mensagens de erro:
>>> 10 * (1/0)
Traceback (most recent call last):
File "", line 1, in ?
ZeroDivisionError: integer division or modulo by zero
>>> 4 + spam*3
Traceback (most recent call last):
File "", line 1, in ?
NameError: name ’spam’ is not defined
>>> ’2’ + 2
Traceback (most recent call last):
File "", line 1, in ?
TypeError: cannot concatenate ’str’ and ’int’ objects
A última linha da mensagem de erro indica o que aconteceu. Exceções surgem com diferentes tipos, e o tipo é impresso como parte da mensagem . Os tipos no exemplo são: ZeroDivisionError, NameError eTypeError. A string impressa como sendo o tipo da exceção é o nome interno da exceção que ocorreu. Isso éverdade para todas exceções pré-definidas em Python, mas não é necessariamente verdade para exceções definidas pelo usuário. O resto da linha é um detalhamento que depende do tipo da exceção ocorrida e sua causa. A parte anterior da mensagem de erro apresenta o contexto onde ocorreu a exceção. Essa informação é denominada stack traceback (N.d.T: rastreamento da pilha para trás). Em geral, contém uma lista de linhas do código fonte, sem apresentar, no entanto, valores lidos da entrada padrão.
Tratamento de Exceções
É possível escrever programas que tratam exceções específicas. Observe o exemplo seguinte, que pede dados ao usuário até que um inteiro válido seja fornecido, ainda permitindo que o programa seja interrompido (utilizando Control-C ou seja lá o que for que o sistema operacional suporte). Note que uma interrupção gerada pelo usuário será sinalizada pela exceção KeyboardInterrupt.
>>> while True:
... try:
... x = int(raw_input("Entre com um número: "))
... break
... except ValueError:
... print "Opa! Esse número não é válido. Tente de novo..."
...
A construção try funciona da seguinte maneira:
• Primeiramente, a cláusula try (o conjunto de comandos entre as palavras reservadas try e except ) é executado.
• Se não for gerada exceção, a cláusula except é ignorada e termina a execução da construção try.
• Se uma execução ocorre durante a execução da cláusula try, os comandos remanescentes na cláusula são ignorados. Se o tipo da exceção ocorrida tiver sido previsto junto àlguma palavra-reservada except, entãoessa cláusula será executada. Ao fim da cláusula também termina a execução do try como um todo.
• Se a exceção ocorrida não foi prevista em nenhum tratador except da construção try em que ocorreu,então ela é entregue a uma construção try mais externa. Se não existir nenhum tratador previsto para tal exceção (chamada unhandled exception), a execução encerra com uma mensagem de erro. A construção try pode ter mais de uma cláusula except para especificar múltiplos tratadores para diferentes exceções. No máximo um único tratador será ativado. Tratadores só são sensíveis as exceções levantadas nointerior da cláusula try, e não que tenha ocorrido no inteiror de outro tratador num mesmo try. Um tratadorpode ser sensível a múltiplas exceções, desde que as especifique em uma tupla:
... except (RuntimeError, TypeError, NameError): ... pass
(Meterial retirado do endereço web http://www.python.org)

Recursos de Modularização e "Orientação a Objetos"

1. Introdução
Python não força o programador a pensar em objetos, mas eles fazem parte da linguagem desde o início, incluindo conceitos avançados como sobrecarga de operadores, herança múltipla e introspecção. Com sua sintaxe simples, é muito natural aprender orientação a objetos em Python, pois existem classes prontas e fáceis de usar para acessar bancos de dados, montar aplicações gráficas, processar XML e realizar inúmeras outras tarefas.
As instruções a seguir foram traduzido de "Estrutura de Dados e Algoritmos com Padrões de Projetos Orientado a Objeto em Python de Bruno R. Preiss" elas identificam e descrevem as características da linguagem de programação Python.

2. Objetos e Tipos de dados
Um objeto em linguagem de programação abstrata representa a posição onde será armazenada. Os objetos em Python apresentam os seguintes atributos:

* Tipo: O tipo de um objeto determina os valores que o objeto pode receber e as operações que podem ser executadas nesse objeto.
* Valor: O valor de um objeto é o índice de memória ocupada por essa variável. Como os índices das posições da memória são interpretados, isto é determinado pelo tipo da variável.
* Tempo de vida: A vida de um objeto é o intervalo de tempo de execução de um programa em Python, é durante este tempo que o objeto existe.
3. Nomes
A fim de utilizar um objeto em um programa em Python, esse objeto deve ter um nome. O nome de um objeto é uma variável usada para identificar esse objeto em um programa. Em Python, um objeto não pode ter zero, um ou mais no nome.
Veja: 1 i = 57
Esta indicação cría um objeto com nome i e liga vários atributos com esse objeto. O tipo do objeto é int e seu valor é 57.
Alguns atributos de um objeto, tal como seu tipo, são limitados quando o objeto é criado e não podem serer mudados. Isto é chamado ligação estática.
As ligações para outros atributos de um objeto, tais como seu valor, podem ser mudados durante a execução do programa onde o objeto está. Isto é chamado de ligação dinâmica.
Veja:
1 i = int(57)
Se nós seguirmos esta indicação com uma indicação de atribuição como:
1 j = i
então os nomes i e j são o mesmo objeto!
A comparação ficaria:
1 if i == j:
2 print "valores iguais"
este é o teste se o valor do objeto i é o mesmo valor do objeto j (desde que sejam de mesmo valor). Entretanto, é possível para dois objetos distintos terem o mesmo valor. Para testar se os dois nomes são um mesmo objeto, é necessário utilizar o operador is:
1 if i is j:
2 print "mesmo objeto"

Para saber se os tipos de dados de dois objetos são iguais é necessário:
1 i = 57
2 j = 47
3 if type(i) == type(j):
4 print "mesmo tipo"
4. Passagem de Parâmetros
A passagem de parâmetro é um método em que os parâmetros são transferidos entre métodos quando um método chama outro. Python fornece somente um método da passagem de parâmetro, passagem-por-referência.
Considere o par de métodos definidos abaixo. Na linha 4, o método um chama o método dois. Em geral, cada chamada do método inclui a lista de argumentos, possivelmente vazio. Os argumentos especificados em uma chamada do método são chamados parâmetros reais. Neste caso, há somente um parâmetro real, o x.
1 def um():
2 x = 1
3 print x
4 dois(x)
5 print x
6
7 def dois(y):
8 print y
9 y = 2
10 print y
Na linha 7 o método dois é definido como um método que aceita um único argumento y. Os argumentos que aparecem na definição do método são chamados parâmetros formais.
A semântica da passagem-por-referência é: O efeito da definição do parâmetro formal deve criar um nome no namespace local da função e ligá-lo então o nome ao objeto pelo parâmetro real. Por exemplo, no método dois o parâmetro formal é y. Quando o método é chamado, o nome y está atribuído ao objeto x.
A saída do método um ficará:
1 1 2 1
E a saída do método dois com o parâmetro 3 ficará:
2 3
5. Classes
Uma classe define uma estrutura de dados que contenha instância de atributos, instância de métodos e classes aninhadas. Em Python a classe de um objeto e o tipo de um objeto são sinônimos. Cada objeto do Python tem uma classe (tipo) que é derivada diretamente ou indiretamente da classe interna do objeto do Python. A classe (tipo) de um objeto determina o que é e como pode ser manipulado. Uma classe encapsula dados, operações e semântica.
A classe é o que faz com que Python seja uma linguagem de programação orientada a objetos. Classe é definida como um agrupamento de valores sua gama de operações. As classes facilitam a modularidade e abstração de complexidade. O usuário de uma classe manipula objetos instanciados dessa classe somente com os métodos fornecidos por essa classe. Frequentemente classes diferentes possuem características comuns. As classes diferentes podem compartilhar valores comuns e podem executar as mesmas operações. Em Python tais relacionamentos são expressados usando derivação e herança.
6 Classes Aninhadas

Em Python é possível definir uma classe dentro de outra, chamada de classes aninhadas.
Veja:
1 class A(object):
2
3 def __init__(self):
4 self.y = 0
5
6 class B(object):
7
8 def __init__(self):
9 self.x = 0
10
11 def f(self):
12 pass
Uma classe aninhada comporta-se como qualquer "classe externa" (não-aninhada). Pode conter métodos e atributos, e pode ser instanciada assim:
1 obj = A.B()
Este estado cria uma nova instância da classe B. Instanciado, nós podemos invocar o método f utilizando:
1 obj.f()
Note, não é necessário instanciar a classe externa A, mesmo quando nós criamos uma instância da classe interna.
Os métodos de uma classe aninhada podem acessar os atributos da classe interna mas não das classes externas, o método f pode acessar o atributo x do exemplo acima, mas não pode acessar o atributo y.
7 Herança e Polimorfismo

7.1 Derivação e Herança

Esta seção revê o conceito de classe derivada. As classes derivadas são uma característica extremamente útil em Python porque permitem que o programador defina classes novas estendendo classes existentes. Usando classes derivadas, o programador pode explorar as comunalidades que existem entre as classes de um programa. As classes diferentes podem compartilhar valores e operações.
A derivação é a definição de uma classe nova estendendo uma classe existente. A classe nova é chamada de classe derivada e a classe existente de quem é derivada é chamada de classe base.
Em Python, deve haver ao menos uma classe base, mas pode haver mais de uma classe base, formando assim herança múltipla.
Python suporta classes clássicas (old-style classes) e classes de novo-estilo (new-style classes). Uma new-style class é uma classe que é derivada da classe interna do objeto. Uma old-style class é uma classe que não tem uma classe base ou uma que é derivada somente de outras classes old-style.
Considere a classe Pessoa e a classe Pais abaixo. Porque Pais também são Pessoas, a classe Pai é derivada da classe Pessoa. A derivação em Python é indicada incluindo o(s) nome(s) da class(es) base em parênteses na declaração da classe derivada.
1 class Pessoa(object):
2 FEMALE = 0
3 MALE = 1
4
5 def __init__(self, nome, sexo):
6 super(Pessoa, self).__init__()
7 self._nome = nome
8 self._sexo = sexo
9
10 def __str__(self):
11 return str(self._nome)
12
13 class Pais(Pessoa):
14
15 def __init__(self, nome, sexo, crianca):
16 super(Pais, self).__init__(nome, sexo)
17 self._crianca = crianca
18
19 def getCrianca(self, i):
20 return self._crianca[i]
21
22 def __str__(self):
23 pass
Uma classe derivada herda todos os atributos de sua classe base. Isto é, a classe derivada contem todos os atributos da classe contidos na classe base e a classe derivada suporta todas as operações fornecidas pela classe base. Por exemplo, veja:
1 p = Pessoa()
2 q = Pais()
Assim p é uma Pessoa, tem os atributos _nome e _sexo e o método str. Além disso, a classe Pais é derivado de Pessoa, então o objeto q também é uma instância de atributos _nome _sexo e do método str.
Uma classe derivada pode estender a classe base de diversas maneiras: Os novos atributos podem ser usados, os novos métodos podem ser definidos e os métodos existentes podem ser sobrescritos. Por exemplo, a classe Pais adiciona uma atributo _crianca e um método getChild.
Se um método for definido em uma classe derivada que tenha o mesmo nome que um método na classe base, o método na classe derivada sobrescreve ele na classe base. Por exemplo, o método str na classe Pais sobrescreve o método str na classe Pessoa. Conseqüentemente, str(p) invoca Pessoa.str , visto que o str(q) invoca Pais.str .
Uma instância de uma classe derivada pode ser usada em qualquer lugar em um programa onde uma instância da classe base possa ser usado. Por exemplo, isto significa que a classe Pais pode ser passado como um parâmetro real a um método que espere receber uma Pessoa.
7.2 Polimorfismo
Polimorfismo significa ter algo único em vários lugares. O polimorfismo é usado em classes distintas compartilhando funções em comum. Porque as classes derivadas são distintas, suas execuções podem diferir. Entretanto, as classes derivadas compartilham de uma relação comum, instâncias daquelas classes são usadas exatamente na mesma maneira.
Traduzido por LeonardoGregianin
(Meterial retirado do endereço web http://www.python.org)

Comandos de Controle

Toda linguagem de programação, necessita de mecanismos para controlar o fluxo do programa, sem os quais seria impossível implementar uma lógica qualquer de forma rápida e sem necessidade de recursos avançados com algoritmos, e o Python não é diferente. Abordaremos as instruções if-else, while e for e serão apresentados exemplos com soluções para cada um desses itens.

Instrução if-else: A instrução if é uma das mais importantes em qualquer linguagem de
programação, pois permite que grupos de comandos sejam executados conforme o resultado de uma expressão ou de múltiplas expressões.
Sintaxe:
if condição:
comandos
else:
comandos
Exemplo: Crie um programa para verificar a idade dos freqüentadores de uma discoteca. Caso a idade seja menor que 18 anos, o usuário receberá a mensagem de que a entrada é proibida.
Solução:
idade=20
if idade<18:
print "Sua entrada está proibida porque você é menor de idade."
else:
print "Você tem mais de 18 anos. Pode entrar."

Instrução while: A estrutura while (também conhecida como laço de repetição) executa um grupo de comandos repetidas vezes, enquanto uma determinada condição for verdadeira. Quando for detectado o rompimento da veracidade desta condição, o fluxo dentro da estrutura while é interrompido e a execução do programa retorna na próxima linha após o fim deste laço de repetição.
Sintaxe:
while condição:
comandos
else:
comandos
Exemplo: Crie um programa que mostre todos os números pares menores que 100 e maiores que
um número informado pelo usuário.
Solução:
inicio=20
while inicio<=100:

if inicio%2==0:
print inicio
inicio=inicio+1
else:
print "O numero inicial é maior que 100"

Instrução for: A estrutura for realiza repetições (loops) de forma mais complexa do que o while, porém sua sintaxe é resumida facilitando o trabalho do programador.
Sintaxe:
for alvo in sequencia:
comandos
else:
comandos
Exemplo: Crie um programa que mostre todos os números ímpares menores que 100 e maiores
que um número inicial informado na sequência delimitadora do laço.
Solução:
for comeco in range(20,100):#perceba que o laço inicia em 20 e vai até 100
if comeco%2!=0:
print comeco
comeco=comeco+1
else:
print "O número inicial é maior que 100"

(Conteúdo retirado do endereço web http://cleibsonalmeida.blog.br)

Operadores Básicos

A tabela a seguir resume as precedências de operadores em Python, da menor precedência (ligação mais fraca) a maior precedência (ligação mais forte). Os operadores na mesma caixa têm a mesma precedência. A menos que a sintaxe seja dada explicitamente, os operadores são binários. Os operadores na mesma caixa são agrupados da esquerda para a direita (exceto as comparações, incluindo os testes, os qual tem a mesma precedência e são encadeados da esquerda para a direita e exponenciação, que se agrupam da direita para a esquerda).












Tipos de Dados


Todo objeto possui uma identidade, um tipo e um valor. A identidade de um objeto nunca muda após sua criação; você pode imaginá-la como sendo o endereço de memória de um objeto. O operador ‘is’ compara a identidade de dois objetos; a função id() retorna um número inteiro que representa a identidade de um objeto (atualmente
implementada como sendo o seu endereço). O tipo de um objeto também é inalterável.
O tipo do objeto determina as operações que o objeto suporta (ex., “ele tem um comprimento?”) e os possíveis valores para objetos deste tipo. A função type() retorna o tipo do objeto (que também e um objeto). O valor de alguns objetos pode mudar.
Objetos que podem mudar seu valor são denominados mutáveis; objetos que não podem mudar seu valor após terem sido criados são chamados de imutáveis. (O valor de um objeto contêiner imutável que possui uma referência para um objeto mutável pode alterar quando o valor do último é alterado; porém, o conteúdo do primeiro ainda é considerado imutável porque a coleção de objetos deste conteúdo não pode ser modificada. Logo, imutabilidade não é estritamente o mesmo que ter um valor inalterável, é algo mais sutil.) A mutabilidade de um objeto é determinada pelo seu tipo; por exemplo, números, strings e tuplas são imutáveis, enquanto dicionários e listas são
mutáveis.

Abaixo está uma lista de tipos que são internos ao interpretador Python. Módulos de extensão (escritos em C, Java, ou outras linguagens, dependendo da implementação) podem definir tipos adicionais. Versões futuras do Python podem adicionar tipos nesta hierarquia (ex, números racionais, arrays com armazenamento eficiente de inteiros, etc.).
Algumas das descrições de tipos abaixo contêm um parágrafo listando ‘atributos especiais.’ São atributos que fornecem acesso a implementação e cuja intenção não é de uso geral. Suas definições podem mudar no futuro.

None: Este tipo tem um valor único. Este objeto é acessado através do nome interno “None”. Ele é usado com o significado de ausência de valor em várias situações, ex., ele é retornado por funções que não retornam nada explicitamente. Seu valor lógico é falso.
NotImplemented: Este tipo tem um valor único. Este objeto é acessado através do nome interno “NotImplemented”. Métodos numéricos e métodos completos de comparação podem retornar este valor se eles não implementam a operação para os operandos fornecidos. (O interpretador tentará então uma operação refletida, ou alguma chamada alternativa, dependendo do operador.) Seu valor lógico é verdadeiro.
Ellipsis: Este tipo tem um valor único. Este objeto é acessado através do nome interno Ellipsis. Ele é usado para indicar a presença da sintaxe ‘...’ em uma fatia. Seu valor lógico é verdadeiro. Números São criados por números literais e retornados como resultado por operadores aritméticos e funções aritméticas internas. Objetos numéricos são imutáveis; uma vez criados seus valores nunca mudam.

Números em Python são fortemente relacionados com números matemáticos, mas sujeitos às limitações da representação numérica em computadores.
Python faz distinção entre inteiros, números de ponto flutuante, e números complexos:

Inteiros: Representam elementos do conjunto matemático dos números inteiros (positivos e negativos). Existem três tipos de inteiros:
Inteiros Planos: Representam números na faixa de -2147483648 até 2147483647. (A faixa pode ser maior em máquinas com um tamanho de palavra maior, mas não menor.) Quando o resultado de uma operação fica fora dessa faixa, o resultado é retornado normalmente como um inteiro longo (em alguns casos, a exceção OverflowError é levantada no lugar). Para propósito de deslocamento (binário) e operações com máscaras, assume-se que eles usem notação binária de 32 bits ou mais e números negativos são representados usando complemento de dois, e não escondem nenhum bit do usuário (ex., todos os 4294967296 padrões de bits diferentes correspondem a um valor diferente).
Inteiros Longos: Representam números numa faixa ilimitada, sujeita apenas à memória (virtual). Para propósito de deslocamento (binário) e operações com máscaras, assume-se que usem notação binária e números negativos são representados com uma variação do complemento de dois que dá a ilusão de uma string infinita com o bit de sinal extendendo para a esquerda.
Booleanos: Representam os valores lógicos False (Falso) e True (Verdadeiro). Os dois objetos que representam os valores False e True são os únicos objetos Booleanos. O tipo Booleano é um subtipo dos inteiros planos, e valores Booleanos se parecem com os valores 0 e 1, respectivamente, em quase todos os contextos, a excec¸˜ao ´e quando são convertidos para uma string, as strings "False" ou "True" são retornadas, respectivamente. As regras para representação de inteiros foram feitas com a intenção de facilitar a interpretação de operações com máscara e deslocamento envolvendo inteiros negativos, e com o mínimo de problemas quando eles trocam entre os domínios dos inteiros planos e dos inteiros longos. Qualquer operação exceto o deslocamento a esquerda, se mantiver o resultado no mesmo domínio dos inteiros planos sem causar sobrecarga, irá manter o resultado no mesmo domínio dos inteiros longos ou ao usar operadores mistos.
Números de ponto flutuante: Eles representam os números de ponto flutuante de precisão dupla no nível da máquina. Vai depender da arquitetura da máquina (e da implementação de C ou Java) para a definir qual é a faixa aceita e a manipulação de sobrecargas. Python não suporta números de ponto flutuante de precisão simples; a economia de processamento e de uso de memória que geralmente são a razão para usar este tipo de técnica são mínimas perto do trabalho de usar objetos em Python, então não há razão para complicar a linguagem com dois tipos de números de ponto flutuante.
Números complexos: Representam os números complexos com um par de números de ponto flutuante de precisão dupla no nível da máquina. As mesmas características se aplicam como no caso dos números de ponto flutuante. As partes reais e imaginárias de um número complexo z podem ser obtidas através dos atributos somente de leitura z.real e z.imag.

Seqüências: Representam conjuntos finitos ordenados indexados por um número não-negativo. A função interna len() retorna o número de itens da sequência. Quando o tamanho de uma sequência é n, o conjunto de índices contêm os números 0, 1, . . . , n-1. O item i de uma seqüência a é retornado por a[i]. Seqüências também suportam fatiamento (slicing): a[i:j] retorna todos os itens com índice k onde i <=k < x =" i">= 0 e i <= x < j. Seqüências são divididas de acordo com sua “mutabilidade”:
· Seqüências imutáveis: Um objeto do tipo sequência imutável não pode ser alterado após sua criação. (Se o objeto contêm referências para outros objetos, estes objetos podem ser mutáveis e podem ser alterados; todavia, a coleção de objetos diretamente referenciadas por um objeto imutável não pode alterar). Os seguintes tipos são sequências imutáveis:
· Strings: Os itens de uma string são caracteres. Não há um tipo a parte para caracteres; eles são representados por uma string de um único item. Caracteres representam (pelo menos) um byte. As funções internas chr() e ord() convertem entre caracteres e números inteiros positivos representando os valores. Bytes com os valores de 0 a 127 geralmente representam o valor ASCII correspondente, mas a sua interpretação correta depende do programa. O tipo string é ainda usado para representar matrizes de dados, por exemplo, para guardar dados lidos de um arquivo. (Em sistemas cujo conjunto de caracteres nativo não é ASCII, strings podem usar EBCDIC em sua representação interna, contanto que as funções chr() e ord() implementem um mapeamento entre EBCDIC, e comparações de strings preservem a ordem ASCII. Ou será que talvez alguém pode propôr uma regra melhor?)
· Unicode: Os items de um objeto Unicode são unidades de código Unicode. São representadas por um objeto Unicode de um item e podem conter valores de 16 ou 32 bits, representando um caracter ordinal Unicode (o valor máximo é dado por sys.maxunicode e depende de como o interpretador Python foi configurado no momento da compilação). Pares surrogate podem estar presentes no objeto Unicode, e serão reportados como dois itens separados. As funções internas unichr() e ord() convertem entre unidades de código e inteiros positivos, representando os ordinais Unicode, como definidos no Unicode Standard 3.0. Conversão de, e para outros códigos são possíveis através do método Unicode encode e a função interna unicode().
· Tuples: Os itens de uma tupla são quaisquer objetos Python. Tuplas de dois ou mais itens são formadas por uma lista de expressões, separadas por vírgula. Uma tupla de um item (’singleton’) pode ser formada adicionando uma vírgula a uma expressão (uma expressão sozinha entre parênteses não cria uma tupla, já que parênteses podem ser usados para criar grupos de expressões). Uma tupla vazia pode ser criada por um par de parênteses.

Seqüências mutáveis: Sequências mutáveis podem ser alteradas depois de criadas. As notações de subscrição e fatiamento podem ser usadas como o alvo de atribuições ou do comando (del). Atualmente há apenas uma sequência mutável intrínseca a linguagem:
· Listas: Os itens de uma lista são quaisquer objetos Python. Listas são criadas colocando uma lista de expressões separadas por vírgulas entre dois colchetes. (Note que não há nenhuma regra especial necessária para criar listas de comprimento 0 ou 1.) O módulo array fornece um exemplo adicional de uma sequência mutável.
· Mapeamentos: Mapeamentos representam conjuntos finitos de objetos, indexados por índices arbitrários. A notação a[k] seleciona o item indexado por [k] do mapeamento a; isto pode ser usado em expressões e como o alvo de atribuições ou do comando del. A função interna len() retorna o número de itens num mapeamento. Atualmente há apenas um único mapeamento intrínseco a linguagem.
· Dicionários: Dicionários () representam conjuntos finitos de objetos, indexados por índices praticamente arbitrários. O único tipo de objeto inaceitável como chave são listas ou dicionários ou outros objetos mutáveis que são comparados pelo valor e não pela identidade. A razão para isso é que uma implementação eficiente de dicionários requer que o valor do hash da chave permaneça constante. Tipos numéricos usados para chaves obedecem as regras normais de comparação: se na comparação dois números são considerados iguais (por exemplo, 1 e 1.0) então qualquer um deles pode ser usado para indexar o mesmo valor em um dicionário. Dicionários são mutáveis; eles podem ser criados pela notação {...}.
(conteúdo retirado do endereço web "http\\www.python.org")

Foco da Linguagem

Existem muitas outras linguagens de programação. Porque aprender Python, qual o foco da linguagem? Python apresenta uma série de vantagens que a tornam atraente tanto para uso profissional quanto para aprendizagem de programação. Dentre as mais interessantes do ponto de vista didático, vamos focar nas seguintes características:

· Python é uma linguagem muito expressiva, ou seja, os programas são muito compactos, um programa em Python é geralmente muito menor que o seu equivalente em linguagens como C. (Python vem a ser considerada por muitos como uma linguagem de programação “em muito alto nível”.)

· Python é muito legível. A sintaxe do Python é muito elegante e permite escrever programas cuja leitura é muito mais fácil que usando outras linguagens de programação.

· Python fornece um ambiente interativo que facilita a realização de buscas de ajuda, para que se possa tirar dúvidas sobre determinadas características da línguagem.

· O ambiente de execução Python detecta muitos dos erros de programação que escapam do controle dos compiladores e fornece informações muito ricas para identifica-los e corrigi-los.

· Python pode ser usada como uma linguagem imperativa, procedimental ou linguagem orientada a objetos.

· Possui um rico conjunto de estruturas de dados que podem ser manipulados facilmente.
Essas características tornam relativamente fácil traduzir, problemas do nosso cotidiano para algoritmos e em seguida transforma-los em programas Python.

História

A história da Linguagem Python começou no final de 1989. Quando, Guido Van Rossum, pesquisador do Instituto Nacional de Investigação de Matemática e Ciências da Computação de Amsterdam (CWI), necessitou de uma linguagem de alto nível para realizar tarefas específicas junto com seu grupo de pesquisa da “Amoeba Sistemas Operacionais”. Para criar esta nova linguagem, ele baseou-se no código das linguagens ABC e Modula-3, no entanto, existia um grande problema com a linguagem ABC, que era a sua falta de capacidade de extensão, a língua não era aberta para melhorias ou ampliações. Assim, Van Rossum decidiu criar uma linguagem que combinasse muitos dos elementos que ele gostava em línguagens existentes, criando uma que poderia ser ampliada através de pesquisas sobre melhorias na programação. Ele batizou esta linguagem de Python, nome baseado no seriado inglês Monty Python’s Flying Circus. Desde o seu lançamento público no início de 1991, uma crescente comunidade de desenvolvedores em Python têm utilizado e melhorado seu código, hoje ela já é bem suportada em diversas plataformas.Python tem sido utilizado para desenvolver uma grande variedade de aplicações, como, desenvolvimento web, programas para controlar veículos, configuração de sistemas operacionais, desenvolvimento de jogos, animações para filmes, entre outras. Acredita-se que Python continuará a crescer e expandir-se para novas áreas da programação.