Anda di halaman 1dari 6

Uma breve abordagem sobre a linguagem Python

José Ricardo Mello Viana


Universidade Federal do Piauı́
Departamento de Informática e Estatı́stica
zezim.ricardo@ufpi.br

17 de junho de 2005

Resumo
Python é uma linguagem de programação interpretada, interativa, orientada a objetos
(ainda que suporte outros paradigmas, como a programação funcional) dinamicamente
tipada (tipos de variáveis, retornos de funções e parâmetros são identificados pelo inter-
pretador) embora fortemente tipada (Os valores e objetos têm tipos bem definidos e não
sofrem coerções como em linguagem C ou Perl).
No presente artigo serão mostradas as principais caracterı́sticas de Python, não com
a intenção de ser um tutorial, mas a fim de mostrar à pessoas que já tenham noções de
linguagens de programação como é a estrutura desta linguagem.

Palavras-chave: Linguagem de Script, Linguagem de Programação, Python.

Abstract
Python is a programming language interpreted, interactive, guided objects (still that it has
supported other paradigms, as the functional programming) dynamically typed (types of
variables, returns of functions and parameters are identified by the interpreter) even so
strong typed (the values and objects have well defined types and they do not suffer coercions
as in language C or Perl).
In present article will be shown the main characteristics of Python, not with the in-
tention of being a tutorial one, but in order to show to the people who already have slight
knowledge of programming languages as it is the structure of this language.

Keywords: Language of Script, Programming Language, Python.

0
1 Introdução
Python é uma linguagem de programação poderosa e de fácil aprendizado. Ela possui
estruturas de dados de alto-nı́vel eficientes, bem como adota uma abordagem simples e
efetiva para a programação orientada a objetos. Sua sintaxe elegante e tipagem dinâmica,
em adição a sua natureza interpretada, tornam Python ideal para scripting e para o
desenvolvimento rápido de aplicações em diversas áreas e na maioria das plataformas [5].
Python também oferece melhor verificação de erros do que C, e por ser uma linguagem
de alto nı́vel, ela possui tipos nativos de alto nı́vel: dicionários e vetores(arrays) flexı́veis
que lhe custariam dias para obter uma implementação eficiente em C [2]. Devido ao
suporte nativo a tipos genéricos, Python é aplicável a um domı́nio de problemas muito
mais vasto do que Awk ou até mesmo Perl, ainda assim Python é tão fácil de usar quanto
essas linguagens sob diversos aspectos [4].

2 Histórico e Paradigma
A linguagem Python foi desenvolvida pelo holandês Guido Van Rossun, em 1990, com o
objetivo inicial de suprir a falta de uma linguagem de script simples e eficiente para o sis-
tema operacional distribuı́do Amoeba, desenvolvido pela equipe de Andrew Tanenbaum.
A idéia de Van Rossum era criar uma evolução da linguagem ABC, de cuja criação havia
participado, que fosse atraente para programadores em C/Unix.
Foi concebida como uma linguagem totalmente orientada a objetos, mas sem impedir
que o usuário opte por programar ignorando este fato. Isso quer dizer, que internamente,
Python trata tudo como objetos, sejam strings, funções, listas ou números inteiros, mas
permite que sejam escritos programas sem a obrigatoriedade do uso de orientação a ob-
jetos.

3 Tipos em Phyton
Python possui tipagem dinâmica: o tipo ao qual a variável está associada pode variar
durante a execução do programa.Mas não quer dizer que não exista tipo especı́fico definido:
embora em Python não o declaremos explicitamente, as variáveis sempre assumem um
único tipo em um determinado momento.
Nomes de variáveis começam sempre com uma letra, não contém espaços, e assim
como tudo em Python, são sensı́veis a caixa (case-sensitive).

3.1 Tipos Simples


Python possui com tipos simples str (Strings), unicode (strs em que os caracteres po-
dem representar qualquer lı́ngua), bool (Booleano), float (Números em ponto flutuante),
int (Números inteiros), long (Números inteiros muito grandes), complex (Números com-
plexos), file (Arquivos), decimal (integrado ao Python 2.4 como módulo (Números fra-
cionários representados de forma decimal em vez de binária)).

