Affectation (d'après "Learning Python", de Mark Lutz)

Slides:



Advertisements
Présentations similaires
Chapitre annexe. Récursivité
Advertisements

Portée des variables VBA & Excel
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
3- Déclaration et accès aux objets
Introduction Aux Systèmes dInformation et Multimédia T. Bourdeaudhuy S. Collart-Dutilleul P. Kubiak IG 2 I - Saison 2006/2007 (X)HTML / Pages Web Statiques.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
C.
Plan Présentation de la Solution. Le Protocole MESI
TP n°1 PHP LES BASES Premier programme Affichage
Nicolas Bourbaki.
Paramètres et pointeurs
Les attributions de valeur (le signe =). Dans cette présentation, nous allons tenter de représenter ce qui se passe dans la mémoire de lordinateur quand.
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Christelle Scharff IFI Juin 2004
Lycée Louis Vincent SEANCE 6 Python Les listes Lundi 25 novembre 2013.
CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )
Principes de programmation (suite)
2ième Classe (Mercredi, 13 Octobre) C++ Intro CSI2572.
CPI/BTS 2 Programmation Web Introduction au PHP
Objets Opérateurs Listes
OCaml - Les listes L3 MI.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
JAVASERVER FACES Un framework Java pour le développement Web.
Points importants de la semaine Le paramétrage. La portée. Le passage par copie. Le passage par référence.
POO-L3 H. Fauconnier1 Tableau et héritage Y[] yA=new Y[3]; X[] xA=yA; //ok xA[0]=new Y(); xA[1]=new X(); //non xA[1]=new Z(); //non Object XX[]int[] YZY[]Z[]
Chapitre VII Généricité. POO-L3 H. Fauconnier2 Chapitre VII 1. Principes généraux 2. Types génériques imbriqués 3. Méthodes génériques 4. Types paramètres.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Programmation multimédia 3
Introduction à la programmation (Java)
Formation Python Modules (d'après "Learning Python", de Mark Lutz)
Ensembles Définition d’un ensemble. Opérations sur les ensembles. Accès, suppression et ajout d’éléments d’un ensemble. Fonctions permettant de manipuler.
Code des opérateurs Appartenance à une liste ( appartient_l ) –Prototype: Bool appartient_l(type_el x, liste L) –Pré-conditions: aucunes. –Post-conditions:
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
1 PROTOTYPE PGC++ Vecteur_3D DÉFINITION. 2 class Vecteur_3D { private : float vx, vy, vz, vw; // Représentation en coordonnées homogènes. public : Vecteur_3D();
Un langage de programmation impérative et concurrente
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Chapitre 9 Les sous-programmes.
Types de données abstrait et mécanismes d'encapsulation
8PRO100 Éléments de programmation Les types composés.
Partie II Sémantique.
Méthode et Outils pour la Programmation
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 6. Gestion des erreurs et des exceptions : Fonctionnement.
Formation C++. Hello World ! #include /* Commentaire sur plusieurs lignes */ int main() { //Affiche hello world std::cout
Javascript 1° PARTIE : LES BASES
JavaScript.
Rappels de statistiques descriptives
Correction des exercices
Programmation objet La base.
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Argc et argv Utilisation des paramètres de la ligne de commande.
Cours 7 Classes locales Clonage Divers: tableaux.
Créer des packages.
Tutorat en bio-informatique
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
Réaliser par: Sadok Amel Cheboui hassiba
Le langage Racket (Lisp)
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Évaluation et application des fonctions Let f = function x -> ( function y -> x+y );; Type :int -> (int ->int) int -> int ->int f int.
CSI2520 Un langage de programmation par scripting orienté-objet (et fonctionnel)
CSI2520 Un langage de programmation impérative et concurrente.
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
Les bases de l’algorithmique
Philippe Gandy - 15 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Courbe 3D Créer un fichier pièce dans l’environnement part design Créer les 4 points suivants :
Introduction à l’Informatique Licence SPI Mme Delmotte.
IFT359 – Programmation fonctionnelle Thème 07 Fermeture, affectation ou monades 1.
Quiz C++ Les fonctions.
Quiz C++ Les variables & les boucles.
Transcription de la présentation:

Affectation (d'après "Learning Python", de Mark Lutz) Formation Python Affectation (d'après "Learning Python", de Mark Lutz) A revoir : *) pour les débutants, faire l'impasse sur la réutilisation des objets entiers et le "is" (peut-être classer "is" dans les pièges). *) refaire les démos en "animations" *) parler de "shallow copy" et "deep copy".

Questions abordées Qu'est-ce qu'une "variable" ? Qu'est-ce qu'une valeur ? Qu'est-ce qu'un type ? Comment est gérée la mémoire ? Comment sont passés les arguments de fonction ? Comment se passe une copie ? Comment est évaluée l'égalité ? .

Variables et objets a = 3 a = 'hello' a = 1.23 a 3 a 3 hello a 3 hello Pour les programmeurs C++, on peut voir les noms de python comme des pointeurs no typés (void *), mais qui sont automatiquement déréférencés quand on les utilise. Ce sont les objets qui sont typés, et en réalité chaque objet est précédé en mémoire de deux entêtes : son type son compteur de références a 3 hello 1.23

Partage d'objets a = 3 b = a a = 'hello' a = a+2 c = 3 a 3 b a 3 b 5

Modification d'un élément (1/2) l2 = l1 l1[0] = 5 l1 [0,1,2] l2 2 3 4 l1 [0,1,2] l2 5 3 4

Modification d'un élément (2/2) [0,1,2] l1 = [2,3,4] l2 = l1[:] l2[1] = 6 l1 2 3 4 l2 [0,1,2] Pour copier un dictionnaire, qui ne se "slice" pas : D.copy(). Pour copier n'importe quoi, de façon superficielle ou profonde : > import copy > X = copy.copy(Y) > X = copy.deepcopy(Y) [0,1,2] l1 2 3 4 l2 [0,1,2] 6

Egalité et identité (1/4) l2 = l1 l1==l2 True l1 is l2 l1 [0,1,2] l2 2 3 4

Egalité et identité (2/4) l1==l2 True l1 is l2 False l1 [0,1,2] 2 3 4 l2 [0,1,2]

Egalité et identité (3/4) x = 42 y = 42 x==y True x is y l1 42 l2 Attention, "is" peut-être beaucoup plus rapide que "==" dans certaines circonstances, mais c'est un faux ami parce qu'il est influencé par le mécanisme de cache interne de Python.

Egalité et identité (4/4) x = 42.5 y = 42.5 x==y True x is y False l1 42.5 l2 42.5 Attention, "is" peut-être beaucoup plus rapide que "==" dans certaines circonstances, mais c'est un faux ami parce qu'il est influencé par le mécanisme de cache interne de Python.

Passage d'arguments def changer(a,b): … a = 2 … b[0] = 'hello' … x = 1 y = [1,2] changer(x,y) x,y (1,['hello',2]) x 1 2 a y [0,1] Les arguments d'une fonction sont passés par affectation à des variables locales à la fonction. Assigner un nouvel objet à l'une de ces variables n'affecte pas l'appelant. Modifier un élément d'une collection mutable peut affecter l'appelant. b 'hello'

Affectation dans une fonction x = 88 y = [ 1, 2 ] def func(): … x = 99 … y[0] = 0 func() x, y ( 88, [0,2] ) Dans une fonction, toute affectation à une variable qui n'est pas un de ses arguments crée une variable locale, sauf s'il s'agit d'un élément d'une collection mutable. Toute affectation dans une fonction crée une variable locale, sauf s'il s'agit d'un élément d'une collection mutable.

Résumé Les types sont attachés aux objets, pas aux variables. Chaque objet est rendu au système quand il n'est plus désigné par aucune variable. La modification d'un élément de collection affecte toutes les variables désignant cette collection. Le passage des arguments d'une fonction se fait par affectation à des variables locales. Les affectations au sein des fonctions créent des variables locales. A la différence de C++, qui distingue variables ordinaires, références, pointeurs. passage d'arguments par valeur, référence, pointeur.

Quiz (1/5) Quelle est la valeur finale retournée par a ? a = "hello" b = a b = "world" a a hello "hello" b world .

Quiz (2/5) Quelle est la valeur finale retournée par a ? a = [ "hello" ] b = a b[0] = "world" a [ "world" ] world . a [0] b hello

Quiz (3/5) Quelle est la valeur finale retournée par a ? a = [ "hello" ] b = a[:] b[0] = "world" a a [0] [ "hello" ] . hello b [0] world

Quiz (4/5) Quelle est la valeur finale retournée par a ? def f(x): … x = "world" a = "hello" f(a) a . a hello x world "hello"

Quiz (5/5) Quelle est la valeur finale retournée par a ? def f(x): … x[0] = "world" a = [ "hello" ] f(a) a world a [0] . x hello [ "world" ]