diff --git a/python.html b/python.html index e215725..3777372 100644 --- a/python.html +++ b/python.html @@ -66,6 +66,42 @@
Executando scripts Python:
+ +
+python meuscript.py
+
+ Uma variável do tipo "imutável" não pode ser alterada depois de - criada. Tentar modificar a variável vai criar uma nova instância.
+ criada. Tentar modificar o conteúdo da variável vai criar uma nova + instância.Uma variável do tipo "mutável" é o contrário: tentar alterar vai alterar o objeto, não criar um novo.
@@ -105,21 +150,30 @@ Type "help", "copyright", "credits" or "license" for more information.A importância disto será visto mais pra frente, mas tenha isso em mente.
... ainda...
+ +Existem tipos que são, na verdade, objetos e tem toda uma gama + de funções para alterar/manipular/editar o conteúdo de uma variável.
+ +Outros são tipos simples que não são objetos.
+bool
: Tipo booleano.
bool
: Tipo booleano. Tipo simples.
-a = True
-b = False
+>>> a = True
+>>> b = False
int
: Um inteiro.
int
: Um inteiro. Simples.
-a = 1
+>>> a = 1
@@ -129,56 +183,56 @@ a = 1
float
: Um número com ponto flutuante.
float
: Um número com ponto flutuante. Simples.
-a = 1.1
-b = 1.0
+>>> a = 1.1
+>>> b = 1.0
str
: Strings. É um objeto imutável.
str
: Strings. Objeto imutável.
-a = 'Python'
-b = "Python"
-c = """Python
- Rocks!"""
+>>> a = 'Python'
+>>> b = "Python"
+>>> c = """Python
+>>> Rocks!"""
unicode
: Strings em Unicode. É um objeto imutável.
unicode
: Strings em Unicode. Objeto imutável.
-a = u'Python'
+>>> a = u'Python'
list
: Listas. É um objeto mutável.
list
: Listas. Objeto mutável.
-a = [1, 2, 'Python', ['Outra lista']]
+>>> a = [1, 2, 'Python', ['Outra lista']]
dict
: Um dicionário/objeto/mapa. É um objeto mutável.
dict
: Um dicionário/objeto/mapa. Objeto mutável.
-a = {'Python': 'Rocks',
- 1: 1.0}
+>>> a = {'Python': 'Rocks',
+>>> 1: 1.0}
tuple
: Um conjunto de elementos. É um objeto imutável.
tuple
: Um conjunto de elementos. Objeto imutável.
-a = ('Python', 1)
-b = (2,)
+>>> a = ('Python', 1)
+>>> b = (2,)
if [condição]
-if a = 1:
- b = 2
-c = 3
+>>> if a == 1:
+>>> b = 2
+>>> c = 3
while [condição]
-a = 1
-while True:
- a += 1
- if a > 10:
- break
+>>> a = 1
+>>> while True:
+>>> a += 1
+>>> if a > 10:
+>>> break
@@ -240,9 +294,9 @@ while True:
for [iterável]
-soma = 0
-for valor em [345, 123, 123, 34]:
- soma += valor
+>>> soma = 0
+>>> for valor em [345, 123, 123, 34]:
+>>> soma += valor
@@ -276,8 +330,8 @@ for valor em [345, 123, 123, 34]:
Strings como iteráveis:
-for l in 'Python':
- print l
+>>> for l in 'Python':
+>>> print l
@@ -285,10 +339,98 @@ for l in 'Python':
Dicionários como iteráveis:
-for key in {'Python': 'Rocks', 'Parrot': 'Dead', 'Favorite Color': 'Blue'}:
- print key
+>>> d = {'Python': 'Rocks', 'Parrot': 'Dead', 'Favorite Color': 'Blue'}
+>>> for key in d:
+>>> print key, d[key]
+
+ Ou ainda:
+ +
+>>> d = {'Python': 'Rocks', 'Parrot': 'Dead', 'Favorite Color': 'Blue'}
+>>> for (key, value) in d.iteritems():
+>>> print key, value
+
+ Slice é uma "extensão" de indíces de acesso.
+ +Com slices, é possível "cortar" iteráveis, retornando + um novo iterável.
+
+iterável[start:end:step]
+
+
+ (end
é exclusívo.)
+>>> a = [1, 2, 3, 4]
+>>> print a[1:2]
+[2]
+
+ Deixar um índice em branco indica que:
+ +start
= 0end
= len(iterável)step
= 1
+>>> a = [1, 2, 3, 4]
+>>> print a[:2]
+[1, 2]
+
+ Índices negativos começam do final do iterável.
+ +
+>>> a = [1, 2, 3, 4]
+>>> print a[1:-1]
+[2, 3]
+
+ Lembre-se que strings também são iteráveis.
+ +
+>>> a = 'Python Rocks'
+>>> print a[7:-1]
+'Rock'
+
+ Deixar os dois índices em branco cria uma cópia "flat".
+
+>>> a = [1, 2, 3, 4]
+>>> print a[:]
+[1, 2, 3, 4]
+
+
+ Para fazer uma cópia de uma lista com outros
+ iteráveis internos, existe o módulo deepcopy
.
def [nome_da_função]([parâmetro], [parâmetro]):
def [nome_da_função]([parâmetro], [parâmetro], ...):
-def funcao(a, b, c):
- return (a + b) / c
+>>> def funcao(a, b, c):
+>>> return (a + b) / c
Ok, algumas coisas a serem vistas antes de entrar em + classes:
+Existem dois tipos de classes: old-style e new-style.
+ +A diferença é que classes "new-style" sempre extendem da
+ classe object
, enquanto que "old-style" não
+ extendem ninguém.
Por baixo dos panos, "new-style" e "old-style" funcionam + de forma diferente, mas isso não é visível para o + programador.
+Para todos os casos e efeitos, "old-style" não deve + mais ser usado.
+ +No Python 3, não existem mais
+ classes "old-style", mas a sintaxe removeu a necessidade
+ de extender object
.
(Ou seja, no Python 3 uma classe + se parece com o "old-style" do Python 2.)
+this
/self
não é uma variável
+ implícita da classe: Ela tem que constar sempre
+ na definiçào do método.
O construtor da classe é chamado __init__
.
Não existe função para o destrutor.
+ +Existem ainda outras funções (como o
+ __getitem__
comentado anteriormente), mas
+ não vamos falar sobre elas nesse momento.
+>>> class MyClasse(object):
+>>> def __init__(self):
+>>> self.valor = 0
+>>> def show(self):
+>>> print self.valor
+
+ Para instanciar uma classe, basta chamar a classe + como se fosse uma função.
+ +
+>>> my = MyClasse()
+>>> my.show()
+0
+
+ Se o construtor tiver parâmetros, estes devem ser + passados durante a instanciação, como se a "função" + classe tivesse parâmetros.
+ +
+>>> class MyClasse(object):
+>>> def __init__(self, name):
+>>> self.name = name
+>>> def show(self):
+>>> print self.name
+
+>>> my = MyClasse('Julio')
+>>> my.show()
+Julio
+
+