Escolar Documentos
Profissional Documentos
Cultura Documentos
A função de impressão
A mudança mais notável e mais amplamente conhecida no Python 3 é como a função
de impressão é usada. O uso de parênteses () com função de impressão agora é
obrigatório. Foi opcional no Python 2.
A função print () insere uma nova linha no final, por padrão. No Python 2, ele pode ser
suprimido colocando ',' no final. No Python 3, "end = ''" acrescenta espaço ao invés de
nova linha.
In Python 2
>>> x = input('something:')
something:10 #entered data is treated as number
>>> x
10
>>> x = input('something:')
something:'10' #entered data is treated as string
>>> x
'10'
>>> x = raw_input("something:")
something:10 #entered data is treated as string even without ''
>>> x
'10'
>>> x = raw_input("something:")
something:'10' #entered data treated as string including ''
>>> x
"'10'"
In Python 3
>>> x = input("something:")
something:10
>>> x
'10'
>>> x = input("something:")
something:'10' #entered data treated as string with or without ''
>>> x
"'10'"
Divisão Integer
No Python 2, o resultado da divisão de dois inteiros é arredondado para o inteiro mais
próximo. Como resultado, 3/2 mostrará 1. Para obter uma divisão de ponto flutuante, o
numerador ou denominador deve ser explicitamente usado como float. Assim, 3.0 / 2
ou 3 / 2.0 ou 3.0 / 2.0 resultará em 1.5
O Python 3 avalia 3/2 como 1.5 por padrão, o que é mais intuitivo para novos
programadores.
Representação Unicode
O Python 2 requer que você marque uma string com au se quiser armazená-la como
Unicode.
O Python 3 armazena strings como Unicode, por padrão. Temos cadeias de caracteres
Unicode (utf-8) e classes de 2 bytes: matrizes de bytes e bytes.
No Python 3, a função range () é removida e xrange () foi renomeado como range ().
Além disso, o objeto range () suporta o fatiamento no Python 3.2 e posterior.
levantar exceção
O Python 2 aceita as duas notações, a sintaxe "antiga" e a "nova"; O Python 3 gera um
SyntaxError se não colocarmos o argumento de exceção entre parênteses.
Argumentos em exceções
No Python 3, os argumentos para exceção devem ser declarados com a palavra-chave
'as'.
Utilitário 2to3
Juntamente com o interpretador Python 3, o script 2to3.py geralmente é instalado na
pasta tools / scripts. Ele lê o código-fonte do Python 2.xe aplica uma série de fixadores
para transformá-lo em um código válido do Python 3.x.
$2to3 -w area.py
Converted code :
a = area(10)
print("area",a)
História do Python
Python foi desenvolvido por Guido van Rossum no final dos anos oitenta e início dos
anos noventa no Instituto Nacional de Pesquisa de Matemática e Ciência da
Computação na Holanda.
O Python 1.0 foi lançado em novembro de 1994. Em 2000, o Python 2.0 foi
lançado. O Python 2.7.11 é a última edição do Python 2.
Recursos do Python
Os recursos do Python incluem -
Fácil de ler - o código Python é mais claramente definido e visível aos olhos.
Modo Interativo - Python tem suporte para um modo interativo que permite
testes interativos e depuração de trechos de código.
Programação de GUI - Python suporta aplicativos GUI que podem ser criados
e portados para muitas chamadas de sistema, bibliotecas e sistemas Windows,
como o Windows MFC, Macintosh e o sistema X Window do Unix.
Além dos recursos mencionados acima, o Python tem uma lista grande de bons
recursos. Alguns estão listados abaixo -
Suporta métodos de programação funcional e estruturada, bem como OOP.
Ele pode ser usado como uma linguagem de script ou pode ser compilado para
codificar byte para criar aplicativos grandes.
Pode ser facilmente integrado com C, C ++, COM, ActiveX, CORBA e Java.
Obtendo Python
Plataforma Windows
Binários da versão mais recente do Python 3 (Python 3.5.1) estão disponíveis nesta
página de download
Nota - Para instalar o Python 3.5.1, os requisitos mínimos do SO são o Windows 7 com
SP1. Para as versões 3.0 a 3.4.x, o Windows XP é aceitável.
Plataforma Linux
Tipos diferentes de Linux usam gerenciadores de pacotes diferentes para a instalação
de novos pacotes.
Mac OS
Baixe os instaladores do Mac OS a partir desta URL -
https://www.python.org/downloads/mac-osx/
Clique duas vezes neste arquivo de pacote e siga as instruções do assistente para
instalar.
O código fonte mais atualizado e atual, binários, documentação, notícias, etc., estão
disponíveis no site oficial do Python -
Configurando o PATH
Programas e outros arquivos executáveis podem estar em vários diretórios. Portanto, os
sistemas operacionais fornecem um caminho de pesquisa que lista os diretórios que ele
procura por executáveis.
No shell csh - digite setenv PATH "$ PATH: / usr / local / bin / python3" e
pressione Enter.
No shell sh ou ksh - digite PATH = "$ PATH: / usr / local / bin / python3" e
pressione Enter.
PYTHONPATH
PYTHONSTARTUP
3 PYTHONCASEOK
Ele é usado no Windows para instruir o Python a encontrar a primeira
correspondência insensível a maiúsculas e minúsculas em uma instrução de
importação. Defina esta variável para qualquer valor para ativá-lo.
PITÔNOME
Executando Python
Existem três maneiras diferentes de iniciar o Python -
Interpretador Interativo
Você pode iniciar o Python a partir do Unix, do DOS ou de qualquer outro sistema que
forneça um interpretador de linha de comando ou uma janela de shell.
$python # Unix/Linux
or
python% # Unix/Linux
or
C:>python # Windows/DOS
-d
1
fornecer saída de depuração
-O
2
gerar bytecode otimizado (resultando em arquivos .pyo)
-S
4 -v
-c cmd
6
executar script Python enviado como string cmd
Arquivo
7
execute o script Python de um determinado arquivo
Se você não for capaz de configurar o ambiente adequadamente, você pode obter ajuda
do administrador do sistema. Certifique-se de que o ambiente Python esteja
configurado corretamente e funcionando perfeitamente bem.
Nota - Todos os exemplos dados nos capítulos subseqüentes são executados com a
versão Python 3.4.1 disponível no Windows 7 e no Ubuntu Linux.
$ python
On Windows:
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
Se você estiver executando a versão mais antiga do Python (Python 2.x), o uso de
parênteses como função inprint é opcional. Isso produz o seguinte resultado -
Hello, Python!
Assumimos que você tenha o interpretador Python definido na variável PATH . Agora,
tente executar este programa da seguinte maneira -
No linux
$ python test.py
No Windows
C:\Python34>Python test.py
Olá, Python!
Vamos tentar outra maneira de executar um script Python no Linux. Aqui está o arquivo
test.py modificado -
Demonstração ao vivo
#!/usr/bin/python3
print ("Hello, Python!")
Nós assumimos que você tem o interpretador Python disponível no diretório / usr / bin.
Agora, tente executar este programa da seguinte maneira -
Hello, Python!
Identificadores Python
Um identificador Python é um nome usado para identificar uma variável, função, classe,
módulo ou outro objeto. Um identificador começa com uma letra A a Z ou a a z ou um
sublinhado (_) seguido por zero ou mais letras, sublinhados e dígitos (0 a 9).
Palavras reservadas
A lista a seguir mostra as palavras-chave do Python. Estas são palavras reservadas e
você não pode usá-las como constantes ou variáveis ou quaisquer outros nomes de
identificadores. Todas as palavras-chave do Python contêm apenas letras minúsculas.
e exec não
Como finalmente ou
pausa de impressão
continuar E se Retorna
del em enquanto
elif é com
exceto
Linhas e Indentação
O Python não usa chaves ({}) para indicar blocos de código para definições de classe e
função ou controle de fluxo. Blocos de código são denotados por indentação de linha,
que é rigidamente aplicada.
if True:
print ("True")
else:
print ("False")
if True:
print ("Answer")
print ("True")
else:
print "(Answer")
print ("False")
#!/usr/bin/python3
import sys
try:
# open file stream
file = open(file_name, "w")
except IOError:
print ("There was an error writing to", file_name)
sys.exit()
print ("Enter '", file_finish,)
print "' When finished"
while file_text != file_finish:
file_text = raw_input("Enter text: ")
if file_text == file_finish:
# close the file
file.close
break
file.write(file_text)
file.write("\n")
file.close()
file_name = input("Enter filename: ")
if len(file_name) == 0:
print ("Next time please enter something")
sys.exit()
try:
file = open(file_name, "r")
except IOError:
print ("There was an error reading file")
sys.exit()
file_text = file.read()
file.close()
print (file_text)
total = item_one + \
item_two + \
item_three
Cotação em Python
O Python aceita aspas simples ('), double (") e tripla (' '' ou" "") para indicar literais de
string, desde que o mesmo tipo de aspas inicie e termine a string.
As aspas triplas são usadas para dividir a string em várias linhas. Por exemplo, todos os
itens a seguir são legais -
word = 'word'
sentence = "This is a sentence."
paragraph = """This is a paragraph. It is
made up of multiple lines and sentences."""
Comentários em Python
Um sinal de hash (#) que não está dentro de uma string literal é o começo de um
comentário. Todos os caracteres após o #, até o final da linha física, fazem parte do
comentário e o interpretador Python os ignora.
Demonstração ao vivo
#!/usr/bin/python3
# First comment
print ("Hello, Python!") # second comment
Hello, Python!
O Python não possui recurso de comentários de várias linhas. Você tem que comentar
cada linha individualmente da seguinte maneira -
# This is a comment.
# This is a comment, too.
# This is a comment, too.
# I said that already.
Em uma sessão de intérprete interativa, você deve inserir uma linha física vazia para
finalizar uma instrução de múltiplas linhas.
Aqui, "\ n \ n" é usado para criar duas novas linhas antes de exibir a linha atual.
Quando o usuário pressiona a tecla, o programa termina. Este é um bom truque para
manter uma janela do console aberta até que o usuário termine com um aplicativo.
if expression :
suite
elif expression :
suite
else :
suite
$ python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-c cmd : program passed in as string (terminates option list)
-d : debug output from parser (also PYTHONDEBUG=x)
-E : ignore environment variables (such as PYTHONPATH)
-h : print this help message and exit
[ etc. ]
Você também pode programar seu script de maneira que ele deva aceitar várias
opções. Argumentos de linha de comando é um tópico avançado. Vamos entender
isso.
Python 3 - Tipos Variáveis
Variáveis não são nada além de locais de memória reservados para armazenar valores.
Isso significa que quando você cria uma variável, você reserva algum espaço na
memória.
Com base no tipo de dados de uma variável, o intérprete aloca memória e decide o que
pode ser armazenado na memória reservada. Portanto, atribuindo diferentes tipos de
dados às variáveis, você pode armazenar números inteiros, decimais ou caracteres
nessas variáveis.
print (counter)
print (miles)
print (name)
Aqui, 100, 1000.0 e "John" são os valores atribuídos às variáveis counter, miles e name,
respectivamente. Isso produz o seguinte resultado -
100
1000.0
John
Atribuição Múltipla
O Python permite que você atribua um único valor a várias variáveis simultaneamente.
Por exemplo -
a = b = c = 1
Aqui, um objeto inteiro é criado com o valor 1 e todas as três variáveis são atribuídas
ao mesmo local de memória. Você também pode atribuir vários objetos a várias
variáveis. Por exemplo -
a, b, c = 1, 2, "john"
Aqui, dois objetos inteiros com valores 1 e 2 são atribuídos às variáveis aeb,
respectivamente, e um objeto de string com o valor "john" é atribuído à variável c.
Números
Corda
Lista
Tuple
Dicionário
Números Python
Tipos de dados numéricos armazenam valores numéricos. Objetos numéricos são
criados quando você atribui um valor a eles. Por exemplo -
var1 = 1
var2 = 10
Você também pode excluir a referência a um objeto numérico usando a instrução del .
A sintaxe da instrução del é -
del var1[,var2[,var3[....,varN]]]]
Você pode excluir um único objeto ou vários objetos usando a instrução del .
Por exemplo -
del var
del var_a, var_b
Todos os inteiros no Python3 são representados como inteiros longos. Portanto, não há
nenhum tipo de número separado por tanto tempo.
Exemplos
Aqui estão alguns exemplos de números -
10 0,0 3,14 j
Cordas Python
Strings em Python são identificadas como um conjunto contíguo de caracteres
representados nas aspas. O Python permite um par de aspas simples ou duplas.
Subconjuntos de strings podem ser obtidos usando o operador slice ([] e [:]) com
índices começando em 0 no começo da string e indo de -1 até o final.
Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST
Listas de Python
As listas são as mais versáteis dos tipos de dados compostos do Python. Uma lista
contém itens separados por vírgulas e entre colchetes ([]). Até certo ponto, as listas
são semelhantes às matrizes em C. Uma das diferenças entre elas é que todos os itens
pertencentes a uma lista podem ser de tipos de dados diferentes.
Os valores armazenados em uma lista podem ser acessados usando o operador de fatia
([] e [:]) com índices começando em 0 no começo da lista e indo até o final de -1. O
sinal de mais (+) é o operador de concatenação de lista e o asterisco (*) é o operador
de repetição. Por exemplo -
Demonstração ao vivo
#!/usr/bin/python3
Tuplas Python
Uma tupla é outro tipo de dados de sequência que é semelhante à lista. Uma tupla
consiste em vários valores separados por vírgulas. Diferentemente das listas, no
entanto, as tuplas são colocadas entre parênteses.
A principal diferença entre listas e tuplas são - As listas são colocadas entre colchetes
([]) e seus elementos e tamanhos podem ser alterados, enquanto as tuplas são
colocadas entre parênteses (()) e não podem ser atualizadas. As tuplas podem ser
consideradas como listas somente leitura . Por exemplo -
Demonstração ao vivo
#!/usr/bin/python3
O código a seguir é inválido com a tupla, porque tentamos atualizar uma tupla, o que
não é permitido. Caso semelhante é possível com listas -
#!/usr/bin/python3
Dicionário Python
Os dicionários do Python são do tipo hash-table. Eles funcionam como matrizes
associativas ou hashes encontrados em Perl e consistem em pares de valores-chave.
Uma chave de dicionário pode ser quase qualquer tipo de Python, mas geralmente são
números ou cadeias de caracteres. Valores, por outro lado, podem ser qualquer objeto
Python arbitrário.
Os dicionários são colocados entre chaves ({}) e os valores podem ser atribuídos e
acessados usando colchetes ([]). Por exemplo -
Demonstração ao vivo
#!/usr/bin/python3
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
This is one
This is two
{'name': 'john', 'dept': 'sales', 'code': 6734}
dict_keys(['name', 'dept', 'code'])
dict_values(['john', 'sales', 6734])
Os dicionários não têm conceito de ordem entre os elementos. É incorreto dizer que os
elementos estão "fora de ordem"; eles são simplesmente desordenados.
Conversão de tipo de dados
Às vezes, você pode precisar realizar conversões entre os tipos internos. Para converter
entre tipos, você simplesmente usa os nomes dos tipos como uma função.
Existem várias funções internas para executar a conversão de um tipo de dados para
outro. Essas funções retornam um novo objeto representando o valor convertido.
int (x [, base])
1
Converte x para um inteiro. A base especifica a base, se x for uma string.
flutuante (x)
2
Converte x em um número de ponto flutuante.
str (x)
4
Converte o objeto x em uma representação de string.
repr (x)
5
Converte o objeto x em uma string de expressão.
eval (str)
6
Avalia uma string e retorna um objeto.
tupla (s)
7
Converte s em uma tupla.
lista (s)
8
Converte s em uma lista.
conjunto (s)
9
Converte s para um conjunto.
ditto (d)
10
Cria um dicionário. d deve ser uma sequência de tuplas (chave, valor).
11 frozenset (s)
chr (x)
12
Converte um inteiro em um caractere.
unichr (x)
13
Converte um inteiro em um caractere Unicode.
ord (x)
14
Converte um único caractere em seu valor inteiro.
hex (x)
15
Converte um inteiro em uma string hexadecimal.
oct (x)
16
Converte um inteiro em uma string octal.
Tipos de Operador
A linguagem Python suporta os seguintes tipos de operadores -
Operadores aritméticos
Operadores de atribuição
Operadores lógicos
Operadores de Associação
Operadores de Identidade
Mostrar exemplo
Suponha que a variável a detenha o valor 10 e a variável b mantenha o valor 20, então
-
Mostrar exemplo
Mostrar exemplo
a = 0011 1100
b = 0000 1101
-----------------
a | b = 0011 1101
a ^ b = 0011 0001
~ a = 1100 0011
A função bin () do Python pode ser usada para obter representação binária de um
número inteiro.
Mostrar exemplo
Mostrar exemplo
Mostrar exemplo
Avalia para true se não encontrar uma x não em y, aqui não resulta
não em variável na sequência especificada e em 1 se x não é um membro
false caso contrário. da sequência y.
Mostrar exemplo
Operador Descrição Exemplo
Mostrar exemplo
**
1
Exponenciação (aumentar ao poder)
~+-
2 Complemento, unário mais e menos (os nomes dos métodos para os dois
últimos são + @ e - @)
* /% //
3
Multiplicar, dividir, módulo e divisão de piso
+-
4
Adição e subtração
>> <<
5
Deslocamento bit a bit à direita e à esquerda
E
6
Bitwise 'AND'
^|
7
Exclusivo de bits 'OR' e 'OR' regular
8 <= <>> =
Operadores de comparação
<> ==!
9
Operadores de igualdade
=% = / = // = - = + = * = ** =
10
Operadores de atribuição
é não é
11
Operadores de identidade
em não em
12
Operadores de associação
não ou e
13
Operadores lógicos
A seguir está a forma geral de uma estrutura de tomada de decisão típica encontrada
na maioria das linguagens de programação -
A linguagem de programação Python assume qualquer valor diferente de zero e não
nulo como TRUE e qualquer valor zero ou nulo como valor FALSE.
se declarações
2 Uma instrução if pode ser seguida por uma instrução else opcional , que é
executada quando a expressão booleana é FALSE.
aninhado se instruções
Exemplo
Aqui está um exemplo de uma cláusula if de uma linha
Demonstração ao vivo
#!/usr/bin/python3
var = 100
if ( var == 100 ) : print ("Value of expression is 100")
print ("Good bye!")
Saída
Quando o código acima é executado, produz o seguinte resultado -
Python 3 - Loops
Em geral, as instruções são executadas seqüencialmente - a primeira instrução em uma
função é executada primeiro, seguida pela segunda e assim por diante. Pode haver uma
situação em que você precise executar um bloco de código várias vezes.
Uma instrução de loop nos permite executar uma instrução ou grupo de instruções
várias vezes. O diagrama a seguir ilustra uma instrução de loop -
A linguagem de programação Python fornece os seguintes tipos de loops para lidar com
os requisitos de loop.
1 enquanto loop
Repete uma instrução ou grupo de instruções enquanto uma determinada
condição é VERDADEIRA. Ele testa a condição antes de executar o corpo do
loop.
para loop
loops aninhados
3 Você pode usar um ou mais loop dentro de qualquer outro enquanto, ou para
loop.
declaração de quebra
continuar instrução
2 Faz com que o loop pule o restante de seu corpo e repita imediatamente sua
condição antes de reiterar.
passar declaração
A instrução de transmissão no Python é usada quando uma instrução é
3 requerida sintaticamente, mas você não deseja que nenhum comando ou
código seja executado.
Iterador e Gerador
O iterador é um objeto que permite a um programador percorrer todos os elementos
de uma coleção, independentemente de sua implementação específica. No Python, um
objeto iterador implementa dois métodos, iter () e next () .
Objetos String, List ou Tuple podem ser usados para criar um Iterator.
list = [1,2,3,4]
it = iter(list) # this builds an iterator object
print (next(it)) #prints next available element in iterator
Iterator object can be traversed using regular for statement
!usr/bin/python3
for x in it:
print (x, end=" ")
or using next() function
while True:
try:
print (next(it))
except StopIteration:
sys.exit() #you have to import sys module for this
Um gerador é uma função que produz ou produz uma seqüência de valores usando o
método yield.
Quando uma função geradora é chamada, ela retorna um objeto gerador sem iniciar a
execução da função. Quando o método next () é chamado pela primeira vez, a função
começa a executar até atingir a instrução yield, que retorna o valor obtido. O
rendimento mantém o controle, isto é, lembra a última execução e a segunda chamada
seguinte () continua do valor anterior.
Exemplo
O exemplo a seguir define um gerador, que gera um iterador para todos os números de
Fibonacci.
#!usr/bin/python3
import sys
def fibonacci(n): #generator function
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(5) #f is iterator object
while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()
Python 3 - Números
Tipos de dados numéricos armazenam valores numéricos. Eles são tipos de dados
imutáveis. Isso significa que alterar o valor de um tipo de dados numérico resulta em
um objeto recém-alocado.
Objetos numéricos são criados quando você atribui um valor a eles. Por exemplo -
var1 = 1
var2 = 10
Você também pode excluir a referência a um objeto numérico usando a instrução del .
A sintaxe da instrução del é -
del var1[,var2[,var3[....,varN]]]]
Você pode excluir um único objeto ou vários objetos usando a instrução del . Por
exemplo -
del var
del var_a, var_b
Exemplos
Aqui estão alguns exemplos de números.
10 0,0 3,14 j
Digite complex (x) para converter x em um número complexo com parte real x
e parte zero imaginária.
Funções Matemáticas
O Python inclui as seguintes funções que executam cálculos matemáticos.
abs (x)
1 O valor absoluto de x: a distância (positiva) entre x e zero.
ceil (x)
2 O teto de x: o menor inteiro não menor que x.
cmp (x, y)
exp (x)
4 x
O exponencial de x: e
5 fabs (x)
O valor absoluto de x.
andar (x)
6 O piso de x: o maior número inteiro não maior que x.
log (x)
7 O logaritmo natural de x, para x> 0.
log10 (x)
8 O logaritmo de base 10 de x para x> 0.
modf (x)
pow (x, y)
12 O valor de x ** y.
round (x [, n])
x arredondado para n dígitos do ponto decimal. O Python arredonda para
13 longe de zero como um desempatador: round (0.5) é 1.0 e round (-0.5) é
-1.0.
sqrt (x)
14 A raiz quadrada de x para x> 0.
escolha (seq)
1 Um item aleatório de uma lista, tupla ou string.
semente ([x])
Define o valor inicial do inteiro usado na geração de números aleatórios.
4 Chame essa função antes de chamar qualquer outra função de módulo
aleatório. Retorna Nenhum.
shuffle (lst)
5 Randomiza os itens de uma lista no lugar. Retorna Nenhum.
uniforme (x, y)
6 Um float aleatório r, tal que x é menor que ou igual a r e r é menor que y.
Funções trigonométricas
O Python inclui as seguintes funções que executam cálculos trigonométricos.
acos (x)
1 Retorna o arco cosseno de x, em radianos.
asin (x)
2 Retorne o arco seno de x, em radianos.
atan (x)
3 Retorna o arco tangente de x, em radianos.
atan2 (y, x)
4 Retorna atan (y / x), em radianos.
cos (x)
5 Retorna o cosseno de x radianos.
hipotago (x, y)
6 Retornar a norma euclidiana, sqrt (x * x + y * y).
sin (x)
7 Retorne o seno de x radianos.
bronzeado (x)
8 Retorna a tangente de x radianos.
9 graus (x)
Converte o ângulo x de radianos para graus.
radianos (x)
10 Converte o ângulo x de graus para radianos.
Constantes matemáticas
O módulo também define duas constantes matemáticas -
pi
1
A constante matemática pi.
e
2
A constante matemática e.
Python 3 - Cordas
Strings estão entre os tipos mais populares em Python. Podemos criá-los simplesmente
colocando caracteres entre aspas. O Python trata aspas simples da mesma forma que
as aspas duplas. Criar strings é tão simples quanto atribuir um valor a uma variável.
Por exemplo -
Para acessar substrings, use os colchetes para fatiar junto com o índice ou índices para
obter sua substring. Por exemplo -
Demonstração ao vivo
#!/usr/bin/python3
Atualizando Strings
Você pode "atualizar" uma string existente (re) atribuindo uma variável a outra string.
O novo valor pode ser relacionado ao seu valor anterior ou a uma string completamente
diferente. Por exemplo -
Demonstração ao vivo
#!/usr/bin/python3
Personagens de fuga
A tabela a seguir é uma lista de caracteres de escape ou não imprimíveis que podem
ser representados com notação de barra invertida.
\b 0x08 Backspace
\ cx Controle-x
\ Cx Controle-x
\e 0x1b Escapar
\f 0x0c Formfeed
\ M- \ Cx Meta-Control-x
\s 0x20 Espaço
\t 0x09 Aba
\v 0x0b Guia vertical
\x Personagem x
a + b vai
+ Concatenação - Adiciona valores em ambos os lados do operador dar
HelloPython
a * 2 vai
Repetição - Cria novas strings, concatenando várias cópias da
* dar -
mesma string
HelloHello
um [1] vai
[] Fatia - Dá o caractere do índice fornecido
dar e
a [1: 4]
[:] Faixa de alcance - fornece os caracteres do intervalo especificado
dará ell
Raw String - Suprime o significado real dos caracteres Escape. A print r '\ n'
sintaxe para strings não processadas é exatamente a mesma que
imprime \ n
para strings normais, com exceção do operador de string raw, a
r/R e imprime
letra "r", que precede as aspas. O "r" pode ser minúscula (r) ou
maiúscula (R) e deve ser colocado imediatamente antes da R '\ n'prints
primeira marca de aspas. \n
Veja na
% Formato - Executa a formatação de String próxima
seção
Aqui está a lista de conjuntos completos de símbolos que podem ser usados junto
com% -
%c
1
personagem
%s
2
conversão de strings via str () antes da formatação
%Eu
3
inteiro decimal assinado
%d
4
inteiro decimal assinado
%você
5
inteiro decimal sem sinal
%o
6
inteiro octal
%x
7
inteiro hexadecimal (letras minúsculas)
%X
8
inteiro hexadecimal (letras maiúsculas)
9 %e
notação exponencial (com minúscula 'e')
%E
10
notação exponencial (com UPPERcase 'E')
%f
11
número real de ponto flutuante
%g
12
o menor de% f e% e
%G
13
o menor de% f e% E
*
1
argumento especifica largura ou precisão
-
2
justificação à esquerda
+
3
exibir o sinal
<sp>
4
deixar um espaço em branco antes de um número positivo
0
6
pad da esquerda com zeros (em vez de espaços)
7 %
'%%' deixa você com um único literal '%'
(var)
8
variável de mapeamento (argumentos do dicionário)
mn
Citações triplas
As citações triplas do Python vêm ao salvamento, permitindo que as strings abranjam
várias linhas, incluindo NEWLINEs verbais, TABs e quaisquer outros caracteres
especiais.
A sintaxe para aspas triplas consiste em três aspas simples ou duplas consecutivas .
Demonstração ao vivo
#!/usr/bin/python3
Quando o código acima é executado, produz o seguinte resultado. Observe como cada
caractere especial foi convertido em sua forma impressa, até a última NEWLINE no final
da string entre o "up". e fechando aspas triplas. Observe também que NEWLINEs
ocorrem com um retorno de carro explícito no final de uma linha ou com seu código de
escape (\ n) -
As strings raw não tratam a barra invertida como um caractere especial. Cada caractere
que você coloca em uma string permanece do jeito que você escreveu
Demonstração ao vivo
#!/usr/bin/python3
print ('C:\\nowhere')
Quando o código acima é executado, produz o seguinte resultado -
C:\nowhere
Agora vamos fazer uso de string raw. Nós colocaríamos expressão na expressão "da
seguinte forma -
Demonstração ao vivo
#!/usr/bin/python3
print (r'C:\\nowhere')
C:\\nowhere
String Unicode
No Python 3, todas as strings são representadas em Unicode. O Python 2 é armazenado
internamente como ASCII de 8 bits, portanto, é necessário anexar 'u' para torná-lo
Unicode. Não é mais necessário agora.
capitalizar()
1 Capitaliza a primeira letra da string
2 Retorna uma string preenchida com fillchar com a string original centralizada
em um total de colunas de largura .
expandtabs (tabsize = 8)
isalnum ()
isalfa ()
isdigit ()
12 Retorna true se string contiver apenas dígitos e false caso contrário.
é inferior()
isnumeric ()
isspace ()
istitle ()
17 isupper ()
Retorna true se string tiver pelo menos um caractere em maiúsculas e todos
os caracteres em maiúsculas estiverem em maiúsculas e false em outro caso.
junte-se (seq)
len (string)
19 Retorna o comprimento da string
mais baixo()
21 Converte todas as letras maiúsculas em string para minúsculas.
lstrip ()
22 Remove todos os principais espaços em branco em string.
maketrans ()
23 Retorna uma tabela de conversão a ser usada na função translate.
max (str)
24 Retorna o caractere alfabético máximo da string str.
min (str)
25 Retorna o caractere alfabético min da string str.
29 Retorna uma string preenchida com espaço com a string original justificada à
direita para um total de colunas de largura.
30 rstrip ()
Remove todos os espaços em branco finais da string.
32 Divide a string em todos os (ou num) NEWLINEs e retorna uma lista de cada
linha com NEWLINEs removidos.
tira ([chars])
34 Executa tanto lstrip () quanto rstrip () na string
swapcase ()
35 Inverte o caso de todas as letras em string.
título()
superior()
38 Converte letras minúsculas em string para maiúsculas.
zfill (largura)
Retorna a string original da esquerda com zeros para um total de caracteres
39 de largura; destinado a números, zfill () retém qualquer sinal dado (menos um
zero).
isdecimal ()
Python 3 - Listas
A estrutura de dados mais básica do Python é a sequência . Cada elemento de uma
sequência recebe um número - sua posição ou índice. O primeiro índice é zero, o
segundo índice é um e assim por diante.
O Python tem seis tipos de sequências, mas os mais comuns são listas e tuplas, que
veríamos neste tutorial.
Há certas coisas que você pode fazer com todos os tipos de sequência. Essas operações
incluem indexação, fatiamento, adição, multiplicação e verificação de associação. Além
disso, o Python possui funções internas para encontrar o tamanho de uma sequência e
para encontrar seus maiores e menores elementos.
Listas de Python
A lista é o tipo de dados mais versátil disponível no Python, que pode ser escrito como
uma lista de valores separados por vírgula (itens) entre colchetes. O importante sobre
uma lista é que os itens em uma lista não precisam ser do mesmo tipo.
Criar uma lista é tão simples quanto colocar diferentes valores separados por vírgulas
entre colchetes. Por exemplo -
list1[0]: physics
list2[1:5]: [2, 3, 4, 5]
Atualizando Listas
Você pode atualizar um ou vários elementos de listas, dando a fatia no lado esquerdo
do operador de atribuição, e você pode adicionar a elementos em uma lista com o
método append (). Por exemplo -
#!/usr/bin/python3 Demonstração ao vivo
list[2] = 2001
print ("New value available at index 2 : ", list[2])
del list[2]
print ("After deleting value at index 2 : ", list)
len (lista)
2 Dá o comprimento total da lista.
max (lista)
3 Retorna o item da lista com o valor máximo.
min (lista)
4 Retorna o item da lista com o valor mínimo.
lista (seq)
5 Converte uma tupla na lista.
1 list.append (obj)
Acrescenta objeto obj a listar
list.count (obj)
2 Retorna a contagem de quantas vezes obj ocorre na lista
list.extend (seq)
3 Acrescenta o conteúdo de seq a lista
list.index (obj)
4 Retorna o índice mais baixo na lista que obj aparece
list.remove (obj)
7 Remove objeto obj da lista
list.reverse ()
8 Inverte os objetos da lista no lugar
list.sort ([func])
9 Classifica objetos da lista, use compare func se for dado
Python 3 - Tuplas
Uma tupla é uma sequência de objetos Python imutáveis. Tuplas são seqüências, assim
como listas. A principal diferença entre as tuplas e as listas é que as tuplas não podem
ser alteradas ao contrário das listas. As tuplas usam parênteses, enquanto as listas
usam colchetes.
Criar uma tupla é tão simples quanto colocar diferentes valores separados por vírgulas.
Opcionalmente, você pode colocar esses valores separados por vírgula entre parênteses
também. Por exemplo -
tup1 = ();
Para escrever uma tupla contendo um único valor, você deve incluir uma vírgula,
mesmo que haja apenas um valor -
tup1 = (50,)
tup1[0]: physics
tup2[1:5]: (2, 3, 4, 5)
Atualizando tuplas
Tuplas são imutáveis, o que significa que você não pode atualizar ou alterar os valores
dos elementos da tupla. Você pode pegar partes das tuplas existentes para criar novas
tuplas, como demonstra o exemplo a seguir -
Demonstração ao vivo
#!/usr/bin/python3
Para remover explicitamente uma tupla inteira, basta usar a instrução del . Por
exemplo -
#!/usr/bin/python3
print (tup)
del tup;
print ("After deleting tup : ")
print (tup)
Nota - Uma exceção é levantada. Isso ocorre porque, depois do lançamento , a tupla
não existe mais.
len (tuple)
2 Dá o comprimento total da tupla.
max (tupla)
3 Retorna o item da tupla com o valor máximo.
min (tupla)
4 Retorna o item da tupla com o valor mínimo.
tupla (seq)
5 Converte uma lista em tupla.
Python 3 - Dicionário
Cada chave é separada de seu valor por dois pontos (:), os itens são separados por
vírgulas e a coisa toda é colocada entre chaves. Um dicionário vazio sem nenhum item
é escrito com apenas duas chaves, assim: {}.
dict['Name']: Zara
dict['Age']: 7
Se tentarmos acessar um item de dados com uma chave, que não faz parte do
dicionário, receberemos um erro da seguinte forma:
Demonstração ao vivo
#!/usr/bin/python3
dict['Zara']:
Traceback (most recent call last):
File "test.py", line 4, in <module>
print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'
Atualizando Dicionário
Você pode atualizar um dicionário adicionando uma nova entrada ou um par de valores-
chave, modificando uma entrada existente ou excluindo uma entrada existente,
conforme mostrado em um exemplo simples fornecido abaixo.
Demonstração ao vivo
#!/usr/bin/python3
dict['Age']: 8
dict['School']: DPS School
Para remover explicitamente um dicionário inteiro, basta usar a instrução del . A seguir,
um exemplo simples -
Demonstração ao vivo
#!/usr/bin/python3
Uma exceção é levantada porque depois do del dict , o dicionário não existe mais.
dict['Age']:
Traceback (most recent call last):
File "test.py", line 8, in <module>
print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable
(a) Mais de uma entrada por chave não é permitida. Isso significa que nenhuma chave
duplicada é permitida. Quando chaves duplicadas são encontradas durante a atribuição,
a última atribuição ganha. Por exemplo -
Demonstração ao vivo
#!/usr/bin/python3
dict['Name']: Manni
(b) As chaves devem ser imutáveis. Isso significa que você pode usar strings, números
ou tuplas como chaves de dicionário, mas algo como ['key'] não é permitido. A seguir,
um exemplo simples -
Demonstração ao vivo
#!/usr/bin/python3
len (dict)
str (dict)
3 Produz uma representação de string imprimível de um dicionário
tipo (variável)
dict.clear ()
1 Remove todos os elementos do dicionário dict
dict.copy ()
2 Retorna uma cópia superficial do dicionário dict
dict.fromkeys ()
dict.has_key (chave)
5 Removido, use a operação em vez disso.
dict.items ()
6 Retorna uma lista de pares de tupla do dict (chave, valor)
dict.keys ()
7 Retorna a lista de chaves do dicionário
8 Semelhante a get (), mas definirá dict [key] = default se a chave ainda não
estiver no dict
dict.update (dict2)
9 Adiciona pares de valores-chave do dicionário dict2 ao dict
dict.values ()
10 Lista de dicionário retorna dict valores 's
O que é Tick?
Intervalos de tempo são números de ponto flutuante em unidades de segundos.
Instantes particulares no tempo são expressos em segundos desde as 12h00 de 1 de
janeiro de 1970 (época).
Existe um módulo de horário popular disponível no Python que fornece funções para
trabalhar com horários e para converter entre representações. A função time.time ()
retorna a hora atual do sistema em ticks desde as 00:00, 1 de janeiro de 1970 (época).
Exemplo
Demonstração ao vivo
#!/usr/bin/python3
import time; # This is required to include time module.
ticks = time.time()
print ("Number of ticks since 12:00am, January 1, 1970:", ticks)
A aritmética de datas é fácil de fazer com carrapatos. No entanto, datas antes da época
não podem ser representadas neste formulário. Datas no futuro distante também não
podem ser representadas desta forma - o ponto de corte é em algum momento em
2038 para UNIX e Windows.
O que é o TimeTuple?
Muitas das funções de tempo do Python lidam com o tempo como uma tupla de 9
números, como mostrado abaixo -
1 Mês 1 a 12
2 Dia 1 a 31
3 Hora 0 a 23
4 Minuto 0 a 59
Por exemplo -
Demonstração ao vivo
import time
print (time.localtime());
0 tm_year 2016
1 tm_mon 1 a 12
2 tm_mday 1 a 31
3 tm_hour 0 a 23
4 tm_min 0 a 59
6 tm_wday 0 a 6 (0 é segunda-feira)
localtime = time.localtime(time.time())
print ("Local current time :", localtime)
Isso produziria o seguinte resultado, que poderia ser formatado em qualquer outra
forma apresentável -
#!/usr/bin/python3
import time
cal = calendar.month(2016, 2)
print ("Here is the calendar:")
print (cal)
O tempo do módulo
Existe um módulo de tempo popular disponível no Python, que fornece funções para
trabalhar com tempos e para converter entre representações. Aqui está a lista de todos
os métodos disponíveis.
time.altzone
O deslocamento do fuso horário do horário local, em segundos a oeste do
time.asctime ([tupletime])
Rélogio de ponto( )
Retorna o tempo atual da CPU como um número de segundos em ponto
3 flutuante. Para medir os custos computacionais de diferentes abordagens, o
valor de time.clock é mais útil que o de time.time ().
time.ctime ([seg.])
4 Como asctime (localtime (secs)) e sem argumentos é como asctime ()
5 time.gmtime ([segs])
Aceita um instante expresso em segundos desde a época e retorna uma hora-
tupla t com a hora UTC. Nota - t.tm_isdst é sempre 0
time.localtime ([segs])
Aceita um instante expresso em segundos desde a época e retorna uma hora-
6 tupla t com a hora local (t.tm_isdst é 0 ou 1, dependendo se o DST se aplica a
segundos instantâneos por regras locais).
time.mktime (tupletime)
Aceita um instante expresso como uma tupla de tempo na hora local e retorna
7 um valor de ponto flutuante com o instante expresso em segundos desde a
época.
time.sleep (secs)
8 Suspende o thread de chamada por segundos seg.
9 Aceita um instante expresso como uma tupla no tempo local e retorna uma
string representando o instante, conforme especificado pela string fmt.
time.time ()
time.tzset ()
Existem dois atributos importantes disponíveis com o módulo de tempo. Eles são
time.timezone
O módulo do calendário
O módulo de calendário fornece funções relacionadas ao calendário, incluindo funções
para imprimir um calendário de texto para um determinado mês ou ano.
calendar.calendar (ano, w = 2, l = 1, c = 6)
Retorna uma string de múltiplas linhas com um calendário para o ano ano
1 formatado em três colunas separadas por espaços c. w é a largura em
caracteres de cada data; cada linha tem comprimento 21 * w + 18 + 2 * c. l é
o número de linhas para cada semana.
calendar.firstweekday ()
calendar.isleap (ano)
3
Retorna Verdadeiro se o ano for um ano bissexto; caso contrário, False.
4 Retorna o número total de dias bissextos nos anos dentro do intervalo (y1,
y2).
Retorna uma string de múltiplas linhas com um calendário para o mês, mês do
5 ano, uma linha por semana mais duas linhas de cabeçalho. w é a largura em
caracteres de cada data; cada linha tem comprimento 7 * w + 6. l é o número
de linhas para cada semana.
6 calendar.monthcalendar (ano, mês)
Retorna uma lista de listas de ints. Cada subliste denota uma semana. Dias
fora do mês mês do ano ano são definidos como 0; Os dias dentro do mês
estão definidos para o dia do mês, 1 e para cima.
calendar.prcal (ano, w = 2, l = 1, c = 6)
8
Como print calendar.calendar (ano, w, l, c).
10 Define o primeiro dia de cada semana para o dia da semana do código do dia
da semana. Códigos da semana são 0 (segunda-feira) a 6 (domingo).
calendar.timegm (tupletime)
O módulo datetime
O módulo pytz
O módulo dateutil
Python 3 - Funções
Uma função é um bloco de código organizado e reutilizável usado para executar uma
única ação relacionada. Funções fornecem melhor modularidade para sua aplicação e
um alto grau de reutilização de código.
Como você já sabe, o Python oferece muitas funções internas como print (), etc., mas
você também pode criar suas próprias funções. Essas funções são chamadas de funções
definidas pelo usuário.
O bloco de código dentro de cada função começa com dois pontos (:) e é
recuado.
Sintaxe
def functionname( parameters ):
"function_docstring"
function_suite
return [expression]
Exemplo
A função a seguir usa uma string como parâmetro de entrada e a imprime na tela
padrão.
Uma vez finalizada a estrutura básica de uma função, você pode executá-la chamando-
a de outra função ou diretamente do prompt do Python. A seguir, um exemplo para
chamar a função printme ()
Demonstração ao vivo
#!/usr/bin/python3
O parâmetro mylist é local para a função changeme. Alterar mylist dentro da função
não afeta minha lista. A função não realiza nada e finalmente isso produziria o seguinte
resultado -
Argumentos da Função
Você pode chamar uma função usando os seguintes tipos de argumentos formais -
Argumentos Requeridos
Argumentos de palavras-chave
Argumentos padrão
Argumentos Requeridos
Argumentos requeridos são os argumentos passados para uma função na ordem
posicional correta. Aqui, o número de argumentos na chamada de função deve
corresponder exatamente à definição da função.
Argumentos de palavras-chave
Argumentos de palavras-chave estão relacionados às chamadas de função. Quando
você usa argumentos de palavra-chave em uma chamada de função, o chamador
identifica os argumentos pelo nome do parâmetro.
My string
O exemplo a seguir fornece uma imagem mais clara. Observe que a ordem dos
parâmetros não importa.
Demonstração ao vivo
#!/usr/bin/python3
Name: miki
Age 50
Argumentos Padrão
Um argumento padrão é um argumento que assume um valor padrão se um valor não
for fornecido na chamada de função para esse argumento. O exemplo a seguir dá uma
idéia sobre argumentos padrão, imprime a idade padrão se não for passada -
Demonstração ao vivo
#!/usr/bin/python3
Name: miki
Age 50
Name: miki
Age 35
A sintaxe para uma função com argumentos de variável não palavra-chave é fornecida
abaixo -
Um asterisco (*) é colocado antes do nome da variável que contém os valores de todos
os argumentos variáveis não-chave. Esta tupla permanece vazia se nenhum argumento
adicional for especificado durante a chamada de função. A seguir, um exemplo simples -
Demonstração ao vivo
#!/usr/bin/python3
Output is:
10
Output is:
70
60
50
As funções anônimas
Essas funções são chamadas anônimas porque não são declaradas da maneira padrão
usando a palavra-chave def . Você pode usar a palavra-chave lambda para criar
pequenas funções anônimas.
Uma função anônima não pode ser uma chamada direta para impressão porque
lambda requer uma expressão.
As funções Lambda têm seu próprio namespace local e não podem acessar
variáveis diferentes das que estão em sua lista de parâmetros e aquelas no
namespace global.
Embora pareça que os lambdas são uma versão de uma linha de uma função,
eles não são equivalentes a instruções embutidas em C ou C ++, cuja finalidade
é empilhar a alocação por função de passagem, durante a invocação por
motivos de desempenho.
Sintaxe
A sintaxe das funções lambda contém apenas uma única instrução, que é a seguinte -
A declaração de retorno
A instrução return [expressão] sai de uma função, retornando opcionalmente uma
expressão ao chamador. Uma declaração de retorno sem argumentos é a mesma que
retornar Nenhuma.
Todos os exemplos dados abaixo não estão retornando nenhum valor. Você pode
retornar um valor de uma função da seguinte maneira -
Demonstração ao vivo
#!/usr/bin/python3
O escopo de uma variável determina a parte do programa onde você pode acessar um
identificador específico. Existem dois escopos básicos de variáveis em Python -
Variáveis globais
Variáveis locais
Isso significa que as variáveis locais podem ser acessadas apenas dentro da função em
que são declaradas, enquanto as variáveis globais podem ser acessadas em todo o
corpo do programa por todas as funções. Quando você chama uma função, as variáveis
declaradas dentro dela são colocadas no escopo. A seguir, um exemplo simples -
Demonstração ao vivo
#!/usr/bin/python3
Python 3 - Módulos
Um módulo permite que você organize logicamente seu código Python. Agrupar código
relacionado em um módulo torna o código mais fácil de entender e usar. Um módulo é
um objeto Python com atributos arbitrariamente nomeados que você pode vincular e
referenciar.
Exemplo
O código Python para um módulo chamado aname normalmente reside em um arquivo
namedaname.py. Aqui está um exemplo de um módulo simples, support.py -
A declaração de importação
Você pode usar qualquer arquivo de origem do Python como um módulo executando
uma instrução de importação em algum outro arquivo de origem do Python. A
importação tem a seguinte sintaxe -
Hello : Zara
Por exemplo, para importar a função fibonacci do módulo fib, use a seguinte instrução -
#!/usr/bin/python3
Esta declaração não importa o módulo inteiro fib no namespace atual; Ele apenas
introduz o item fibonacci do módulo fib na tabela de símbolos globais do módulo de
importação.
Isso fornece uma maneira fácil de importar todos os itens de um módulo para o
namespace atual; no entanto, essa declaração deve ser usada com moderação.
Localizando Módulos
Quando você importa um módulo, o interpretador Python procura o módulo nas
seqüências a seguir -
O diretório atual.
A variável PYTHONPATH
O PYTHONPATH é uma variável de ambiente, consistindo em uma lista de diretórios. A
sintaxe de PYTHONPATH é a mesma da variável PATH do shell.
Cada função tem seu próprio namespace local. Os métodos de classe seguem a
mesma regra de escopo que as funções comuns.
Portanto, para atribuir um valor a uma variável global em uma função, você
deve primeiro usar a instrução global.
A declaração global VarName diz ao Python que VarName é uma variável global. O
Python pára de procurar o namespace local pela variável.
Por exemplo, definimos uma variável Money no namespace global. Dentro da função
Money, atribuímos a Money um valor, portanto, o Python assume Money como uma
variável local.
Money = 2000
def AddMoney():
# Uncomment the following line to fix the code:
# global Money
Money = Money + 1
print (Money)
AddMoney()
print (Money)
A função dir ()
A função interna dir () retorna uma lista classificada de strings contendo os nomes
definidos por um módulo.
A função reload ()
Quando um módulo é importado para um script, o código na parte de nível superior de
um módulo é executado apenas uma vez.
reload(module_name)
Aqui, module_name é o nome do módulo que você deseja recarregar e não a string que
contém o nome do módulo. Por exemplo, para recarregar o módulo hello, faça o
seguinte -
reload(hello)
Pacotes em Python
Um pacote é uma estrutura de diretório de arquivos hierárquica que define um único
ambiente de aplicativo Python que consiste em módulos e subpacotes e sub-subpacotes
e assim por diante.
Considere um arquivo Pots.py disponível no diretório de telefone. Este arquivo tem a
seguinte linha de código fonte -
#!/usr/bin/python3
def Pots():
print ("I'm Pots Phone")
Similar, temos outros dois arquivos com diferentes funções com o mesmo nome acima.
Eles são
Telefone / __ init__.py
Para disponibilizar todas as suas funções quando você tiver importado o Telefone, você
precisará colocar instruções de importação explícitas em __init__.py da seguinte
maneira -
Depois de adicionar essas linhas a __init__.py, você terá todas essas classes disponíveis
ao importar o pacote do Phone.
#!/usr/bin/python3
Phone.Pots()
Phone.Isdn()
Phone.G3()
No exemplo acima, tomamos o exemplo de uma única função em cada arquivo, mas
você pode manter várias funções em seus arquivos. Você também pode definir classes
Python diferentes nesses arquivos e, em seguida, pode criar seus pacotes fora dessas
classes.
Python 3 - Arquivos I / O
Este capítulo cobre todas as funções básicas de E / S disponíveis no Python 3. Para
mais funções, consulte a documentação padrão do Python.
Imprimir na tela
A maneira mais simples de produzir saída é usando a instrução print , onde você pode
passar zero ou mais expressões separadas por vírgulas. Essa função converte as
expressões que você passa para uma string e grava o resultado na saída padrão da
seguinte maneira -
Demonstração ao vivo
#!/usr/bin/python3
A função de entrada
A função input ([prompt]) é equivalente a raw_input, exceto pelo fato de assumir que
a entrada é uma expressão Python válida e retorna o resultado avaliado para você.
#!/usr/bin/python3
>>> x = input("something:")
something:10
>>> x
'10'
>>> x = input("something:")
something:'10' #entered data treated as string with or without ''
>>> x
"'10'"
O Python fornece funções básicas e métodos necessários para manipular arquivos por
padrão. Você pode fazer a maior parte da manipulação de arquivos usando um objeto
de arquivo .
A função aberta
Antes de ler ou escrever um arquivo, você precisa abri-lo usando a função open () do
Python. Essa função cria um objeto de arquivo , que seria utilizado para chamar outros
métodos de suporte associados a ele.
Sintaxe
file object = open(file_name [, access_mode][, buffering])
rb
r+
4 rb +
wb
w+
wb +
uma
ab
um +
12 ab +
file.closed
1
Retorna true se o arquivo estiver fechado, caso contrário, false.
file.mode
2
Retorna o modo de acesso com o qual o arquivo foi aberto.
nome do arquivo
3
Retorna o nome do arquivo.
Exemplo
Demonstração ao vivo
#!/usr/bin/python3
# Open a file
fo = open("foo.txt", "wb")
print ("Name of the file: ", fo.name)
print ("Closed or not : ", fo.closed)
print ("Opening mode : ", fo.mode)
fo.close()
O método close ()
O método close () de um objeto de arquivo libera qualquer informação não escrita e
fecha o objeto de arquivo, após o qual não se pode mais escrever.
Exemplo
Demonstração ao vivo
#!/usr/bin/python3
# Open a file
fo = open("foo.txt", "wb")
print ("Name of the file: ", fo.name)
O método write ()
O método write () grava qualquer string em um arquivo aberto. É importante observar
que as strings Python podem ter dados binários e não apenas texto.
O método write () não adiciona um caractere de nova linha ('\ n') ao final da string -
Sintaxe
fileObject.write(string);
Exemplo
#!/usr/bin/python3
# Open a file
fo = open("foo.txt", "w")
fo.write( "Python is a great language.\nYeah its great!!\n")
Sintaxe
fileObject.read([count]);
Aqui, o parâmetro passado é o número de bytes a serem lidos no arquivo aberto. Este
método começa lendo desde o início do arquivo e se a contagem estiver faltando, então
ele tenta ler o máximo possível, talvez até o final do arquivo.
Exemplo
Vamos pegar um arquivo foo.txt , que criamos acima.
#!/usr/bin/python3
# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print ("Read String is : ", str)
Posições de arquivo
O método tell () informa a posição atual dentro do arquivo; Em outras palavras, a
próxima leitura ou gravação ocorrerá nesse número de bytes a partir do início do
arquivo.
O método seek (offset [, from]) altera a posição atual do arquivo. O argumento offset
indica o número de bytes a serem movidos. O argumento from especifica a posição de
referência de onde os bytes devem ser movidos.
Se from estiver definido como 0, o início do arquivo será usado como a posição de
referência. Se estiver definido para 1, a posição atual é usada como posição de
referência. Se estiver definido como 2, o final do arquivo será considerado como a
posição de referência.
Exemplo
Vamos pegar um arquivo foo.txt , que criamos acima.
#!/usr/bin/python3
# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print ("Read String is : ", str)
Para usar este módulo, você precisa importá-lo primeiro e depois chamar qualquer
função relacionada.
O método rename ()
O método rename () recebe dois argumentos, o nome do arquivo atual e o novo nome
do arquivo.
Sintaxe
os.rename(current_file_name, new_file_name)
Exemplo
A seguir, um exemplo para renomear um arquivo existente test1.txt -
#!/usr/bin/python3
import os
O método remove ()
Você pode usar o método remove () para excluir arquivos fornecendo o nome do
arquivo a ser excluído como argumento.
Sintaxe
os.remove(file_name)
Exemplo
A seguir, um exemplo para excluir um arquivo existente test2.txt -
#!/usr/bin/python3
import os
Diretórios em Python
Todos os arquivos estão contidos em vários diretórios, e o Python não tem nenhum
problema em lidar com isso também. O módulo os tem vários métodos que ajudam a
criar, remover e alterar diretórios.
O método mkdir ()
Você pode usar o método mkdir () do módulo os para criar diretórios no diretório
atual. Você precisa fornecer um argumento para esse método, que contém o nome do
diretório a ser criado.
Sintaxe
os.mkdir("newdir")
Exemplo
A seguir, um exemplo para criar um teste de diretório no diretório atual -
#!/usr/bin/python3
import os
O método chdir ()
Você pode usar o método chdir () para alterar o diretório atual. O método chdir ()
recebe um argumento, que é o nome do diretório em que você deseja criar o diretório
atual.
Sintaxe
os.chdir("newdir")
Exemplo
A seguir, um exemplo para entrar no diretório "/ home / newdir" -
#!/usr/bin/python3
import os
# Changing a directory to "/home/newdir"
os.chdir("/home/newdir")
O método getcwd ()
O método getcwd () exibe o diretório de trabalho atual.
Sintaxe
os.getcwd()
Exemplo
A seguir, um exemplo para fornecer o diretório atual -
#!/usr/bin/python3
import os
O método rmdir ()
O método rmdir () exclui o diretório, que é passado como um argumento no método.
Sintaxe
os.rmdir('dirname')
Exemplo
A seguir, um exemplo para remover o diretório "/ tmp / test". É necessário fornecer um
nome completo do diretório, caso contrário, ele procuraria esse diretório no diretório
atual.
#!/usr/bin/python3
import os
Métodos de Objeto OS
Isso fornece métodos para processar arquivos e diretórios.
Manipulação de exceção - Isso seria abordado neste tutorial. Aqui está uma
lista de exceções padrão disponíveis em Python - Exceções padrão .
Exceções Padrão
Aqui está uma lista de exceções padrão disponíveis no Python. -
Exceção
1
Classe base para todas as exceções
StopIteration
SystemExit
3
Criado pela função sys.exit ().
Erro padrão
ArithmeticError
5
Classe base para todos os erros que ocorrem no cálculo numérico.
OverflowError
6
Gerado quando um cálculo excede o limite máximo para um tipo numérico.
FloatingPointError
7
Gerado quando um cálculo de ponto flutuante falha.
8 ZeroDivisonError
Gerado quando divisão ou módulo por zero ocorre para todos os tipos
numéricos.
AssertionError
9
Criado em caso de falha da declaração do Assert.
AttributeError
10
Gerado em caso de falha de referência ou atribuição de atributo.
EOFError
ImportError
12
Gerado quando uma declaração de importação falha.
KeyboardInterrupt
LookupError
14
Classe base para todos os erros de pesquisa.
IndexError
15
Gerado quando um índice não é encontrado em uma sequência.
KeyError
16
Gerado quando a chave especificada não é encontrada no dicionário.
NameError
UnboundLocalError
18 Gerado ao tentar acessar uma variável local em uma função ou método, mas
nenhum valor foi atribuído a ela.
19 EnvironmentError
Classe base para todas as exceções que ocorrem fora do ambiente Python.
IOError
20 Gerado quando uma operação de entrada / saída falha, como a instrução print
ou a função open () ao tentar abrir um arquivo que não existe.
OSError
21
Gerado por erros relacionados ao sistema operacional.
Erro de sintaxe
22
Gerado quando há um erro na sintaxe do Python.
IndentationError
23
Gerado quando o recuo não é especificado corretamente.
Erro no sistema
SystemExit
TypeError
ValueError
RuntimeError
28
Gerado quando um erro gerado não se enquadra em nenhuma categoria.
NotImplementedError
A declaração de afirmação
Quando encontra uma declaração de afirmação, o Python avalia a expressão que a
acompanha, o que é de fato verdade. Se a expressão é falsa, o Python gera uma
exceção AssertionError .
Exemplo
Aqui está uma função que converte uma determinada temperatura de graus Kelvin para
graus Fahrenheit. Como o 0 ° K está tão frio quanto possível, a função fica suspensa se
a temperatura for negativa -
Demonstração ao vivo
#!/usr/bin/python3
def KelvinToFahrenheit(Temperature):
assert (Temperature >= 0),"Colder than absolute zero!"
return ((Temperature-273)*1.8)+32
print (KelvinToFahrenheit(273))
print (int(KelvinToFahrenheit(505.78)))
print (KelvinToFahrenheit(-5))
32.0
451
Traceback (most recent call last):
File "test.py", line 9, in <module>
print KelvinToFahrenheit(-5)
File "test.py", line 4, in KelvinToFahrenheit
assert (Temperature >= 0),"Colder than absolute zero!"
AssertionError: Colder than absolute zero!
O que é exceção?
Uma exceção é um evento, que ocorre durante a execução de um programa que
interrompe o fluxo normal das instruções do programa. Em geral, quando um script
Python encontra uma situação com a qual ele não consegue lidar, ele gera uma
exceção. Uma exceção é um objeto Python que representa um erro.
Quando um script Python gera uma exceção, ele deve manipular a exceção
imediatamente, caso contrário, ela será encerrada e encerrada.
Sintaxe
Aqui está a sintaxe simples de try .... except ... else blocks -
try:
You do your operations here
......................
except ExceptionI:
If there is ExceptionI, then execute this block.
except ExceptionII:
If there is ExceptionII, then execute this block.
......................
else:
If there is no exception then execute this block.
Uma única instrução try pode ter várias instruções, exceto. Isso é útil quando o
bloco try contém instruções que podem lançar diferentes tipos de exceções.
Você também pode fornecer uma exceção genérica, que manipula qualquer
exceção.
Após a (s) cláusula (s) exceto, você pode incluir uma cláusula else. O código no
bloco else é executado se o código no bloco try: não gerar uma exceção.
O else-block é um bom lugar para o código que não precisa da proteção do try:
block.
Exemplo
Este exemplo abre um arquivo, grava conteúdo no arquivo e sai com graça porque não
há nenhum problema -
Demonstração ao vivo
#!/usr/bin/python3
try:
fh = open("testfile", "w")
fh.write("This is my test file for exception handling!!")
except IOError:
print ("Error: can\'t find file or read data")
else:
print ("Written content in the file successfully")
fh.close()
Exemplo
Este exemplo tenta abrir um arquivo no qual você não tem permissão de gravação,
então ele gera uma exceção -
Demonstração ao vivo
#!/usr/bin/python3
try:
fh = open("testfile", "r")
fh.write("This is my test file for exception handling!!")
except IOError:
print ("Error: can\'t find file or read data")
else:
print ("Written content in the file successfully")
try:
You do your operations here
......................
except:
If there is any exception, then execute this block.
......................
else:
If there is no exception then execute this block.
Esse tipo de instrução try-except captura todas as exceções que ocorrem. A utilização
desse tipo de instrução try-except não é considerada uma boa prática de programação,
porque captura todas as exceções, mas não faz com que o programador identifique a
causa raiz do problema que pode ocorrer.
O exceto cláusula com múltiplas exceções
Você também pode usar a mesma instrução exceto para manipular várias exceções da
seguinte maneira -
try:
You do your operations here
......................
except(Exception1[, Exception2[,...ExceptionN]]]):
If there is any exception from the given exception list,
then execute this block.
......................
else:
If there is no exception then execute this block.
A cláusula try-finally
Você pode usar um bloco finally: junto com um bloco try:. O finally: block é um lugar
para colocar qualquer código que deve ser executado, quer o bloco de tentativas tenha
levantado uma exceção ou não. A sintaxe da declaração try-finally é essa -
try:
You do your operations here;
......................
Due to any exception, this may be skipped.
finally:
This would always be executed.
......................
Nota - Você pode fornecer, exceto cláusula (s), ou uma cláusula finally, mas não
ambas. Você não pode usar cláusula else junto com uma cláusula finally.
Exemplo
Demonstração ao vivo
#!/usr/bin/python3
try:
fh = open("testfile", "w")
fh.write("This is my test file for exception handling!!")
finally:
print ("Error: can\'t find file or read data")
fh.close()
Se você não tem permissão para abrir o arquivo no modo de escrita, isso produzirá o
seguinte resultado -
O mesmo exemplo pode ser escrito de forma mais clara como segue -
Demonstração ao vivo
#!/usr/bin/python3
try:
fh = open("testfile", "w")
try:
fh.write("This is my test file for exception handling!!")
finally:
print ("Going to close the file")
fh.close()
except IOError:
print ("Error: can\'t find file or read data")
Quando uma exceção é lançada no bloco try , a execução passa imediatamente para o
bloco finally . Depois que todas as instruções no bloco finally são executadas, a exceção
é levantada novamente e é tratada nas instruções except , se presentes na próxima
camada superior da instrução try-except .
try:
You do your operations here
......................
except ExceptionType as Argument:
You can print value of Argument here...
Se você escrever o código para manipular uma única exceção, poderá ter uma variável
seguindo o nome da exceção na instrução except. Se você estiver interceptando várias
exceções, poderá ter uma variável seguindo a tupla da exceção.
Essa variável recebe o valor da exceção que contém principalmente a causa da exceção.
A variável pode receber um único valor ou vários valores na forma de uma tupla. Esta
tupla geralmente contém a string de erro, o número do erro e um local de erro.
Exemplo
A seguir, um exemplo de uma única exceção -
Demonstração ao vivo
#!/usr/bin/python3
Sintaxe
raise [Exception [, args [, traceback]]]
Exemplo
Uma exceção pode ser uma string, uma classe ou um objeto. A maioria das exceções
levantadas pelo núcleo Python são classes, com um argumento que é uma instância da
classe. Definir novas exceções é muito fácil e pode ser feito da seguinte maneira -
Nota - Para capturar uma exceção, uma cláusula "except" deve se referir à mesma
exceção lançada como um objeto de classe ou uma string simples. Por exemplo, para
capturar a exceção acima, devemos escrever a cláusula except da seguinte forma -
try:
Business Logic here...
except Exception as e:
Exception handling here using e.args...
else:
Rest of the code here...
try:
l = functionName(-10)
print ("level = ",l)
except Exception as e:
print ("error in level argument",e.args[0])
Isso produzirá o seguinte resultado
Aqui está um exemplo relacionado ao RuntimeError . Aqui, uma classe é criada com
subclasse de RuntimeError . Isso é útil quando você precisa exibir informações mais
específicas quando uma exceção é capturada.
No bloco try, a exceção definida pelo usuário é levantada e capturada no bloco except.
A variável e é usada para criar uma instância da classe Networkerror .
class Networkerror(RuntimeError):
def __init__(self, arg):
self.args = arg
Então, depois de ter definido a classe acima, você pode aumentar a exceção da
seguinte forma -
try:
raise Networkerror("Bad hostname")
except Networkerror,e:
print e.args
Se você não tem nenhuma experiência anterior com programação orientada a objeto
(OO), você pode querer consultar um curso introdutório sobre ela ou pelo menos um
tutorial de algum tipo para que você tenha uma noção dos conceitos básicos.
Object - Uma instância exclusiva de uma estrutura de dados definida por sua
classe. Um objeto compreende os membros de dados (variáveis de classe e
variáveis de instância) e métodos.
Criando Classes
A instrução de classe cria uma nova definição de classe. O nome da classe segue
imediatamente a classe de palavra-chave seguida por dois pontos da seguinte forma:
class ClassName:
'Optional class documentation string'
class_suite
A classe tem uma string de documentação, que pode ser acessada via
ClassName .__ doc__ .
Exemplo
A seguir, um exemplo de uma classe Python simples -
class Employee:
'Common base class for all employees'
empCount = 0
def displayCount(self):
print ("Total Employee %d" % Employee.empCount)
def displayEmployee(self):
print ("Name : ", self.name, ", Salary: ", self.salary)
Você declara outros métodos de classe, como funções normais, com a exceção
de que o primeiro argumento para cada método é self . O Python adiciona o
argumento próprio à lista para você; você não precisa incluí-lo quando você
chama os métodos.
Acessando Atributos
Você acessa os atributos do objeto usando o operador ponto com objeto. A variável de
classe seria acessada usando o nome da classe da seguinte maneira -
emp1.displayEmployee()
emp2.displayEmployee()
print ("Total Employee %d" % Employee.empCount)
class Employee:
'Common base class for all employees'
empCount = 0
def displayCount(self):
print ("Total Employee %d" % Employee.empCount)
def displayEmployee(self):
print ("Name : ", self.name, ", Salary: ", self.salary)
Em vez de usar as instruções normais para acessar os atributos, você pode usar as
seguintes funções -
class Employee:
'Common base class for all employees'
empCount = 0
def displayCount(self):
print ("Total Employee %d" % Employee.empCount)
def displayEmployee(self):
print ("Name : ", self.name, ", Salary: ", self.salary)
Você normalmente não notará quando o coletor de lixo destruir uma instância órfã e
recuperar seu espaço. No entanto, uma classe pode implementar o método especial
__del __ () , chamado de destruidor, que é invocado quando a instância está prestes a
ser destruída. Esse método pode ser usado para limpar quaisquer recursos não-
memória usados por uma instância.
Exemplo
Este destruidor __del __ () imprime o nome da classe de uma instância que está
prestes a ser destruída.
Demonstração ao vivo
#!/usr/bin/python3
class Point:
def __init__( self, x=0, y=0):
self.x = x
self.y = y
def __del__(self):
class_name = self.__class__.__name__
print (class_name, "destroyed")
pt1 = Point()
pt2 = pt1
pt3 = pt1
print (id(pt1), id(pt2), id(pt3)) # prints the ids of the obejcts
del pt1
del pt2
del pt3
Nota - Idealmente, você deve definir suas classes em um arquivo separado, então você
deve importá-las em seu arquivo de programa principal usando a declaração de
importação .
No exemplo acima, assumindo a definição de uma classe Point está contida em point.py
e não há outro código executável nela.
#!/usr/bin/python3
import point
p1 = point.Point()
Herança de Classe
Em vez de começar de um rascunho, você pode criar uma classe derivando-a de uma
classe pré-existente listando a classe pai entre parênteses após o novo nome da classe.
A classe filha herda os atributos de sua classe pai e você pode usar esses atributos
como se eles estivessem definidos na classe filha. Uma classe filha também pode
substituir membros e métodos de dados do pai.
Sintaxe
Classes derivadas são declaradas como suas classes pai; no entanto, uma lista de
classes base para herdar é fornecida após o nome da classe -
Exemplo
Demonstração ao vivo
#!/usr/bin/python3
def parentMethod(self):
print ('Calling parent method')
def getAttr(self):
print ("Parent attribute :", Parent.parentAttr)
def childMethod(self):
print ('Calling child method')
De maneira semelhante, você pode dirigir uma classe de várias classes pai da seguinte
maneira -
Substituindo Métodos
Você sempre pode substituir seus métodos de classe pai. Um motivo para substituir os
métodos do pai é que você pode querer funcionalidade especial ou diferente na sua
subclasse.
Exemplo
Demonstração ao vivo
#!/usr/bin/python3
__del __ (auto)
__repr __ (auto)
__str __ (auto)
__cmp__ (self, x)
5 Comparação de objetos
Sobrecarregando Operadores
Suponha que você tenha criado uma classe Vector para representar vetores
bidimensionais. O que acontece quando você usa o operador mais para adicioná-los? O
mais provável é que o Python grite com você.
Você poderia, no entanto, definir o método __add__ em sua classe para realizar a
adição de vetores e, em seguida, o operador mais se comportaria conforme a
expectativa -
Exemplo
Demonstração ao vivo
#!/usr/bin/python3
class Vector:
def __init__(self, a, b):
self.a = a
self.b = b
def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)
def __add__(self,other):
return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print (v1 + v2)
Vector(7,8)
Esconder dados
Os atributos de um objeto podem ou não ser visíveis fora da definição da classe. Você
precisa nomear os atributos com um prefixo sublinhado duplo, e esses atributos não
estarão diretamente visíveis para pessoas de fora.
Exemplo
Demonstração ao vivo
#!/usr/bin/python3
class JustCounter:
__secretCount = 0
def count(self):
self.__secretCount += 1
print (self.__secretCount)
counter = JustCounter()
counter.count()
counter.count()
print (counter.__secretCount)
1
2
Traceback (most recent call last):
File "test.py", line 12, in <module>
print counter.__secretCount
AttributeError: JustCounter instance has no attribute '__secretCount'
O Python protege esses membros alterando internamente o nome para incluir o nome
da classe. Você pode acessar esses atributos como object._className__attrName . Se
você substituísse sua última linha da seguinte maneira, então funciona para você -
.........................
print (counter._JustCounter__secretCount)
1
2
2
Nós cobriríamos duas funções importantes, que seriam usadas para manipular
expressões regulares. No entanto, uma coisa pequena primeiro: Existem vários
caracteres, que teriam um significado especial quando forem usados na expressão
regular. Para evitar qualquer confusão ao lidar com expressões regulares, usaríamos
Raw Strings como r'expression ' .
a, X, 9, <
1
personagens comuns apenas se encaixam exatamente.
. (um periodo)
2
corresponde a qualquer caractere único, exceto a nova linha '\ n'
\W
\W
4
corresponde a qualquer caractere não pertencente à palavra.
5
\b
\s
\S
7
corresponde a qualquer caractere que não seja espaço em branco.
\ t, \ n,
8
guia, nova linha, retorno
\d
9
dígito decimal [0-9]
^
10
corresponde ao início da string
$
11
corresponde ao final da string
\
12
inibir o "especialismo" de um personagem.
Sinalizadores de compilação
Os sinalizadores de compilação permitem modificar alguns aspectos de como as
expressões regulares funcionam. As bandeiras estão disponíveis no re módulo sob dois
nomes, um nome longo como IGNORECASE e uma forma curta de uma letra como I.
ASCII, A
2 DOTALL, S
LOCALE, L
4
Faça um jogo com reconhecimento de localidade
MULTILINA, M
5
Correspondência de várias linhas, afetando ^ e $
6 Ativar REs verbosos, que podem ser organizados de forma mais limpa e
compreensível
A função de jogo
Essa função tenta corresponder o padrão RE à string com sinalizadores opcionais .
padronizar
1
Esta é a expressão regular a ser correspondida.
corda
bandeiras
3 Você pode especificar diferentes sinalizadores usando OR (|) bit a bit. Estes
são modificadores, listados na tabela abaixo.
grupo (num = 0)
grupos ()
Exemplo
Demonstração ao vivo
#!/usr/bin/python3
import re
if matchObj:
print ("matchObj.group() : ", matchObj.group())
print ("matchObj.group(1) : ", matchObj.group(1))
print ("matchObj.group(2) : ", matchObj.group(2))
else:
print ("No match!!")
A função de pesquisa
Essa função procura pela primeira ocorrência do padrão RE dentro da string com
sinalizadores opcionais .
padronizar
1
Esta é a expressão regular a ser correspondida.
2 corda
bandeiras
3 Você pode especificar diferentes sinalizadores usando OR (|) bit a bit. Estes
são modificadores, listados na tabela abaixo.
grupo (num = 0)
grupos ()
Exemplo
Demonstração ao vivo
#!/usr/bin/python3
import re
if searchObj:
print ("searchObj.group() : ", searchObj.group())
print ("searchObj.group(1) : ", searchObj.group(1))
print ("searchObj.group(2) : ", searchObj.group(2))
else:
print ("Nothing found!!")
Exemplo
Demonstração ao vivo
#!/usr/bin/python3
import re
No match!!
search --> matchObj.group() : dogs
Pesquisar e substituir
Uma das mais importantes re métodos que usam expressões regulares é sub .
Sintaxe
re.sub(pattern, repl, string, max=0)
Exemplo
Demonstração ao vivo
#!/usr/bin/python3
import re
re.I
1
Executa a correspondência insensível a maiúsculas e minúsculas.
re.L
re.M
Faz com que $ combine o final de uma linha (não apenas o final da string) e
3
faz com que ^ combine o início de qualquer linha (não apenas o início da
string).
re.S
re.U
re.X
python
1
Combine "python".
Classes de personagens
Sr. Exemplo e Descrição
Não.
[Pp] ython
1
Correspondência "Python" ou "python"
esfregue [ye]
2
Correspondência "rubi" ou "rube"
[aeiou]
3
Corresponder a qualquer vogal minúscula
[0-9]
4
Corresponder qualquer dígito; o mesmo que [0123456789]
[az]
5
Corresponder a qualquer letra ASCII minúscula
6 [AZ]
Corresponder a qualquer letra ASCII maiúscula
[a-zA-Z0-9]
7
Combine qualquer um dos itens acima
[^ aeiou]
8
Corresponder a algo que não seja uma vogal de letras minúsculas
[^ 0-9]
9
Corresponde a algo diferente de um dígito
.
1
Corresponder qualquer caractere, exceto nova linha
\d
2
Corresponder um dígito: [0-9]
\D
3
Corresponde a um não-dígito: [^ 0-9]
\s
4
Corresponder um caractere de espaço em branco: [\ t \ r \ n \ f]
\S
5
Corresponder o não-branco ao espaço: [^ \ t \ r \ n \ f]
\W
6
Corresponder um caractere de uma única palavra: [A-Za-z0-9_]
\W
7
Corresponder um caractere não-palavra-chave: [^ A-Za-z0-9_]
Casos de Repetição
Sr. Exemplo e Descrição
Não.
rubi?
1
Correspondência "rub" ou "ruby": o y é opcional
rubi*
2
Combine "esfregar" mais 0 ou mais ys
rubi +
3
Combine "esfregar" mais 1 ou mais
\ d {3}
4
Combine exatamente 3 dígitos
\ d {3,}
5
Combine 3 ou mais dígitos
\ d {3,5}
6
Corresponde a 3, 4 ou 5 dígitos
Repetição Nongreedy
Isso corresponde ao menor número de repetições -
<. *>
1
Repetição gananciosa: combina "<python> perl>"
<. *?>
2
Nongreedy: combina "<python>" em "<python> perl>"
\D\d+
1
Nenhum grupo: + repete \ d
(\ D \ d) +
2
Agrupado: + repete \ D \ d par
Backreferences
Isso corresponde a um grupo previamente combinado novamente -
(['"]) [^ \ 1] * \ 1
Alternativas
Sr. Exemplo e Descrição
Não.
python | perl
1
Correspondência "python" ou "perl"
esfregar (y | le)
2
Correspondência "rubi" ou "rublo"
Python (! + | \?)
3
"Python" seguido por um ou mais! ou um?
Âncoras
Isso precisa especificar a posição da correspondência.
^ Python
1
Combine "Python" no início de uma string ou linha interna
Python $
2
Combine "Python" no final de uma string ou linha
\ APython
3
Combine "Python" no início de uma string
Python \ Z
4
Combine "Python" no final de uma string
\ bPython \ b
5
Combine "Python" em um limite de palavra
\ brub \ B
Python (? =!)
7
Combine "Python", se seguido por um ponto de exclamação.
Python (? !!)
8
Combine "Python", se não for seguido por um ponto de exclamação.
R (? # Comentário)
1
Corresponde "R". Todo o resto é um comentário
2 R (? I) uby
R (? I: uby)
3
O mesmo que acima
O que é CGI?
A Common Gateway Interface, ou CGI, é um padrão para programas de
gateway externos que interagem com servidores de informações, como
servidores HTTP.
Navegação na Web
Para entender o conceito de CGI, vamos ver o que acontece quando clicamos em um
hiperlink para procurar uma determinada página da web ou URL.
Seu navegador entra em contato com o servidor da Web HTTP e exige o URL, ou
seja, nome do arquivo.
Servidor Web analisa o URL e procura pelo nome do arquivo. Se encontrar esse
arquivo, ele o envia de volta ao navegador, caso contrário, envia uma
mensagem de erro indicando que você solicitou um arquivo errado.
No entanto, é possível configurar o servidor HTTP para que sempre que um arquivo em
um determinado diretório seja solicitado que o arquivo não seja enviado de volta; em
vez disso, ele é executado como um programa, e qualquer que seja a saída desse
programa, ele é enviado de volta para o seu navegador exibir. Essa função é chamada
de Common Gateway Interface ou CGI e os programas são chamados de scripts CGI.
Esses programas CGI podem ser um script Python, um script PERL, um script Shell, um
programa C ou C ++ etc.
Por padrão, o servidor Linux é configurado para executar apenas os scripts no diretório
cgi-bin em / var / www. Se você quiser especificar qualquer outro diretório para
executar seus scripts CGI, comente as seguintes linhas no arquivo httpd.conf -
<Directory "/var/www/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
<Directory "/var/www/cgi-bin">
Options All
</Directory>
Aqui, assumimos que você tenha o Web Server instalado e funcionando com sucesso e
você pode executar qualquer outro programa CGI como Perl ou Shell, etc.
print ("Content-type:text/html\r\n\r\n")
print ('<html>')
print ('<head>')
print ('<title>Hello Word - First CGI Program</title>')
print ('</head>')
print ('<body>')
print ('<h2>Hello Word! This is my first CGI program</h2>')
print ('</body>')
print ('</html>')
Nota - A primeira linha no script deve ser o caminho para o executável do Python. No
Linux, deve ser #! / Usr / bin / python3
http://localhost:8080/cgi-bin/hello.py
Este script hello.py é um script Python simples, que grava sua saída no arquivo
STDOUT, ou seja, screen. Há um recurso importante e extra disponível, que é a
primeira linha a ser impressa . Tipo de conteúdo: text / html \ r \ n \ r \ n . Essa
linha é enviada de volta ao navegador e especifica o tipo de conteúdo a ser exibido na
tela do navegador.
Até agora você deve ter entendido o conceito básico de CGI e você pode escrever
muitos programas CGI complicados usando Python. Esse script pode interagir com
qualquer outro sistema externo também para trocar informações, como o RDBMS.
Cabeçalho HTTP
A linha Tipo de conteúdo: text / html \ r \ n \ r \ n faz parte do cabeçalho HTTP
que é enviado ao navegador para entender o conteúdo. Todo o cabeçalho HTTP estará
no seguinte formato -
HTTP Field Name: Field Content
For Example
Content-type: text/html\r\n\r\n
Existem alguns outros cabeçalhos HTTP importantes, que você usará freqüentemente
em sua programação CGI.
Tipo de conteúdo:
1 Uma sequência MIME que define o formato do arquivo que está sendo
retornado. Exemplo é tipo de conteúdo: text / html
Expira: Data
Localização: URL
3 O URL que é retornado em vez do URL solicitado. Você pode usar esse campo
para redirecionar uma solicitação para qualquer arquivo.
Comprimento do conteúdo: N
Set-Cookie: String
6
Definir o cookie passado pela string
COMPRIMENTO DO CONTEÚDO
HTTP_COOKIE
3
Retorna os cookies definidos na forma de par chave e valor.
HTTP_USER_AGENT
PATH_INFO
5
O caminho para o script CGI.
QUERY_STRING
REMOTE_ADDR
7 O endereço IP do host remoto que faz a solicitação. Isso é útil para registro
ou para autenticação.
HOSPEDEIRO REMOTO
REQUEST_METHOD
9 O método usado para fazer a solicitação. Os métodos mais comuns são GET
e POST.
SCRIPT_FILENAME
10
O caminho completo para o script CGI.
11 SCRIPT_NAME
NOME DO SERVIDOR
12
O nome do host ou endereço IP do servidor
SERVER_SOFTWARE
13
O nome e a versão do software que o servidor está executando.
Aqui está um pequeno programa CGI para listar todas as variáveis CGI. Clique neste
link para ver o resultado Get Environment
Demonstração ao vivo
#!/usr/bin/python
import os
http://www.test.com/cgi-bin/hello.py?key1=value1&key2=value2
/cgi-bin/hello_get.py?first_name=ZARA&last_name=ALI
Abaixo está o script hello_get.py para manipular a entrada fornecida pelo navegador
da web. Nós vamos usar o módulo cgi , o que facilita o acesso a informações passadas.
#!/usr/bin/python
print ("Content-type:text/html\r\n\r\n")
print ("<html>")
print ("<head>")
print ("<title>Hello - Second CGI Program</title>")
print ("</head>")
print ("<body>")
print ("<h2>Hello %s %s</h2>" % (first_name, last_name))
print ("</body>")
print ("</html>")
Aqui está a saída real do formulário acima, você insere Primeiro e Último Nome e, em
seguida, clica no botão enviar para ver o resultado.
Primeiro nome:
Abaixo está o mesmo script hello_get.py, que lida com o método GET, bem como com o
método POST.
#!/usr/bin/python
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Hello - Second CGI Program</title>"
print "</head>"
print "<body>"
print "<h2>Hello %s %s</h2>" % (first_name, last_name)
print "</body>"
print "</html>"
Vamos retomar o mesmo exemplo acima que passa dois valores usando o FORMULÁRIO
HTML e o botão enviar. Usamos o mesmo script CGI hello_get.py para manipular essa
entrada.
Aqui está a saída real do formulário acima. Você insere Primeiro e Último Nome e, em
seguida, clica no botão enviar para ver o resultado.
Primeiro nome:
Aqui está um exemplo de código HTML para um formulário com duas caixas de seleção
-
Abaixo está o script checkbox.cgi para manipular a entrada fornecida pelo navegador
para o botão de caixa de seleção.
#!/usr/bin/python
if form.getvalue('physics'):
physics_flag = "ON"
else:
physics_flag = "OFF"
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Checkbox - Third CGI Program</title>"
print "</head>"
print "<body>"
print "<h2> CheckBox Maths is : %s</h2>" % math_flag
print "<h2> CheckBox Physics is : %s</h2>" % physics_flag
print "</body>"
print "</html>"
Aqui está um exemplo de código HTML para um formulário com dois botões de opção -
Abaixo está o script radiobutton.py para manipular a entrada fornecida pelo navegador
da Web para o botão de opção -
#!/usr/bin/python
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Radio - Fourth CGI Program</title>"
print "</head>"
print "<body>"
print "<h2> Selected Subject is %s</h2>" % subject
print "</body>"
print "</html>"
Aqui está um exemplo de código HTML para um formulário com uma caixa TEXTAREA -
Enviar
Abaixo está o script textarea.cgi para manipular a entrada fornecida pelo navegador da
web -
#!/usr/bin/python
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>";
print "<title>Text Area - Fifth CGI Program</title>"
print "</head>"
print "<body>"
print "<h2> Entered Text Content is %s</h2>" % text_content
print "</body>"
Aqui está um exemplo de código HTML para um formulário com uma caixa suspensa -
Matemáticas Enviar
Abaixo está o script dropdown.py para manipular a entrada fornecida pelo navegador da
web.
#!/usr/bin/python
# Import modules for CGI handling
import cgi, cgitb
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Dropdown Box - Sixth CGI Program</title>"
print "</head>"
print "<body>"
print "<h2> Selected Subject is %s</h2>" % subject
print "</body>"
print "</html>"
Como funciona?
Seu servidor envia alguns dados para o navegador do visitante na forma de um cookie.
O navegador pode aceitar o cookie. Em caso afirmativo, ele é armazenado como um
registro de texto simples no disco rígido do visitante. Agora, quando o visitante chegar
em outra página do seu site, o cookie estará disponível para recuperação. Uma vez
recuperado, seu servidor sabe / lembra o que foi armazenado.
Configurando Cookies
É muito fácil enviar cookies para o navegador. Esses cookies são enviados junto com o
cabeçalho HTTP antes para o campo de tipo de conteúdo. Supondo que você deseja
definir UserID e senha como cookies. Definir os cookies é feito da seguinte forma -
#!/usr/bin/python
A partir deste exemplo, você deve ter entendido como definir cookies. Usamos o
cabeçalho HTTP Set-Cookie para definir cookies.
É opcional definir atributos de cookies como Expira, Domínio e Caminho. É notável que
os cookies sejam definidos antes de enviar a linha mágica "Tipo de conteúdo: text /
html \ r \ n \ r \ n .
Recuperando Cookies
É muito fácil recuperar todos os cookies definidos. Os cookies são armazenados na
variável de ambiente CGI HTTP_COOKIE e terão o seguinte formulário -
#!/usr/bin/python
if environ.has_key('HTTP_COOKIE'):
for cookie in map(strip, split(environ['HTTP_COOKIE'], ';')):
(key, value ) = split(cookie, '=');
if key == "UserID":
user_id = value
if key == "Password":
password = value
User ID = XYZ
Password = XYZ123
<html>
<body>
<form enctype = "multipart/form-data"
action = "save_file.py" method = "post">
<p>File: <input type = "file" name = "filename" /></p>
<p><input type = "submit" value = "Upload" /></p>
</form>
</body>
</html>
Upload
O exemplo acima foi desativado intencionalmente para salvar as pessoas que enviaram
arquivos em nosso servidor, mas você pode tentar o código acima com o seu servidor.
#!/usr/bin/python
import cgi, os
import cgitb; cgitb.enable()
form = cgi.FieldStorage()
else:
message = 'No file was uploaded'
print """\
Content-Type: text/html\n
<html>
<body>
<p>%s</p>
</body>
</html>
""" % (message,)
Se você executar o script acima no Unix / Linux, então você precisa tomar o cuidado de
substituir o separador de arquivos da seguinte forma, caso contrário, em sua máquina
windows acima da instrução open () deve funcionar bem.
fn = os.path.basename(fileitem.filename.replace("\\", "/" ))
Por exemplo, se você quiser fazer com que um arquivo FileName seja baixado de um
determinado link, então sua sintaxe é a seguinte -
#!/usr/bin/python
# HTTP Header
print "Content-Type:application/octet-stream; name = \"FileName\"\r\n";
print "Content-Disposition: attachment; filename = \"FileName\"\r\n\n";
str = fo.read();
print str
Espero que tenha gostado desse tutorial. Se sim, por favor me envie seu feedback em:
Fale Conosco
Você pode escolher o banco de dados certo para o seu aplicativo. Python Database API
suporta uma ampla gama de servidores de banco de dados como -
GadFly
mSQL
MySQL
PostgreSQL
Informix
Interbase
Oráculo
Sybase
SQLite
A API do banco de dados fornece um padrão mínimo para trabalhar com bancos de
dados usando estruturas e sintaxe do Python sempre que possível. Esta API inclui o
seguinte -
Fechando a conexão
O Python tem um suporte embutido para o SQLite. Nesta seção, aprenderíamos todos
os conceitos usando o MySQL. O módulo MySQLdb, uma interface popular com o
MySQL, não é compatível com o Python 3. Em vez disso, usaremos o módulo
PyMySQL .
O que é o PyMySQL?
PyMySQL é uma interface para se conectar a um servidor de banco de dados MySQL do
Python. Ele implementa a API Python Database v2.0 e contém uma biblioteca cliente
MySQL puro-Python. O objetivo do PyMySQL é ser um substituto para o MySQLdb.
#!/usr/bin/python3
import PyMySQL
Se ele produzir o seguinte resultado, significa que o módulo MySQLdb não está
instalado -
Traceback (most recent call last):
File "test.py", line 3, in <module>
Import PyMySQL
ImportError: No module named PyMySQL
A última versão estável está disponível no PyPI e pode ser instalada com pip -
Como alternativa (por exemplo, se pip não estiver disponível), um tarball pode ser
baixado do GitHub e instalado com o Setuptools como segue -
Exemplo
A seguir, um exemplo de conexão com o banco de dados MySQL "TESTDB" -
#!/usr/bin/python3
import PyMySQL
Se uma conexão for estabelecida com a origem de dados, um Objeto de Conexão será
retornado e salvo em db para uso posterior, caso contrário, db será definido como
Nenhum. Em seguida, o objeto db é usado para criar um objeto de cursor , que por
sua vez é usado para executar consultas SQL. Finalmente, antes de sair, garante que a
conexão com o banco de dados seja fechada e que os recursos sejam liberados.
Exemplo
Vamos criar uma tabela de banco de dados EMPREGADO -
#!/usr/bin/python3
import PyMySQL
cursor.execute(sql)
Operação INSERIR
A operação INSERT é necessária quando você deseja criar seus registros em uma tabela
de banco de dados.
Exemplo
O exemplo a seguir, executa a instrução SQL INSERT para criar um registro na tabela
EMPLOYEE -
#!/usr/bin/python3
import PyMySQL
O exemplo acima pode ser escrito da seguinte maneira para criar consultas SQL
dinamicamente -
#!/usr/bin/python3
import PyMySQL
Exemplo
O segmento de código a seguir é outra forma de execução na qual você pode transmitir
parâmetros diretamente -
..................................
user_id = "test123"
password = "password"
Operação de LEITURA
LEITURA Operação em qualquer banco de dados significa buscar algumas informações
úteis do banco de dados.
Depois que a conexão com o banco de dados for estabelecida, você estará pronto para
fazer uma consulta nesse banco de dados. Você pode usar o método fetchone () para
buscar um único registro ou o método fetchall () para buscar vários valores de uma
tabela de banco de dados.
Exemplo
O procedimento a seguir consulta todos os registros da tabela EMPLOYEE com salário
superior a 1000 -
#!/usr/bin/python3
import PyMySQL
Saída
Isso produzirá o seguinte resultado -
Operação de atualização
ATUALIZAÇÃO Operação em qualquer banco de dados significa atualizar um ou mais
registros, que já estão disponíveis no banco de dados.
O procedimento a seguir atualiza todos os registros que possuem SEX como 'M' . Aqui,
aumentamos o IDADE de todos os machos em um ano.
Exemplo
#!/usr/bin/python3
import PyMySQL
Operação DELETE
A operação DELETE é necessária quando você deseja excluir alguns registros do banco
de dados. A seguir, o procedimento para excluir todos os registros do EMPLOYEE, nos
quais a AGE é maior que 20
Exemplo
#!/usr/bin/python3
import PyMySQL
Executando Transações
As transações são um mecanismo que garante a consistência dos dados. As transações
têm as quatro propriedades a seguir -
Durabilidade - Uma vez que uma transação foi confirmada, os efeitos são
persistentes, mesmo após uma falha no sistema.
O Python DB API 2.0 fornece dois métodos para confirmar ou reverter uma transação.
Exemplo
Você já sabe como implementar transações. Aqui está um exemplo semelhante -
Operação COMMIT
Commit é uma operação, que dá um sinal verde ao banco de dados para finalizar as
mudanças e, após essa operação, nenhuma alteração pode ser revertida.
db.commit()
Operação ROLLBACK
Se você não estiver satisfeito com uma ou mais das alterações e quiser reverter essas
alterações completamente, use o método rollback () .
db.rollback()
db.close()
Se a conexão com um banco de dados for fechada pelo usuário com o método close (),
todas as transações pendentes serão revertidas pelo banco de dados. No entanto, em
vez de depender de qualquer um dos detalhes de implementação de nível inferior do
banco de dados, seria melhor que seu aplicativo chamasse commit ou rollback
explicitamente.
Manipulando Erros
Existem muitas fontes de erros. Alguns exemplos são um erro de sintaxe em uma
instrução SQL executada, uma falha de conexão ou a chamada do método de busca
para um identificador de instrução já cancelado ou concluído.
A API do banco de dados define vários erros que devem existir em cada módulo do
banco de dados. A tabela a seguir lista essas exceções.
Aviso
1
Usado para problemas não fatais. Deve subclassificar o StandardError.
2 Erro
InterfaceError
DatabaseError
4
Usado para erros no banco de dados. Deve subclassificar o erro.
Erro de data
5
Subclasse de DatabaseError que se refere a erros nos dados.
OperationalError
IntegrityError
Erro interno
ProgrammingError
NotSupportedError
Seus scripts Python devem lidar com esses erros, mas antes de usar qualquer uma das
exceções acima, verifique se o seu MySQLdb tem suporte para essa exceção. Você pode
obter mais informações sobre eles lendo a especificação DB API 2.0.
O Python também possui bibliotecas que fornecem acesso de nível superior a protocolos
de rede específicos no nível do aplicativo, como FTP, HTTP e assim por diante.
Este capítulo dá-lhe uma compreensão sobre o conceito mais famoso em Networking -
Socket Programming.
O que é Sockets?
Soquetes são os pontos finais de um canal de comunicação bidirecional. Soquetes
podem se comunicar dentro de um processo, entre processos na mesma máquina ou
entre processos em diferentes continentes.
domínio
tipo
protocolo
3 Normalmente zero, isso pode ser usado para identificar uma variante de um
protocolo dentro de um domínio e tipo.
4 nome de anfitrião
porta
Cada servidor escuta os clientes que ligam em uma ou mais portas. Uma porta
5
pode ser um número de porta Fixnum, uma cadeia contendo um número de
porta ou o nome de um serviço.
O módulo do soquete
Para criar um socket, você deve usar a função socket.socket () disponível no módulo
socket, que possui a sintaxe geral -
Depois de ter objeto de soquete , você pode usar as funções necessárias para criar seu
programa de cliente ou servidor. A seguir, a lista de funções necessárias -
s.bind ()
2 s.listen ()
s.connect ()
1
Este método inicia ativamente a conexão do servidor TCP.
s.recv ()
1
Este método recebe mensagem TCP
s.send ()
2
Este método transmite a mensagem TCP
s.recvfrom ()
3
Este método recebe mensagem UDP
s.sendto ()
4
Este método transmite a mensagem UDP
s.close ()
5
Este método fecha o soquete
socket.gethostname ()
6
Retorna o nome do host.
Um servidor simples
Para escrever servidores de Internet, usamos a função de soquete disponível no
módulo de soquete para criar um objeto de soquete. Um objeto de soquete é usado
para chamar outras funções para configurar um servidor de soquete.
Agora chame a função bind (hostname, port) para especificar uma porta para seu
serviço no host fornecido.
Em seguida, chame o método accept do objeto retornado. Esse método aguarda até
que um cliente se conecte à porta especificada e, em seguida, retorna um objeto de
conexão que representa a conexão com esse cliente.
port = 9999
# queue up to 5 requests
serversocket.listen(5)
while True:
# establish a connection
clientsocket,addr = serversocket.accept()
Um cliente simples
Vamos escrever um programa cliente muito simples que abre uma conexão com uma
determinada porta 12345 e um determinado host. É muito simples criar um cliente de
soquete usando a função de módulo de soquete do Python .
O socket.connect (hosname, port) abre uma conexão TCP para o hostname na porta
. Depois de ter um soquete aberto, você pode ler como qualquer outro objeto de IO.
Quando terminar, lembre-se de fechá-lo, pois você fecharia um arquivo.
Exemplo
O código a seguir é um cliente muito simples que se conecta a um determinado host e
porta, lê qualquer dado disponível do soquete e sai -
import socket
# create a socket object
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
port = 9999
s.close()
print (msg.decode('ascii'))
Agora execute este server.py em segundo plano e execute o client.py acima para ver o
resultado.
Saída
Isso produziria o seguinte resultado -
on server terminal
Got a connection from ('192.168.1.10', 3747)
On client terminal
Thank you for connecting
Por favor, verifique todas as bibliotecas mencionadas acima para trabalhar com os
protocolos FTP, SMTP, POP e IMAP.
Leituras Adicionais
Este foi um começo rápido com a programação de soquete. É um assunto vasto.
Recomenda-se passar pelo seguinte link para encontrar mais detalhes -
O Python fornece o módulo smtplib , que define um objeto de sessão do cliente SMTP
que pode ser usado para enviar mensagens para qualquer máquina da Internet com um
daemon de ouvinte SMTP ou ESMTP.
Aqui está uma sintaxe simples para criar um objeto SMTP, que pode ser usado
posteriormente para enviar um e-mail -
import smtplib
host - este é o host que está executando o servidor SMTP. Você pode
especificar o endereço IP do host ou um nome de domínio como
tutorialspoint.com. Este é um argumento opcional.
#!/usr/bin/python3
import smtplib
sender = 'from@fromdomain.com'
receivers = ['to@todomain.com']
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message)
print "Successfully sent email"
except SMTPException:
print "Error: unable to send email"
Aqui, você colocou um e-mail básico na mensagem, usando uma aspa tripla, tomando o
cuidado de formatar os cabeçalhos corretamente. Um email requer um cabeçalho De ,
Para e Assunto , separado do corpo do email com uma linha em branco.
Para enviar o email você usa smtpObj para se conectar ao servidor SMTP na máquina
local. Em seguida, use o método sendmail junto com a mensagem, o endereço de e o
endereço de destino como parâmetros (mesmo que os endereços de e para estejam
dentro do próprio e-mail, nem sempre eles são usados para rotear o e-mail).
Se você não estiver executando um servidor SMTP em sua máquina local, poderá usar o
cliente smtplib para se comunicar com um servidor SMTP remoto. A menos que você
esteja usando um serviço de webmail (como o gmail ou o Yahoo! Mail), seu provedor de
e-mail deve fornecer os detalhes do servidor de e-mail de saída que você pode fornecer,
como segue:
Ao enviar uma mensagem de e-mail, você pode especificar uma versão Mime, um tipo
de conteúdo e um conjunto de caracteres para enviar um e-mail em HTML.
Exemplo
A seguir, um exemplo para enviar o conteúdo HTML como um e-mail. Tente uma vez -
#!/usr/bin/python3
import smtplib
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message)
print "Successfully sent email"
except SMTPException:
print "Error: unable to send email"
Um limite é iniciado com dois hífens seguidos por um número exclusivo, que não pode
aparecer na parte da mensagem do e-mail. Um limite final indicando a seção final do e-
mail também deve terminar com dois hífens.
Os arquivos anexados devem ser codificados com a função pack ("m") para ter a
codificação base 64 antes da transmissão.
Exemplo
A seguir, um exemplo, que envia um arquivo /tmp/test.txt como um anexo. Tente
uma vez -
#!/usr/bin/python3
import smtplib
import base64
filename = "/tmp/test.txt"
sender = 'webmaster@tutorialpoint.com'
reciever = 'amrood.admin@gmail.com'
marker = "AUNIQUEMARKER"
body ="""
This is a test email to send an attachement.
"""
# Define the main headers.
part1 = """From: From Person <me@fromdomain.net>
To: To Person <amrood.admin@gmail.com>
Subject: Sending Attachement
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=%s
--%s
""" % (marker, marker)
%s
--%s
""" % (body,marker)
%s
--%s--
""" %(filename, filename, encodedcontent, marker)
message = part1 + part2 + part3
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, reciever, message)
print "Successfully sent email"
except Exception:
print ("Error: unable to send email")
Um segmento tem um começo, uma seqüência de execução e uma conclusão. Ele tem
um ponteiro de instrução que rastreia onde o contexto está sendo executado no
momento.
thread do kernel
thread do usuário
_fio
segmentação
O módulo de thread foi "obsoleto" por um longo tempo. Usuários são encorajados a
usar o módulo de threading. Portanto, no Python 3, o módulo "thread" não está mais
disponível. No entanto, ele foi renomeado para "_thread" para compatibilidades
reversas no Python3.
Essa chamada de método permite uma maneira rápida e eficiente de criar novos
encadeamentos no Linux e no Windows.
Aqui, args é uma tupla de argumentos; use uma tupla vazia para chamar a função sem
passar nenhum argumento. O kwargs é um dicionário opcional de argumentos de
palavras-chave.
Exemplo
#!/usr/bin/python3
import _thread
import time
while 1:
pass
Saída
Quando o código acima é executado, produz o seguinte resultado -
Programa vai em um loop infinito. Você terá que pressionar ctrl-c para parar
O módulo de segmentação
O módulo de threading mais novo incluído no Python 2.4 oferece suporte de alto nível
muito mais poderoso para encadeamentos do que o módulo de encadeamento discutido
na seção anterior.
Além dos métodos, o módulo de threading possui a classe Thread que implementa o
threading. Os métodos fornecidos pela classe Thread são os seguintes -
run () - O método run () é o ponto de entrada para um thread.
Depois de criar a nova subclasse Thread , você pode criar uma instância dela e, em
seguida, iniciar um novo thread invocando o start () , que, por sua vez, chama o
método run () .
Exemplo
#!/usr/bin/python3
import threading
import time
exitFlag = 0
Resultado
Quando executamos o programa acima, ele produz o seguinte resultado -
Starting Thread-1
Starting Thread-2
Thread-1: Fri Feb 19 10:00:21 2016
Thread-2: Fri Feb 19 10:00:22 2016
Thread-1: Fri Feb 19 10:00:22 2016
Thread-1: Fri Feb 19 10:00:23 2016
Thread-2: Fri Feb 19 10:00:24 2016
Thread-1: Fri Feb 19 10:00:24 2016
Thread-1: Fri Feb 19 10:00:25 2016
Exiting Thread-1
Thread-2: Fri Feb 19 10:00:26 2016
Thread-2: Fri Feb 19 10:00:28 2016
Thread-2: Fri Feb 19 10:00:30 2016
Exiting Thread-2
Exiting Main Thread
Sincronizando Threads
O módulo de threading fornecido com o Python inclui um mecanismo de bloqueio
simples de implementar que permite sincronizar threads. Um novo bloqueio é criado
chamando o método Lock () , que retorna o novo bloqueio.
O método release () do novo objeto de bloqueio é usado para liberar o bloqueio quando
não é mais necessário.
Exemplo
#!/usr/bin/python3
import threading
import time
threadLock = threading.Lock()
threads = []
Saída
Quando o código acima é executado, produz o seguinte resultado -
Starting Thread-1
Starting Thread-2
Thread-1: Fri Feb 19 10:04:14 2016
Thread-1: Fri Feb 19 10:04:15 2016
Thread-1: Fri Feb 19 10:04:16 2016
Thread-2: Fri Feb 19 10:04:18 2016
Thread-2: Fri Feb 19 10:04:20 2016
Thread-2: Fri Feb 19 10:04:22 2016
Exiting Main Thread
empty () - O empty () retorna True se a fila estiver vazia; caso contrário, False.
full () - o full () retorna True se a fila estiver cheia; caso contrário, False.
Exemplo
#!/usr/bin/python3
import queue
import threading
import time
exitFlag = 0
Saída
Quando o código acima é executado, produz o seguinte resultado -
Starting Thread-1
Starting Thread-2
Starting Thread-3
Thread-1 processing One
Thread-2 processing Two
Thread-3 processing Three
Thread-1 processing Four
Thread-2 processing Five
Exiting Thread-3
Exiting Thread-1
Exiting Thread-2
Exiting Main Thread
O que é XML?
A XML (Extensible Markup Language) é uma linguagem de marcação muito semelhante
a HTML ou SGML. Isso é recomendado pelo World Wide Web Consortium e disponível
como padrão aberto.
API simples para XML (SAX) - Aqui, você registra retornos de chamada para
eventos de interesse e, em seguida, permite que o analisador prossiga pelo
documento. Isso é útil quando seus documentos são grandes ou você tem
limitações de memória, analisa o arquivo como ele lê a partir do disco e o
arquivo inteiro nunca é armazenado na memória.
O SAX obviamente não pode processar informações tão rápido quanto o DOM, ao
trabalhar com arquivos grandes. Por outro lado, usar o DOM exclusivamente pode
realmente matar seus recursos, especialmente se usado em muitos arquivos pequenos.
SAX é somente leitura, enquanto o DOM permite alterações no arquivo XML. Como
essas duas APIs diferentes literalmente se complementam, não há motivos para que
você não possa usá-las para projetos grandes.
Para todos os nossos exemplos de código XML, vamos usar um arquivo XML simples
movies.xml como uma entrada -
Seu ContentHandler lida com as tags e atributos específicos de seu (s) sabor (es) de
XML. Um objeto ContentHandler fornece métodos para manipular vários eventos de
análise. Seu analisador proprietário chama os métodos ContentHandler enquanto
analisa o arquivo XML.
O método make_parser
O método a seguir cria um novo objeto analisador e o retorna. O objeto analisador
criado será do primeiro tipo de analisador, o sistema encontra.
xml.sax.make_parser( [parser_list] )
O método de análise
O método a seguir cria um analisador SAX e o utiliza para analisar um documento.
O método parseString
Há mais um método para criar um analisador SAX e para analisar a cadeia XML
especificada .
Exemplo
#!/usr/bin/python3
import xml.sax
if ( __name__ == "__main__"):
# create an XMLReader
parser = xml.sax.make_parser()
# turn off namepsaces
parser.setFeature(xml.sax.handler.feature_namespaces, 0)
parser.parse("movies.xml")
Saída
Isso produziria o seguinte resultado -
*****Movie*****
Title: Enemy Behind
Type: War, Thriller
Format: DVD
Year: 2003
Rating: PG
Stars: 10
Description: Talk about a US-Japan war
*****Movie*****
Title: Transformers
Type: Anime, Science Fiction
Format: DVD
Year: 1989
Rating: R
Stars: 8
Description: A scientific fiction
*****Movie*****
Title: Trigun
Type: Anime, Action
Format: DVD
Rating: PG
Stars: 10
Description: Vash the Stampede!
*****Movie*****
Title: Ishtar
Type: Comedy
Format: VHS
Rating: PG
Stars: 2
Description: Viewable boredom
Para obter detalhes completos sobre a documentação da API SAX, consulte as APIs
padrão do Python SAX .
O DOM é extremamente útil para aplicativos de acesso aleatório. O SAX permite apenas
uma visualização de um bit do documento por vez. Se você estiver procurando por um
elemento SAX, não terá acesso a outro.
Aqui está a maneira mais fácil de carregar um documento XML rapidamente e criar um
objeto de minidom usando o módulo xml.dom. O objeto de minidom fornece um
método de analisador simples que cria rapidamente uma árvore DOM a partir do
arquivo XML.
A frase de exemplo chama a função parse (file [, parser]) do objeto minidom para
analisar o arquivo XML, designado por arquivo em um objeto da árvore DOM.
Exemplo
#!/usr/bin/python3
type = movie.getElementsByTagName('type')[0]
print ("Type: %s" % type.childNodes[0].data)
format = movie.getElementsByTagName('format')[0]
print ("Format: %s" % format.childNodes[0].data)
rating = movie.getElementsByTagName('rating')[0]
print ("Rating: %s" % rating.childNodes[0].data)
description = movie.getElementsByTagName('description')[0]
print ("Description: %s" % description.childNodes[0].data)
Saída
Isso produziria o seguinte resultado -
PyQt - Essa também é uma interface Python para uma biblioteca popular de Qt
de plataforma cruzada. O TutorialsPoint tem um tutorial muito bom sobre o
PyQt aqui .
JPython - O JPython é uma porta Python para Java que fornece aos scripts
Python acesso contínuo às bibliotecas de classes Java na máquina local
http://www.jython.org .
Existem muitas outras interfaces disponíveis, que você pode encontrá-las na rede.
Programação Tkinter
Tkinter é a biblioteca GUI padrão para Python. O Python, quando combinado com o
Tkinter, fornece uma maneira rápida e fácil de criar aplicativos GUI. O Tkinter fornece
uma poderosa interface orientada a objetos para o kit de ferramentas Tk GUI.
Criar uma aplicação GUI usando o Tkinter é uma tarefa fácil. Tudo o que você precisa
fazer é executar as etapas a seguir -
Digite o loop de eventos principal para tomar medidas contra cada evento
acionado pelo usuário.
Exemplo
#!/usr/bin/python3
import tkinter # note that module name has changed from Tkinter in Python 2 to tkinter in Pyth
top = tkinter.Tk()
# Code to add widgets will go here...
top.mainloop()
Widgets Tkinter
O Tkinter fornece vários controles, como botões, rótulos e caixas de texto usados em
um aplicativo GUI. Esses controles são comumente chamados de widgets.
Botão
1 O widget Button é usado para exibir botões em seu aplicativo.
Tela de pintura
2 O widget Tela é usado para desenhar formas, como linhas, ovais, polígonos e
retângulos, no aplicativo.
Botão de verificação
Entrada
4 O widget Entrada é usado para exibir um campo de texto de linha única para
aceitar valores de um usuário.
Quadro, Armação
Rótulo
6 O widget Label é usado para fornecer uma legenda de linha única para outros
widgets. Também pode conter imagens.
Listbox
7 O widget Caixa de listagem é usado para fornecer uma lista de opções para
um usuário.
Botão de menu
8 O widget Menubutton é usado para exibir menus em seu aplicativo.
Cardápio
9 O widget Menu é usado para fornecer vários comandos para um usuário. Esses
comandos estão contidos no Menubutton.
10 mensagem
O widget Mensagem é usado para exibir campos de texto de múltiplas linhas
para aceitar valores de um usuário.
Botao de radio
Escala
12 O widget Escala é usado para fornecer um widget de controle deslizante.
Barra de rolagem
Texto
14 O widget de texto é usado para exibir texto em várias linhas.
Nível superior
15 O widget Toplevel é usado para fornecer um contêiner de janela separado.
Caixa giratória
16 O widget Spinbox é uma variante do widget Tkinter Entry padrão, que pode
ser usado para selecionar um número fixo de valores.
PanedWindow
LabelFrame
tkMessageBox
19 Este módulo é usado para exibir caixas de mensagem em seus aplicativos.
Atributos padrão
Vejamos como alguns dos atributos comuns, como tamanhos, cores e fontes, são
especificados.
Dimensões
Cores
Fontes
Âncoras
Estilos de alívio
Bitmaps
Cursores
Gerenciamento de geometria
Todos os widgets do Tkinter têm acesso aos métodos específicos de gerenciamento de
geometria, que têm a finalidade de organizar widgets em toda a área do widget pai. O
Tkinter expõe as seguintes classes do gerenciador de geometria: pacote, grade e local.
Além disso, supõe-se que você tenha um bom conhecimento de C ou C ++ para gravar
qualquer extensão do Python usando a programação C.
Certifique-se de incluir o Python.h antes de qualquer outro cabeçalho que você possa
precisar. Você precisa seguir os includes com as funções que deseja chamar do Python.
As funções C
As assinaturas da implementação C de suas funções sempre assumem uma das três
formas a seguir -
Cada uma das declarações anteriores retorna um objeto Python. Não existe uma função
void no Python como existe em C. Se você não quer que suas funções retornem um
valor, retorne o equivalente C do valor None do Python . Os cabeçalhos do Python
definem uma macro, Py_RETURN_NONE, que faz isso para nós.
Os nomes das suas funções C podem ser o que você quiser, pois nunca são vistos fora
do módulo de extensão. Eles são definidos como função estática .
Esta é uma função do Python chamada func dentro do módulo do módulo . Você
colocará ponteiros em suas funções C na tabela de métodos para o módulo que
normalmente vem em seguida no seu código-fonte.
struct PyMethodDef {
char *ml_name;
PyCFunction ml_meth;
int ml_flags;
char *ml_doc;
};
ml_meth - Este é o endereço de uma função que possui qualquer uma das
assinaturas descritas na seção anterior.
Isso também pode ter um valor de METH_NOARGS que indica que você
não deseja aceitar nenhum argumento.
ml_doc - Esta é a docstring para a função, que pode ser NULL se você não tiver
vontade de escrever uma.
Essa tabela precisa ser terminada com um sentinela que consiste em valores NULL e 0
para os membros apropriados.
Exemplo
Para a função acima definida, temos a seguinte tabela de mapeamento de método -
A função de inicialização
A última parte do seu módulo de extensão é a função de inicialização. Essa função é
chamada pelo interpretador Python quando o módulo é carregado. É necessário que a
função seja denominada init Module , onde Module é o nome do módulo.
A função de inicialização precisa ser exportada da biblioteca que você irá construir. Os
cabeçalhos do Python definem PyMODINIT_FUNC para incluir os encantamentos
apropriados para que isso aconteça no ambiente específico em que estamos
compilando. Tudo o que você precisa fazer é usá-lo ao definir a função.
Sua função de inicialização C geralmente tem a seguinte estrutura geral -
PyMODINIT_FUNC initModule() {
Py_InitModule3(func, module_methods, "docstring...");
}
#include <Python.h>
PyMODINIT_FUNC initModule() {
Py_InitModule3(func, module_methods, "docstring...");
}
Exemplo
Um exemplo simples que faz uso de todos os conceitos acima -
#include <Python.h>
void inithelloworld(void)
{
Py_InitModule3("helloworld", helloworld_funcs,
"Extension module example!");
}
Aqui, a função Py_BuildValue é usada para construir um valor Python. Salve o código
acima no arquivo hello.c. Nós veríamos como compilar e instalar este módulo para ser
chamado a partir do script Python.
Importando Extensões
Depois de instalar suas extensões, você poderá importar e chamar essa extensão em
seu script Python da seguinte maneira:
Exemplo
#!/usr/bin/python3
import helloworld
print helloworld.helloworld()
Saída
Isso produziria o seguinte resultado -
A tabela de métodos contendo uma entrada para a nova função ficaria assim:
Você pode usar a função API PyArg_ParseTuple para extrair os argumentos do ponteiro
de um PyObject passado para sua função C.
Saída
Compilar a nova versão do seu módulo e importá-lo permite chamar a nova função com
qualquer número de argumentos de qualquer tipo -
A função PyArg_ParseTuple
Aqui está a assinatura padrão para a função PyArg_ParseTuple -
Esta função retorna 0 para erros e um valor diferente de 0 para sucesso. Tuple é o
PyObject * que foi o segundo argumento da função C. Aqui o formato é uma cadeia C
que descreve argumentos obrigatórios e opcionais.
z# char * + int Como s #, também aceita None (define C char * para NULL).
Valores de retorno
Py_BuildValue recebe uma string de formato muito parecida com a que
PyArg_ParseTuple faz. Em vez de passar os endereços dos valores que você está
construindo, você passa os valores reais. Aqui está um exemplo mostrando como
implementar uma função add -
Você pode retornar dois valores da sua função da seguinte maneira. Isso seria
capturado usando uma lista em Python.
A função Py_BuildValue
Aqui está a assinatura padrão para a função Py_BuildValue -
Aqui o formato é uma string C que descreve o objeto Python a ser construído. Os
seguintes argumentos de Py_BuildValue são valores C dos quais o resultado é
construído. O resultado do PyObject * é uma nova referência.
A tabela a seguir lista as cadeias de código comumente usadas, das quais zero ou mais
são unidas em um formato de seqüência de caracteres.
z# char * + int Como s #, também aceita None (define C char * para NULL).