Quelques good practices pour utiliser les chaines en python ou comment bien utiliser print :

print permet d'afficher un peu tout et n'importequoi :

une chaine :

>>> print "coucou"
coucou

l'instance d'un objet :

>>> class Truc:
...     pass
... 
>>> t = Truc()
>>> print t
<__main__.Truc instance at 0x83b8c0>

une fonction (quid de l'interet..)

>>> def mafunc():
...     pass
... 
>>> print mafunc
<function mafunc at 0x821de8>

maintenant, l'interet ce serait plutôt d'utiliser la concatenation, et le “formatage” comme printf le fait

le petit opérateur + pour concatener :

>>> print "gcu " + " is" + " fun"
gcu  is fun
>>> t = "gcu " + " is" + " fun"
>>> t.title()
'Gcu  Is Fun'

puis le formatage avec % comme printf :

>>> print " %s %d" % ("machaine ", 42)
 machaine  42

on peut aussi filer un dict :

>>> _dict = {'inch' : 'c', 'allah' : '42', 'mollah' : 25}
>>> print "%(inch)s : %(allah)s : %(mollah)d"
%(inch)s : %(allah)s : %(mollah)d
>>> print "%(inch)s : %(allah)s : %(mollah)d" % _dict
c : 42 : 25

ah ouais, vu l'indentation de python, pour creer un truc multiligne, c'est un peu compliqué, mais on peut utiliser les triples quotes

>>> t = """Ma superbe  
... longue phrase    
... un peu multiligne"""
>>> print t
Ma superbe 
longue phrase 
un peu multiligne

Mais regardons plus en detail cet exemple pour voir qu'en fait une chaine est un objet 'str'

>>> type(t)
<type 'str'>

et quecet objet a deux methodes 'magiques' comme __str__ et __repr__

>>> dir(t)
['__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']

soit. Ces deux méthodes sont differentes puisque __repr__ est la representation de l'objet, alors que __str__ est la convi methode appellée par 'print' exemple avec la chaine triple quotée de toute à l'heure :

>>> t = """Ma superbe  
... longue phrase    
... un peu multiligne"""
>>> t
'Ma superbe \nlongue phrase \nun peu multiligne'
>>> print t
Ma superbe 
longue phrase 
un peu multiligne

Quelques explications : 't' tout seul appelle t.__repr__() alors que print de façon induite __str__()

Bon voila pour ce premier guide un peu rapide, mais n'hesitez pas a l'ameliorer.

todelete/string_et_templating.txt · Last modified: 2010/01/12 13:29 (external edit)
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0