====== Python Cheat Sheet ======
Ceci est un recueil de précisions syntaxiques utiles à l'écriture d'un script banal. (Ni exhaustif, ni explicatif)
===== Entête (script)=====
* Shebang #!/usr/bin/env python
* Encodage # -*- coding: utf-8 -*-
* Commentaire #
* Import import nom_module
ou from sys import argv
NB: cette deuxième manière évite d'avoir à retapper le nom du module en permanence
* Arguments (passés au script)
* Argv: (nécessite l'import du module ''sys'')argument_1=sys.argv[1]
(NB: argv[0] renvoie le nom du script)
* Il existe aussi une implémentation de getopt (//cf//. [[http://diveintopython.adrahon.org/scripts_and_streams/command_line_arguments.html|Dive into python - CLI]])
===== Packaging =====
* Encapsulation pour librairie autonome if __name__ == "__main__":
main()
===== Variables =====
* Listes (mutable)a=[1, 'c']
* Sets (mutable) fournit une interface implémentant les ensembles mathématiques (union, réunion, intersection, etc)
* Ajouter un élément en fin de liste: a.append('d')
* Tuple (immutable, mais plus performant) a=('b', 12)
* Matrices: installer et importer numpy ([[http://numpy.scipy.org/]])
* Casts
* String str(2)
* Integer int('2')
* Tuple tuple(['a', 2])
* Liste list(('b', 1))
* String délimité par ''''' ou ''"''
* Sur plusieurs lignes """Ceci est
une string
sur plusieurs lignes"""
* Concaténation: ''+'' 'Python'+'Cheat Sheet'
* Inclure des variables print "Il y a %d %s dans mon sac" %(nb_fruit, type_fruit)
* Enlever un retour à la ligne en fin de ligne string.rstrip('\n')
* Traitement de fichiers CSV:
* Séparer: data=string.split(';')
* Rassembler: ';'.join(data)
* Booleans (''True'' or ''False'')
===== IO =====
* Ouvrir un fichier #'r'=read, 'w'=write, 'a'=append, 'r+'=read & write
fichier=open('/path/to/file','r')
# il faut alors fermer le fichier
# une métode qui referme le fichier proprement:
with open('/tmp/workfile', 'r') as f:
* ''IOError'' (erreur d'entrée sortie)
* Sortie vers le shell: print 'hello'
* Prompt au shell: foo=raw_input("The Ultimate Question of Life, the Universe, and Everything")
NB: il existe également input(), avec laquelle python essaie de deviner le type de la variable entrée. raw_input() se contente de mettre ça dans une string.
Pour travavailler avec les chemins de fichiers : ''os.path'' et notamment ''os.path.join''.
===== Structure de code =====
* Boucle ''for'' #pour i de 1 à 5
for i in range(1,5):
instruction1
instruction2
* Opérateur ''in'': test permettant de vérifier si un élément est présent dans un itérable (une liste, un tuple, un fichier, etc).if 'x' in 'xml':
instruction
for line in fichier:
instruction
* ''Switch''/''case'': en 2.x python ne possède pas de structure switch, on doit se débrouiller avec des ''if ... elif ...'' ou avec la structure suivante:options = {0 : zero,
1 : sqr,
4 : sqr,
9 : sqr,
2 : even,
3 : prime,
5 : prime,
7 : prime,
}
def zero():
print "You typed zero.\n"
def sqr():
print "n is a perfect square\n"
def even():
print "n is an even number\n"
def prime():
print "n is a prime number\n"
Que l'on peut appeler grâce à:options[num]()
Source: [[http://bytebaker.com/2008/11/03/switch-case-statement-in-python/|bytebaker.com]]
* ''break'' permet de sortir de la boucle courrante
* ''continue'' permet de terminer l'itération courrante (passer directement à la suivante, mais sans sortir de la boucle)
* ''try ... except ... raise ... else ... finally'': Gestion des exceptionstry:
instructions
except Error:
instructions
''else'' exécute son bloc si toutes les instructions du ''try'' ont réussi; ''finally'' s'éxécute dans tous les cas.
* Arrêter le script quit()
* Classe: class formatted_string(parent_class):
* Fonction: def function_name(arg1,arg2=10,arg3='foo'):
NB: les arguments ''arg2'' et ''arg3'' sont optionnels
* Expansion des arguments dans un appel de fonction:args = (1, 2, 3)
function_name(*args)
kwargs = {'arg1': [], 'arg2': 10, 'arg3': 'foo'}
function_name(**kwargs)
* Fonction anonyme (jettable, pour usage unique):lambda arg1, arg2: arg1 + arg2
Cf [[http://docs.python.org/tutorial/controlflow.html#lambda-forms|doc officielle]]
* Test: if ((test1) & (test2))|(test3):
===== RegExps =====
* [[http://docs.python.org/library/re.html|Doc officielle: module re]]
* [[http://www.amk.ca/python/howto/regex/|HowTo avec exemple]]