Chrooter apache
Ajout disque dur
Ajout carte
Audit des disques durs
Gestion des peripheriques
Disquette d'installation
Ajout d'un scanner
Graver en ligne de commande
Astuces
Astuces en Bash
Configuration reseau
Dns
Serveur cvs
Proxy squid 
Installation serveur ftp
Installation qmail 
Installation serveur courrier sous debian
Outil TCP/IP 
Le serveur samba
Connexion a distance securisee
Client/serveur vnc
Configurer apache
Dyndns
Chiffrer un fichier/dossier
Securiser son poste
Mur pare feu pas a pas
Authentification ht-access
Surveillance de serveur CACTI
Snort
Snort-inline
Securiser Apache avec mod_security
Filtrage squid/squidguard/dansguardian
Auditer son site web
Sécuriser son linux
Installer un Lamp avec ssl
Contrer les scans de ports
Traitement anti-spam
Installer/Utiliser tripwire
Utilisation de lilo
Les commandes Linux
Le multi-tache
Le crontab
Exploration de la configuration
Quotas
Messagerie
Installer une application
Debugger ses applications
Le format RPM
Mise a jour du noyau
Qemu
Tour d'horizon des principaux p2p
Récupération du système
Bips d'un pc
Astuces windows
Table Ascii
Lamerland
Conversion de fichiers musicaux
hakin9
Secureroot.com
Hackerthreads.org
Defcon
Hackerlounge
Les derniers exploits
Tous les codes sources
Securite sous Linux
Les logiciels libres quotidiens
Ezine divers
Madchat
Textes divers
Archives
 
Toutes les traductions
Toutes les traductions
Hackin9

Il y a actuellement 3 visiteurs connectés sur le site !

Google
Python rapide
Python rapide

 

Introduction
caractéristiques
Installation
Syntaxe
Type de données
Contrôle des flux
Fonctions
Classes
Exceptions
Importation
fichier d'entrée/sortie
Divers

 

Introduction

Ce tutorial Python suppose que vous connaissiez déjà les rudiments de la programmation , les bases seront abordées de manière concise et cependant rationnelle. Python est un langage de programmation interprété, multi-paradigme. Il autorise la programmation impérative structurée, orientée objet, et fonctionnelle.

Caractéristiques

Python est fortement typé , vous n'avez donc pas à déclarer des variables, il est sensible à la casse et orienté object.

Installation

Si vous pouvez saisir python dans le terminal de votre distribution ,c'est donc que Python est déjà installé. i Python n'est pas installe, vous trouverez la dernière version de Python sur la page de téléchargement du site officiel : http://www.python.org/download/. Il est cependant recommande d'utiliser le paquetage propose par votre distribution (.deb, .rpm, .tgz ou autre) afin de garder un système cohérent.
ON peut lancer python par la ligne de commande (syntaxe : python votre_commande + entrée)
ou bien en créant un script avec votre éditeur préféré , avec une extension .py
Vous pouvez maintenant interpreter ce fichier en tapant "python test.py" dans un terminal.

Syntaxe

