====== 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 argvNB: 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':
    instructionfor 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 + arg2Cf [[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]]