1
3.2 Tipos Estruturados
Como tipos estruturados Python apresenta list (listas) um conjunto linear (como um vetor
em outras linguagens) de valores indexados por um número inteiro.
Temos também tuple (Tulpa) que é uma seqência, como a lista: armazena um conjunto
de elementos acessı́veis por um ı́ndice inteiro. Porm a tupla é imutável; uma vez criada,
não pode ser modificada.
Por fim o tipo dict (dicionário) que representa uma coleção de elementos onde é possı́vel
utilizar um ı́ndice de qualquer tipo imutável, ao contrário da lista, onde ı́ndices são sempre
inteiros seqencialmente atribuı́dos.

4 Estruturas de Controle
As estruturas de controle de Python são as mesmas tı́picas de outras linguagens, a saber:

4.1 Estrutura if
if x < 0:
print Menor que zero
elif x == 0:
print Zero
else:
print Maior que zero

Pode haver zero ou mais seções elif. A seção else é opcional. A palavra-chave elif e uma
abreviação para else if, e é útil para evitar identação excessiva. Uma sequência if... elif...
elif... substitui as construções switch e case encontradas em outras linguagens.

4.2 Estrutura for


A construção for em Python difere um pouco do que se está acostumado em C ou Pascal.
Ao invés de se iterar sobre progressões aritméticas (como em Pascal), ou de definir tanto
o passo da iteração quanto a condição de parada (como em C), o for de Python itera sobre
os itens de uma sequência na ordem em que aparecem na sequência. Por exemplo: a =
[gato, janela, defenestrar], for x in a.

4.3 Estrutura while


O laço while executa enquanto a condição permanecer verdadeira. Em Python, como em
C, qualquer valor inteiro não nulo é considerado verdadeiro (valor true), zero tem valor
false. Na verdade, qualquer coisa com comprimento não nulo tem valor true e sequências
vazias tem valor false. Os testes utilizados são comparações. Os operadores padrão para
comparação são os mesmos de C: < (menor que), > (maior que), == (igual), <= (menor
ou igual), >= (maior ou igual) and != (diferente).

2
4.4 Cláusulas break, continue e else em laços
O break, como no C, quebra o laço mais interno de um for ou while. O continue , também
emprestado do C, continua o próximo passo do laço mais interno. Laços podem ter uma
cláusula else, que é executada sempre que o laço se encerra por exaustão da lista (no caso
do for) ou quando a condição se torna falsa (no caso do while), mas nunca quando o laço
é encerrado por um break.

5 Manipulação de Execuções
Exceções são internamente geradas pelo interpretador Python quando situações excep-
cionais ocorrem. No exemplo: a = [1, 2, 3] print a[5], o código interno do interpretador
sabe que não podemos acessar uma lista através um ı́ndice não-existente, e gera uma
exceção.

5.1 Tratando exceções


A exceção normalmente imprime um traceback e interrompe a execução do programa.
Uma ação comum é testar e controlar a exceção; para este fim, usamos uma cláusula
try/except:

a = [1, 2, 3]
try:
print a[5]
except IndexError:
print "O vetor nao possui tantas posies!"

A instrução try captura exceções que ocorrerem no seu bloco de código; a linha except
determina quais tipos de exceção serão capturados.

6 Funções em Python
A palavra-reservada def serve para definir uma função. Ela deve ser seguida do nome da
função, da lista formal de parâmetros entre parênteses e dois pontos.
Referências a variáveis são buscadas primeiramente na tabela local, então na tabela
de sı́mbolos global e finalmente na tabela de sı́mbolos interna (built-in). Portanto, não
se pode atribuir diretamente um valor a uma variável global dentro de uma função (a
menos que se utilize a declaração global antes), ainda que variáveis globais possam ser
referenciadas livremente.
A palavra-chave return termina a função retornando um valor. Se return não for
seguido de nada, então retorna o valor None. Se a função chegar ao fim sem o uso
explı́cito do return, então também será retornado o valor None.

3
6.1 Passagem de Parâmetro
Os parâmetros reais (argumentos) de uma chamada de função são introduzidos na tabela
de sı́mbolos local da função chamada, portanto, argumentos são passados por valor (onde
valor é sempre uma referência para objeto, não o valor do objeto). Quando uma função
chama outra, uma nova tabela de sı́mbolos é criada para tal chamada.
De fato, passagem por referência para objeto seria uma melhor descrição, pois quando
um objeto mutável for passado, o chamador irá perceber as alterações feitas pelo chamado
(ex: inserção de itens em uma lista).