Python ne comporte pas de caractères terminaux obligatoires et les blocs de code sont indiqués grâce à l'indentation. Les fonctions Python n'ont pas de begin ou end explicites, ni d'accolades qui pourraient marquer là ou commence et ou se termine le code de la fonction. Le seul délimiteur est les deux points («:») et l'indentation du code lui-même. les commentaires commencent avec le signe (#) et se composent d'une seule ligne . Les valeurs sont assignées avec le signe '"=") et le test d'égalité utilise les signes ("=="). IL est possible d'incrémenter ou décrémenter des valeurs en usant de s opérateurs += et -= . Cela fonctionne pour de nombreux types de données. Vous pouvez également utiliser plusieurs variables sur une ligne :

intMyVar = 3 intMyVar += 2 intMyVar -= 1 strMyVar = "Hello" strMyVar += " world." # This swaps the variables in one line(!). intMyVar, strMyVar = strMyVar, intMyVar

Type de données

Les types de données disponibles sont des listes ,des tuples ,des entiers ,des réels , des chaînes , en voici quelques exemples :
Les entiers peuvent être courts (par défaut) ou longs (longueur illimitée). La déclaration d'un long, se fera en ajoutant un L à la fin du nombre (555555555555L). Les opérations sur les grands entiers sont l'une des grandes qualités du langage. Les entiers en octales et hexadécimales sont aussi reconnus.

>>> 0x3f #entier en héxa 63 >>> 077 #entier en octale 63 >>>

Les réels se déclarent de la manière suivant :

>>> x=1.3
>>> print x
1.3
>>> x=1.0
>>> print x
1.0
>>> x=float()
>>> print x
0.0
>>>


Les réels permettent aussi d'utiliser des exposants sous la forme :

>>> 3E2
300.0
>>> 3e2
300.0
>>> 3e-2
0.029999999999999999
>>> 

Le type caractère n'existe pas par rapport à d'autres langages(C). la chaîne de caractères est une séquence de caractères non modifiable directement :


>>> var="bongour"
>>> print var
bongour
>>> var[3]=j
Traceback (most recent call last):
File "", line 1, in ?
NameError: name 'j' is not defined
>>> var=var[0:3]+"j"+var[4:]
>>> print var
bonjour
>>>


Les chaînes peuvent être déclarées avec un simple guillemet :

>>> d='bonjour'
>>> print d
bonjour
>>> 

Ils peuvent aussi être avec un double guillemet, cela est utile quand nous pouvons avoir une apostrophe dans le texte rentré :

>>> d='bonjour'
>>> print d
bonjour
>>> d="bonjour"
>>> print d
bonjour
>>> d="aujourd'hui"
>>> print d
aujourd'hui
>>> d='aujourd'hui'
File "", line 1
d='aujourd'hui'
^ SyntaxError: invalid syntax
>>>


L'emploi de triple guillemet est possible si nous voulons rentrer un texte sur plusieurs lignes :


>>> d="""ma chaîne
... est sur plusieurs
... lignes"""
>>> print d
ma chaîne
est sur plusieurs
lignes
>>>

Les tuples sont des collections de valeurs, non modifiable directement :

>>> x=(1,2)
>>> x[0]
1
>>> x[0]=2
Traceback (most recent call last):
  File "", line 1, in ?
TypeError: object doesn't support item assignment
>>> x=(2,x[1])
>>> print x
(2, 2)
>>> 

Ils peuvent être très pratique dans la sauvegarde de données, car ils peuvent contenir n'importe quel genre d'objet et ne sont pas modifiables en affectation, ce qui permet d'intégrer une certaine intégrité ou rigueur :

>>> tuples=(0,3.14,'Bonjour')
>>>

Les listes
La seule différence que nous pouvons trouver avec les tuples c'est le fait que les listes sont modifiables directement avec l'indexation :

>>> L=[2,2,3,4]
>>> print L
[2, 2, 3, 4]
>>> L[0]=1
>>> print L
[1, 2, 3, 4]
>>> 

Les dictionnaires
Le dictionnaire est la représentation d'une liste mais indexé pour une recherche ultra rapide suivant la valeur d'indexe passé. Les valeurs ne peuvent être atteinte qu'en donnant la clé d'indexation. Un exemple va nous éclairer sur son mécanisme :

>>> dico={1:'monpremier',2:'mondeuxieme',4:'montroisieme'}
>>> dico[1]
'monpremier'
>>> dico[3] #erreur car la clé '3' n'existe pas, il ne vas pas chercher le troisième
Traceback (most recent call last):
  File "", line 1, in ?
KeyError: 3
>>> dico[4] #va chercher la valeur représenté par la clé et non le quatrième
'montroisieme'
>>> 

Nous pouvons affecté un dictionnaire selon le même mécanisme :

>>> dico={'notemax':10,'notemin':0}
>>> dico['notemax']
10
>>> dico[1] #erreur car pas de clé nommé '1'
Traceback (most recent call last):
File "", line 1, in ?
KeyError: 1
>>> dico['notemax']=20 #affectation car clé présente
>>> print dico
{'notemax': 20, 'notemin': 0}
>>> dico['moyenne']=10 #ajout car clé non présente
>>> print dico
{'notemax': 20, 'moyenne': 10, 'notemin': 0}
>>>

Controle des flux

Les déclarations de controle de flux se font avec if, et for.Utilisez for pour énumérer les éléments d'une liste . Pour obtenir une liste de nombres , employez range().


lstRange = range(10)
>>> print lstRange
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for intNumber in lstRange:
# Check if intNumber is one of
# the numbers in the tuple.
if intNumber in (3, 4, 7, 9):
# "Break" terminates a for without
# executing the "else" clause.
break
else:
# "Continue" starts the next iteration
# of the loop. It's rather useless here,
# as it's the last statement of the loop.
continue
else:
# The "else" clause is optional and is
# executed only if the loop didn't "break".
pass # Do nothing

if lstRange[1] == 2:
print "1 == 2"
elif lstRange[2] == 3:
print "3 == 4"
else:
print "Dunno"

while lstRange[1] == 1:
pass

Fonctions

Les fonctions sont déclarées avec le mot "def". Des arguments optionnels sont ajoutés dans la déclaration de la fonction après les arguments obligatoires en leur assignant une valeur par défaut. Les fonctions peuvent retourner un tuple (et en utilisant un tuple vous pouvez effectivement avoir plusieurs valeurs en retour). Les fonctions usuelles tiennent dans une seule déclaration. Des paramètres sont passés en référence, mais des types changeants (tuples, listes, interieurs, chaines, etc) ne peuvent être modifiés :
# arg2 and arg3 sont facultatifs, ils ont leur valeur par défaut# si une des valeurs n'est pas passée (100 et "test").

def fnMyFunction(arg1, arg2 = 100, arg3 = "test"):
    return arg3, arg2, arg1
 
ret1, ret2, ret3 = fnMyFunction("Argument 1", arg3 = "Named argument")
 
fnVariable = lambda x: x + 1
>>> print fnVariable(1)
2

Classes

Python supporte des formes limitées de multiple héritage dans les classes. Des variables privées et des méthodes peuvent être déclarées en ajoutant au moins deux soulignements et au moins un ( "__spam"). Nous pouvons aussi affecter des variables arbitraires pour classer des instances.

class MyClass:
varCommon = 10
def __init__(self):
self.varMyVariable = 3
def fnMyFunction(self, arg1, arg2):
return self.varMyVariable

# This is the class instantiation
>>> clsInstance = MyClass()
>>> clsInstance.fnMyFunction(1, 2)
3
# This variable is shared by all classes.
>>> clsInstance2 = MyClass()
>>> clsInstance.varCommon
10
>>> clsInstance2.varCommon
10
# Note how we use the class name
# instead of the instance.
>>> MyClass.varCommon = 30
>>> clsInstance.varCommon
30
>>> clsInstance2.varCommon
30
# This will not update the variable on the class,
# instead it will create a new one on the class
# instance and assign the value to that.
>>> clsInstance.varCommon = 10
>>> clsInstance.varCommon
10
>>> clsInstance2.varCommon
30
>>> MyClass.varCommon = 50
# This has not changed, because varCommon is
# now an instance variable.
>>> clsInstance.varCommon
10
>>> clsInstance2.varCommon
50

# This class inherits from MyClass. Multiple
# inheritance is declared as:
# class OtherClass(MyClass1, MyClass2, MyClassN)
class OtherClass(MyClass):
def __init__(self, arg1):
self.varMyVariable = 3
print arg1

>>> clsInstance = OtherClass("hello")
hello
>>> clsInstance.fnMyFunction(1, 2)
3
# This class doesn't have a .test member, but
# we can add one to the instance anyway. Note
# that this will only be a member of clsInstance.
>>> clsInstance.test = 10
>>> clsInstance.test
10

Exceptions

Les exceptions sont prises en charge par Python grace aux blocks try-except [exceptionname] :

def fnExcept():
    try:
        # Division by zero raises an exception
        10 / 0
    except ZeroDivisionError:
        print "Oops, invalid."
 
>>> fnExcept()
Oops, invalid.

Importation

Des librairies extèrieures sont utilisées avec le mot-clé [libname] keyword. Vous pouvez aussi utiliser from [libname] import [funcname] pour des fonctions seules:

import random
from time import clock
 
intRandom = random.randint(1, 100)
>>> print intRandom
64

Fichier d'entrée/sortie

Python possède un tas de librairies prédéfinies. Voici un exemple de sérialisation (convertir des structures de données en chaînes en utilisant la librairie pickle ) en utilisant les fichiers I/O

import pickle
lstList = ["This", "is", 4, 13327]
# Open the file C:\binary.dat for writing. The letter r before the
# filename string is used to prevent backslash escaping.
flFile = file(r"C:\binary.dat", "w")
pickle.dump(lstList, flFile)
flFile.close()

flFile = file(r"C:\text.txt", "w")
flFile.write("This is a sample string")
flFile.close()

flFile = file(r"C:\text.txt")
>>> print flFile.read()
'This is a sample string'
flFile.close()

# Open the file for reading.
flFile = file(r"C:\binary.dat")
lstLoaded = pickle.load(flFile)
flFile.close()
>>> print lstLoaded
['This', 'is', 4, 13327]

Divers

Des conditions peuvent être mises sous forme de chaines. 1 < a < 3 vérifie si a est à la fois plus petit que 3 et plus grand que 1.
Vous pouvez employer del pour supprimer des variables ou des éléments dans un tableau. Apprendre les listes est un moyen puissant de créer et de manipuler des listes. Cela consiste en une expression suivie d'une clause for suivie par zero ou par d'autres clauses if@ ou @for:

lst1 = [1, 2, 3]
lst2 = [3, 4, 5]
>>> print [x * y for x in lst1 for y in lst2]
[3, 4, 5, 6, 8, 10, 9, 12, 15]
>>> print [x for x in lst1 if 4 > x > 1]
[2, 3]
del lst1[0]
>>> print lst1
[2, 3]
del lst1

Des variables globales sont déclarées en dehors des fonctions et peuvent être lues sans déclarations spéciales , mais si vous voulez écrire à l'intérieur, vous devez les déclarer au début de la fonction avec le mot-clé "global" , sinon Python créera une variable locale et lui donnera une affectation (soyez prudent, c'est une astuce qui vous permettra de ne pas vous faire avoir:

intNumber = 5
 
def fnMyFunction():
    # This will print 5.
    print intNumber
 
def fnOther():
    # This raises an exception because the variable has not
    # been assigned to before printing. Python knows that it a
    # value will be assigned to it later and creates a new, local
    # intNumber instead of accessing the global one.
    print intNumber
    intNumber = 3
 
def fnYetAnother():
    global intNumber
    # This will correctly change the global.
    intNumber = 3

Sources de l'article


 

Forum d'entraide
Les news du site
Formulaire en php
Administrer un serveur Mysql
Session en php
Gerer ses bases mysql
Les bases php
Securiser ses scripts PHP
Controler ses programmes avec RATS
Convertir une base sql en utf8
Astuces php
Python rapide
Tutorial Python
Tutorial Perl
Tutorial Perl complet
Tutoriel ruby
Tutoriel C
Introduction à gawk
Filtres et utilitaires
Find
Programmation Shell
Ecriture de scripts bash
Expressions regulieres
Vi
Introduction a Javascript
Compiler avec gcc
Tutoriel Assembleur
Guide du cracking pour débutant
Assembleur
Manual Unpacking
Différentes failles Web
Arp spoofing dans un réseau switché
Les intrusions
Les attaques externes
Defacage
Defacage complet
Buffer overflow
Netcat
Injection sql
Injection sql(suite)
John the Ripper
Spoofer un email
Utiliser google
La faille system
Usurper une identité
Le rooting
Shellcode sous Unix
La faille race condition
La faille xss
La faille xss (2)
Attaques sur un routeur
Azureus pas-a-pas
Lire les news de Linux-pour-lesnuls.com au format RSS
Gestion des paquets debian
101 commandes debian
Effet neon dans GIMP
Effet vapeur dans GIMP
Cours fonctionnalités de GIMP
Ensemble
Divers