logo
Contato | Sobre...        
rebarba rebarba

Rodrigo Strauss :: Blog


Tutorial informal de Python, parte 2
>>> # Essa é a segunda parte do tutorial informal de Python.
>>> # Só que dessa vez, o próprio tutorial é escrito em Python. 
>>> # Para acompanhar, é só abrir o console do Python e digitar.
>>>
>>> # As variáveis em python não tem tipo definido, elas são
>>> # somente referências para objetos
>>> a = 10
>>> type(a)
<type 'int'>
>>> b = 20
>>> type(b)
<type 'int'>
>>> c = 2.0
>>> type(c)
<type 'float'>
>>> d = 12345678901234567890123456789012345678901234567890123456789
0123456789012345678901234567890
>>> type(d)
<type 'long'>
>>> # como visto, o tipo é inferido na declaração. Outro recurso interessante é que o nosso número
>>> # gigantesco foi abrigado sem problemas pela variável d.
>>> # Operações entre tipos numéricos diferentes são permitidos:
>>> d + a
123456789012345678901234567890123456789012345678901234567890123456789
012345678901234567900L
>>> c + d
1.2345678901234568e+089
>>> # caso você já tenha esquecido das variáveis (afinal, a, b, c, d são nomes realmente intuitivos),
>>> # vai aqui um lembrete:
>>> a,b,c,d
(10, 20, 2.0, 12345678901234567890123456789012345678901234567890123456789012345
6789012345678901234567890L)
>>> # mas tipos não relacionados não são misturados (para não perder a piada: isso não é VB6 :-))
>>> s = 'python, a linguagem que não te atrapalha'
>>> type(s)
<type 'str'>
>>> s + a
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects
>>> s + d
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'long' objects
>>> # Eu acho desnecessário falar sobre expressões matemáticas em Python, é bem parecido com as outras
>>> # linguagens. E como esse projeto de tutorial é voltado para programadores, não vou ficar chateando
>>> # ninguém.
>>>
>>> # Vamos trabalhar um pouco com manipulação de strings.
>>> s
'python, a linguagem que n\xe3o te atrapalha'
>>> type(s)
<type 'str'>
>>> # Você deve ter notado que 'não' virou 'n\xe3o', porque o padrão é avaliar a expressão como UTF8.
>>> # Você resolve esse problema usando o comando print:
>>> print s
python, a linguagem que não te atrapalha
>>> # String (como quase tudo em Python) é um objeto. Vamos ver quais os métodos ele suporta:
>>> dir(s)
['__add__', '__class__', '__contains__',
 '__delattr__', '__doc__', '__eq__', '__ge__', '__getattribute__', 
'__getitem__', '__getnewargs__', '__getslice__', 
'__gt__', '__hash__', '__init__', '__le__', '__len__', 
'__lt__', '__mod__', '__mul__', 
'__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__',
'__rmul__', '__setattr__', '__str__', 
'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 
'expandtabs', 'find', 'index', 
'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 
'join', 'ljust', 'lower', 
'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 
'rstrip', 'split', 'splitlines', 
'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
>>> # Eu também gostei BASTANTE desse recurso. Tem outro muito bom. Veja isso:
>>> s.islower.__doc__
'S.islower() -> bool\n\nReturn True if all cased characters in S are lowercase and there is\nat least one 
cased character in S, False otherwise.'
>>> # é bom não esquecer do print...
>>> print s.islower.__doc__
S.islower() -> bool
 
Return True if all cased characters in S are lowercase and there is
at least one cased character in S, False otherwise.
>>> # todos os métodos, propriedades ou funções que começam e terminam com __ são 'mágicos'.
>>> # Você pode ver alguns deles na lista de atributos do objeto s:
>>> s.__class__
<type 'str'>
>>>
>>> # Vamos à algumas funcionalidades que o tipo string fornece.
>>> s1 = 'python'
>>> s2 = "C++"
>>> # Aspas simples e duplas são aceitas, não faz diferença
>>> s3 = s1 + '\n' + s2
>>> print s3
python
C++
>>> # a barra invertida é escape igual ao C/C++
>>> print '\tteste\n\n\t\tteste\n'
    teste

 
        teste
 
>>> # se você quer usar a barra invertida literalmente, coloque o prefixo 'r'na string
>>> print r'c:\python25\python.exe'
c:\python25\python.exe
>>> # Algumas funções úteis:
>>> '1,2,3,4,5,6,7,8,9,0'.split(',')
['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
>>> # O retorno disso é uma lista, veremos mais sobre isso depois.
>>> # Mas o recurso mais interessante com certeza é 'indexing and slicing'. Veja isso:
>>> print s3
python
C++
>>> s3[0] # indexação começando pelo zero, como em C/C++
'p'
>>> s3[-1] # usando números negativos como índice, começamos pelo final
'+'
>>> s3.find('\n') # onde está a quebra?
6
>>> s3[s3.find('\n')]
'\n'
>>> # Vamos agora ao fatiamento de strings:
>>> s3[0:6]
'python'
>>> # Mas como começamos do início, o primeiro número é opcional:
>>> s3[:6]
'python'
>>> # Lembra o índice negativo? Também ajuda aqui:
>>> s3[-3:]
'C++'
>>> # Vamos separar as palavras 'python' e 'C++' pela quebras de linhas
>>> pos = s3.find('\n')
>>> print s3[:pos], '-',  s3[pos+1:]
python - C++

Em 16/07/2007 23:07, por Rodrigo Strauss


  
 
 
Comentários
insanity | em 17/07/2007 | #
Legal ... , estava estudando python, a 2 semanas atraz ;-)
É bem facil de aprender hehe ...
Davi Mota | em 04/08/2008 | #
print s.islower.__doc__

Sensacional isso..

referencia imediata ..

sem comentarios.


rs

parabens !!
rebarba rebarba
  ::::