====== 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]]