7 Escopo e Ambiente de Referência


Para falar em escopo em python, primeiramente é preciso entender o conceito de espaço
de nomes. Um espaço de nomes é um mapeamento entre nomes e objetos. Exemplos de
espaços de nomes são: o conjunto de nomes pré-definidos (funções como abs() e exceções),
nomes globais em módulos e nomes locais em uma função.
Espaços de nomes são criados em momentos diferentes e possuem diferentes longevi-
dades. O espaço de nomes que contém os nomes pré-definidos é criado quando o inter-
pretador inicializa e nunca é removido. O espaço de nomes global é criado quando uma
definição de módulo é lida, e normalmente duram até a saı́da do interpretador e assim
por diante.
Um escopo é uma região textual de um programa Python onde um espaço de nomes
é diretamente acessı́vel. Onde diretamente acessı́vel significa que uma referência sem
qualificador especial permite o acesso ao nome. Ainda que escopos sejam determinados
estaticamente, eles são usados dinamicamente.

8 Suporte à O.O.
Python suporta orientação a objetos utilizando um modelo flexı́vel e particularmente ho-
mogêneo, que simplifica a compreensão dos mecanismos O.O. fundamentais da linguagem.
Objetos são a unidade fundamental de qualquer sistema orientado a objetos. Em
Python tudo é um objeto - tipos, valores, classes, funções, métodos e, é claro, instâncias:
todos possuem atributos e métodos associados.As estruturas da linguagem para suportar
objetos definidos pelo programador são classes e intâncias.

9 Carta Sintática
Python usa a indentaçãoo para expressar estruturas de blocos. Ao contrário de outras
linguagens, não faz uso de delimitadores, como chaves e begin/end, mas somente espaços
em brancos. São utilizados os tokens INDENT e DEDENT, e uma pilha.
A seguir será apresentada parte da BNF da linguagem Python (a BNF completa
encontra-se em [3]):

4
return_stmt ::= "return" [expression_list] yield_stmt ::= "yield"
compound_stmt ::= if_stmt
| while_stmt
| for_stmt
| try_stmt
| funcdef
| classdef
suite ::= stmt_list NEWLINE
| NEWLINE INDENT statement+ DEDENT
statement ::= stmt_list NEWLINE | compound_stmt stmt_list ::=
simple_stmt (";" simple_stmt)* [";"]
if_stmt ::= "if" expression ":" suite
( "elif" expression ":" suite )*
["else" ":" suite]
while_stmt ::= "while" expression ":" suite
["else" ":" suite]
for_stmt ::= "for" target_list "in" expression_list
":" suite
["else" ":" suite]

10 Conclusões
Isto posto, conclui-se que a linguagem Python é uma linguagem clara e fácil de aprender;
o código produzido é normalmente curto e legı́vel. Os tipos pré-definidos incluı́dos em
Python são poderosos, e ainda assim simples de usar. A linguagem possui um interpreta-
dor de comandos interativo que permite aprender e testar rapidamente trechos de código.
Python é expressivo, com abstrações de alto nı́vel.
Na grande maioria dos casos, um programa em Python será muito mais curto que
seu correspondente escrito em outra linguagem. Isto também faz com o ciclo de desen-
volvimento seja rápido e apresente potencial de defeitos reduzido - menos código, menos
oportunidade para errar.

Referências
[1] SEBESTA, Robert W. Conceitos de Linguagens de Programao. 4 edição. Editora
Bookman. 1999.
[2] Página Oficial da Linguagem. Disponı́vel por www em http://www.python.org,
(17/06/05).
[3] BNF da Linguagem Python. Disponı́vel por www em
http://www.python.org/doc/current/ref/grammar.txt, (17/06/05).
[4] Python Brasil. Disponı́vel por www em http://www.pythonbrasil.com.br/,
(17/06/05).
[5] Python na Prática - Um Curso Objetivo de Programação em Python. Disponı́vel
por www em http://www.async.com.br/projects/python/pnp/, (17/06/05).

Anda mungkin juga menyukai