• Aucun résultat trouvé

[PDF] Le langage Python cours gratuit

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Le langage Python cours gratuit"

Copied!
74
0
0

Texte intégral

(1)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 1

Le La n g a g e P yt h o n

Yve s Le g r a n d g é r a r d

y lg @p p s .ju s s ie u .fr

(2)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 2

U n b r e f h is t o r iq u e

• Le la n g a g e P yt h o n a é t é c o n ç u p a r

Gu id o Va n Ro s s u m e n 1 9 9 0 a u

C WI a Am s t e r d a m

• C o n n a ît u n e la r g e d iffu s io n à

p a r t ir d e 1 9 9 4

• La d e r n iè r e ve r s io n : 2 .2 .1 d u

1 0 /0 4 /2 0 0 2

• Dis p o n ib le s u r d e n o m b r e u s e s

p la t e fo r m e s : U N IXs , DO S ,

Win d o w s , O S /2 , M a c O S ,…

• Le s it e o ffic ie l :

h t t p ://w w w

.p yt h o n .o r g /

(3)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 3

Q u e lq u e s c a r a c t é r is t iq u e s

(1 )

• La n g a g e i n t e rp ré t é (p lu s p r é c is é m e n t ,

c h a q u e p r o g r a m m e P yt h o n e s t c o m p ilé

e n « b y t e -c o d e » , c e t t e c o m p ila t io n

é t a n t e ffe c t u é e lo r s q u ’u n m o d u le e s t

im p o r t é o u e xé c u t é p o u r la 1 è r e fo is e t

c e c i d e m a n iè r e a u t o m a t iq u e )

• La n g a g e n o n t yp é

• La n g a g e d e « h a u t n ive a u »

• Ge s t io n a u t o m a t is é e d e la m é m o ir e

(4)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 4

Q u e lq u e s c a r a c t é r is t iq u e s

(2 )

• La n g a g e o ri e n t é o b je t

• P r o g r a m m a t io n m o d u l a i re : c la s s e s ,

m o d u le s , e xc e p t io n s

• In t é g r a t io n C e t C + +

• C h a r g e m e n t d yn a m iq u e d e s m o d u le s C

• Re c h a r g e m e n t d yn a m iq u e d e s m o d u le s

P yt h o n

• C o m b le le fo s s é e n t r e le s la n g a g e s d e

s c r ip t « t r a d it io n n e ls » e t le la n g a g e C

(5)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 5

U n p r e m ie r e xe m p le

# !/u s r /b in /e n v p yt h o n im p o r t s ys file = o p e n (s ys .a r g v[1 ], ' r ' ) w h ile 1 :

lin e = file .r e a d lin e () if n o t lin e : b r e a k if lin e [0 ] = = ' # ' : p r in t lin e L’e xé c u t io n d e la c o m m a n d e : $ e x . p y s o u rc e . c > s o u rc e . p p e xt r a it le s lig n e s d u fic h ie r s o u rc e . c q u i c o m m e n c e n t p a r le c a r a c t è r e # e t le s r e d ir ig e ve r s le fic h ie r s o u rc e . p p .

(6)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 6

Q u e lq u e s é lé m e n t s d e

s yn t a xe

# !/u s r /b in /e n v p yt h o n

U n ix

# C e c i e s t u n c o m m e n t a ir e

x = 1

# Au t r e c o m m e n t a ir e

y = 2

;

p r in t z

# P lu s ie u r s

in s t r u c t io n s à la s u it e

if x < 1 a n d

\

# C o n t in u a t io n d e

lig n e

y != 3 :

p r in t ' O k '

(7)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 7

L’in d e n t a t io n (1 )

# !/u s r /b in /e n v p yt h o n im p o r t s ys file = o p e n (s ys .a r g v[1 ], ' r ' ) w h ile 1 :

lin e = file .r e a d lin e () if n o t lin e : b r e a k if lin e [0 ] = = ' # ' : p r in t lin e Il n ’y a p a s d e d é b u t e t d e fin d e b lo c c o m m e e n C o u e n P e r l p a r e xe m p le . C ’e s t l’i n d e n t a t i o n q u i p e r m e t à P yt h o n d e r e p é r e r le s d é b u t s e t fin s d e b lo c s . Ava n t a g e : c e la im p o s e u n s t yle d e p r o g r a m m a t io n p e r m e t t a n t u n e (r e )le c t u r e p lu s a is é e d u c o d e .

(8)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 8

L’in d e n t a t io n (2 )

La n g a g e C if (c o n d 1 ()) if (c o n d 2 ()) { a c t io n (); fin is h (); } e ls e e r r o r (); Ré s o u t d e m a n iè r e é lé g a n t e le p r o b lè m e d u « e ls e p e n d a n t » , t o u jo u r s s o u r c e d ’e r r e u r s d iffic ile s à d é t e c t e r ! P y t h o n if c o n d 1 (): if c o n d 2 (): a c t io n () fin is h () e ls e : e r r o r ()

(9)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 9

C o m m e n t e xé c u t e r P yt h o n

S c ri p t

# !/u s r /b in /e n v

p yt h o n

# Le s o u r c e h w .p y

p r in t ' H e llo Wo r ld ! '

M o d e i n t e ra c t i f

$ p yt h o n

> > > p r in t ' H e llo

Wo r ld ! '

He llo W o rld !

> > >

$ h w .p y

He llo W o rld !

(10)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 1 0

Le s in s t r u c t io n s (1 )

a f f e c t a t i o n

$ p yt h o n

> > > x = 2

> > > y = ' c h a in e '

> > > z = 2 .0 e 6

> > > p r in t x, y, z

2 c h a in e 2 0 0 0 0 0 0 .0

> > >

> > > a = b = c = 1

> > > p r in t a , b , c

1 1 1

> > > x = 2

> > > x + = 1

# *, ^ ,

| ,…

> > > p r in t x

3

> > > x, y = 1 , 2

#

t u p le

(11)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 1 1

Le s in s t r u c t io n s (2 )

(s t r u c t u r e s d e c o n t r ô le )

i f , e l i f , e l s e

# !/u s r /b in /e n v

p yt h o n

if x = = 1 :

p r in t ' va le u r d e x:

1 '

e lif x = = 2 :

p r in t ' va le u r d e x:

2 '

e ls e :

p r in t ' va le u r

in c o r r e c t e '

• C o m m e e n C , 0

e t 0 s o n t

r e s p e c t ive m e n t

vra i e t f a u x

• Ain s i, u n e b o u c le

s a n s fin p e u t

s ’é c r ir e :

# !/u s r /b in /e n v

p yt h o n

w h ile 1 :

p r in t ' H e llo '

(12)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 1 2

Le s in s t r u c t io n s (3 )

(s t r u c t u r e s d e c o n t r ô le )

n o t , a n d , o r

# !/u s r /b in /e n v p yt h o n

if n o t x = = 5 a n d (x < 1 0 o r x > = 2 0 ):

p r in t x

if 2 < = y < 1 0 :

# 2 < = y a n d y < 1 0

p r in t y

if x = = y = = z = = 0 :

# x = = 0 a n d y = =

0 a n d z = = 0

p r in t ’e r r e u r …’

(13)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 1 3

Le s in s t r u c t io n s (4 )

(s t r u c t u r e s d e c o n t r ô le )

w h i l e

# !/u s r /b in /e n v p yt h o n i = 0 w h ile 1 : if i = = 1 0 : b r e a k e ls e : p r in t i i = i + 1

f o r

$ p yt h o n > > > fo r i in r a n g e (2 ): . . . p r in t i 0 1 > > > fo r i in r a n g e (1 0 0 0 ): . . . p a s s # n e fa it r ie n > > >

(14)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 1 4

Le s n o m b r e s

x + y, x – y x * y, x / y, x % y -x, + x a b s (x), in t (x), lo n g (x) flo a t (x), d ivm o d (x), p o w (x, y) x | y, x ^ y, x & y, ~ x x < < n , x > > n 1 0 2 4 , 3 .1 4 , 0 1 7 7 0 xF F F E , 0 xa b c d , 1 0 0 0 L 1 0 e 1 2 , 6 .6 2 e -3 4

Op é ra t i o n s

Co n s t a n t e s

(15)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 1 5

Le s c h a în e s d e c a r a c t è r e s

(1 )

# !/u s r /b in /e n v p yt h o n x, y = 2 .1 , ' O n o b t ie n t :' p r in t 'x = % .2 f ' % x z = '% s % .2 f ' % (y, x) p r in t z + ' \n F in d u c a lc u l' • Le s c h a în e s s o n t d e s lis t e s p a r t ic u liè r e s • Le s o p é r a t e u r s + , *, [ ] ,… s o n t a in s i a p p lic a b le s a u x c h a în e s • C h a în e s fo r m a t é e s (fo r m a t p r e s q u e id e n t iq u e à c e lu i d e p rin t f e n C ) > > > s t r .p y x = 2 .1 0 On o b t ie n t : 2 .1 0 Fin d u c a lc u l

(16)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 1 6

Le s c h a în e s d e c a r a c t è r e s

(2 )

> > > x = "C'e s t u n t it r e " > > > y = ' -' * (le n (x) + 4 ) > > > p r in t ' % s \n | % s | \n % s ' % (y, x, y) ---| C ' e s t u n t it re ---| ---> ---> ---> c = " " " # c h a în e d e c a r a c t è r e s s u r p lu s ie u r s lig n e s U n c o m m e n t a ir e s u r p lu s ie u r s lig n e s a ve c d e s b la n c s e t d e s t a b u la t io n s " " "

(17)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 1 7

Le s s t r u c t u r e s d e d o n n é e s

(1 )

Li s t e s

$ p yt h o n > > > L = [' it e m ' , 1 , 5 .0 ] > > > L[2 ] 5 .0 > > > ' it e m ' in L 1 > > > fo r i in L: . . . p r in t i, it e m 1 5 .0 > > > fo r c in ' Bo n jo u r ' : . . . p r in t c , B o n j o u r # c h a în e = lis t e > > > L[0 :2 ] [' it e m ' , 1 ] > > > L[1 :] [1 , 5 .0 ] > > > L[-1 :] [5 .0 ]

(18)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 1 8

Le s s t r u c t u r e s d e d o n n é e s

(2 )

Li s t e s (s u it e )

> > > L = [' it e m ' , 1 , 5 .0 ] > > > le n (L) 3 > > > L[1 :le n (L)] [1 , 5 .0 ] > > > L[5 ] In d e x Erro r: lis t in d e x o u t o f ra n g e > > > L[-1 0 :1 0 ] [' it e m ' , 1 , 5 .0 ] # p a s d ’e r r e u r > > > S = [3 , 4 ] > > > p r in t L + S [' it e m ' , 1 , 5 .0 , 3 , 4 ] > > > L.a p p e n d (2 ) [' it e m ' , 1 , 5 .0 , 2 ] > > > d e l L[1 ] > > > p r in t L [' it e m ' , 5 .0 , 2 ]

(19)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 1 9

Le s s t r u c t u r e s d e d o n n é e s

(3 )

Li s t e s (s u it e e t fin )

> > > L = [3 ] > > > p r in t L * 4 [3 , 3 , 3 , 3 ] > > > p r in t L.c o u n t (3 ) 4 > > > L = [5 , 3 , 7 , 0 ] > > > L.s o r t () > > > p r in t L [0 , 3 , 5 , 7 ] > > > L = [[1 , 2 ], [3 , 4 , 5 ]] > > > fo r i in L: . . . fo r j in i: . . . p r in t j, 1 2 3 4 5 E n c o r e d ’a u t r e s m é t h o d e s a p p lic a b le s a u x lis t e s : re v e rs e (), in d e x (), in s e rt (), re m o v e (),…

(20)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 2 0

Le s s t r u c t u r e s d e d o n n é e s

(4 )

Tu p l e s

> > > T = (0 , 2 , ' it e m ' ) > > > fo r i in T: . . . p r in t i, 0 2 ' it e m ' > > > T[1 ] = 1 Ty p e Erro r: o b je t d o e s n ’t s u p p o rt it e m a s s ig n m e n t > > > T = (3 ,) # t u p le à 1 é lt , # a t t e n t io n (3 ) e s t l’e n t ie r 3 ! • An a lo g u e a u x lis t e s à la d iffé r e n c e (im p o r t a n t e !) p r è s q u e le s é l é m e n t s d ’u n t u p le n e s o n t p a s m o d i f i a b l e s • Le s t u p le s fo n c t io n n e n t d o n c c o m m e le s lis t e s m a is le u r im p la n t a t io n e s t d e c e fa it p lu s e ffic a c e # 1 , 2 , 3 e s t u n t u p le x, y, z = 1 , 2 , 3

(21)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 2 1

Le s s t r u c t u r e s d e d o n n é e s

(5 )

D i c t i o n n a i re s

> > > D = { ' N o m ' : ' Du p o n t ' , . . . 3 : ' p r e m ie r ' } > > > p r in t D[1 ], D[' N o m ' ] p re m ie r Du p o n t > > > fo r k in D: . . . p r in t D[k ], p re m ie r Du p o n t > > > D = { } # d ic t io n n a ir e # vid e • Le s d ic t io n n a ir e s s o n t d e s t a b le a u x a s s o c ia t ifs : { c l é : v a le u r,…} • U n e c lé p e u t ê t r e (p r e s q u e ) n ’im p o r t e q u e l o b je t P yt h o n e t p a s n é c e s s a ir e m e n t u n e c h a în e d e c a r a c t è r e s

(22)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 2 2

Le s s t r u c t u r e s d e d o n n é e s

(6 )

D i c t i o n n a i re s

(s u it e )

> > > D = { ' N o m ' : ' Du p o n t ' , . . . 3 : ' p r e m ie r ' } > > > p r in t D.k e ys () [' No m ' , 3 ] > > > p r in t D.va lu e s () [' Du p o n t ' , ' p re m ie r' ] > > > p r in t D.it e m s () [(' No m ' , ' Du p o n t ' ), (3 , ' p re m ie r' )] > > > if D.h a s _k e y(3 ): . . . p r in t D[3 ] p re m ie r > > > D = { ' Ag e n t ' : . . . { ' N o m ' : ' Du p o n t ' , . . . ' P r é n o m ' : ' Je a n ' , . . . ' Ag e ' : 3 1 . . . } . . . }

(23)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 2 3

La g e s t io n d e s e r r e u r s (1 )

# !/u s r /b in /e n v p yt h o n t = [0 , ' s t r ' , 5 ] t r y: t [3 ] = 1 e xc e p t In d e xE r r o r : p r in t ' in d ic e in c o r r e c t ' > > > e x.p y in d ic e in c o rre c t # !/u s r /b in /e n v p yt h o n t = [0 , ' s t r ' , 5 ] t r y: t [3 ] = 1 e xc e p t In d e xE r r o r , m s g : p r in t m s g > > > e x.p y lis t a s s ig n m e n t in d e x o u t o f ra n g e

(24)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 2 4

La g e s t io n d e s e r r e u r s (2 )

# !/u s r /b in /e n v p yt h o n t = [0 , ' s t r ' , 5 ] t r y: p r in t a t [3 ] = 1 e xc e p t In d e xE r r o r , m s g : p r in t m s g e xc e p t N a m e E r r o r , m s g : p r in t m s g e xc e p t : p r in t ' a u t r e e r r e u r ' e ls e : p r in t "p a s d ' e r r e u r " > > > e x.p y n a m e 'a ' is n o t d e fin e d > > >

(25)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 2 5

La g e s t io n d e s e r r e u r s (3 )

# !/u s r /b in /e n v p yt h o n F a t a lE r r o r = ' E r r e u r F a t a le ' t r y: Co d e Py t h o n … e xc e p t (In d e xE r r o r , N a m e E r r o r ), m s g : p a s s # ig n o r e l’e r r e u r e xc e p t : r a is e F a t a lE r r o r , \ ' a u t r e e r r e u r ' > > > e x.p y Erre u r Fa t a le : a u t re e rre u r > > > S i le Co d e Py t h o n d u b lo c t ry g é n è r e u n e e xc e p t io n a u t r e q u e In d e x E rro r o u N a m e E rro r, o n a u r a :

(26)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 2 6

La g e s t io n d e s e r r e u r s (4 )

# !/u s r /b in /e n v p yt h o n fd = o p e n (' fic h ie r ' , ' r ' ) t r y: p a r s e (fd ) fin a lly: fd .c lo s e () • Le b lo c f i n a l l y e s t e xé c u t é a p r è s l’e xé c u t io n d u b lo c t ry q u ’il y a it e u o u n o n e r r e u r • f i n a l l y p r o p a g e a u n ive a u s u p é r ie u r le s e r r e u r s é ve n t u e lle s • f i n a l l y e s t in c o m p a t ib le a ve c e x c e p t o u e l s e d a n s le m ê m e b lo c t ry

(27)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 2 7

La g e s t io n d e s e r r e u r s (5 )

(q u e lq u e s e xc e p t io n s p r é d é fin ie s )

O ve r flo w E r r o r Ru n t im e E r r o r S yn t a xE r r o r S ys t e m E r r o r S ys t e m E xit Typ e E r r o r Va lu e E r r o r Ze r o Divis io n E r r o r At t r ib u t e E r r o r E O F E r r o r IO E r r o r Im p o r t E r r o r In d e xE r r o r Ke yE r r o r Ke yBo a r d In t e r r u p t M e m o r yE r r o r N a m e E r r o r

(28)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 2 8

Le s fo n c t io n s (1 )

> > > d e f e c h o (a r g ): . . . p r in t a r g > > > e c h o (2 .1 ) 2 .1 > > > e c h o ([1 , ' it e m ' , -3 .5 ]) [1 , 'it e m ', -3 .5 ] > > > e c h o ({ } ) { } > > > Le n o m d ’u n e fo n c t io n e s t u n e va r ia b le , o n p e u t e n p a r t ic u lie r é c r ir e : > > > e c h o (e c h o ) < fu n c t io n e c h o a t 0 x 0 0 9 A3 7 B8 > > > > x = e c h o > > > x(' it e m ' ) it e m > > >

(29)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 2 9

Le s fo n c t io n s (2 )

(l’in s t r u c t io n re t u rn , r é c u r s ivit é )

# !/u s r /b in /e n v p yt h o n d e f e xp (x, n ): r = 1 fo r i in r a n g e (n ): r *= x r e t u r n r p r in t e xp (2 , 3 2 ) • La va le u r d e r e t o u r d ’u n e fo n c t io n p e u t ê t r e u n o b je t P yt h o n q u e lc o n q u e • re t u rn e s t o p t io n n e l • Ré c u r s ivit é : > > > e xp .p y 4 2 9 4 9 6 7 2 9 6 # !/u s r /b in /e n v p yt h o n d e f fa c t (n ): if n = = 0 : r e t u r n 1 r e t u r n n * fa c t(n - 1 )

(30)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 3 0

Le s fo n c t io n s (3 )

(l’in s t r u c t io n g lo b a l)

# !/u s r /b in /e n v p yt h o n M AX = 2 d e f g f(): M AX = 4 g f() p r in t M AX # !/u s r /b in /e n v p yt h o n M AX = 2 d e f g f(): g lo b a l M AX M AX = 4 g f() p r in t M AX > > > g f.p y 2 > > > > > > g f.p y 4 > > >

(31)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 3 1

Le s fo n c t io n s (4 )

(fo n c t io n s lo c a le s )

# !/u s r /b in /e n v p yt h o n d e f t _s u p (t ): d e f s u p (a , b ): if a < b : r e t u r n b r e t u r n a r = t [0 ] fo r i in t [:-1 ]: r = s u p (i, r ) r e t u r n r p r in t t _s u p ((3 , 2 0 , -1 , 1 2 , 2 )) > > > lf.p y 2 0 > > > • A la d iffé r e n c e d u C , p o s s ib ilit é d e d é fin ir d e s fo n c t io n s lo c a le s • La fo n c t io n s u p n ’e s t p a s c o n n u e a u n ive a u g lo b a l

(32)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 3 2

Le s fo n c t io n s (5 )

(a r g u m e n t s fa c u lt a t ifs , n o m b r e

d ’a r g u m e n t s va r ia b le )

> > > d e f a f(a 1 , a 2 = 2 , a 3 = 3 ): . . . p r in t a 2 , a 3 > > > a f(1 ) 2 3 > > > a f(1 , 2 0 , 3 0 ) 2 0 3 0 > > > a f(1 , 2 0 ) 2 0 3 > > > > > > d e f a v(a , *a r g s ): . . . fo r a r g in a r g s : . . . p r in t a r g , > > > a v(1 ) > > > a v(1 , ' s t r ' , 2 .0 , 5 ) s t r 2 .0 5 > > >

(33)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 3 3

Le s fo n c t io n s (6 )

(a r g u m e n t s fa c u lt a t ifs , n o m b r e

d ’a r g u m e n t s va r ia b le )

> > > d e f a fv(a 1 , a 2 = 2 , *a r g s ): . . . p r in t a 2 , . . . fo r a r g in a r g s : . . . p r in t a r g , > > > a fv(1 ) 2 > > > a fv(1 , 2 0 ) 2 0 > > > a fv(1 , 2 0 , ' s t r ' , -5 .1 ) 2 0 s t r -5 .1 > > > • O n p e u t m ixe r le s d e u x fo r m e s (a r g u m e n t s fa c u lt a t ifs & o p t io n n e ls ) • Le s a r g u m e n t s fa c u lt a t ifs d o ive n t ê t r e d é c la r é s e n p r e m ie r

(34)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 3 4

Le s fo n c t io n s (7 )

(a r g u m e n t s fa c u lt a t ifs , n o m b r e

d ’a r g u m e n t s va r ia b le )

# !/u s r /b in /e n v p yt h o n

d e f a d (a , **d ic t ):

# d ic t e s t u n

d ic t io n n a ir e

p r in t d ic t .it e m s ()

a d (1 , b g = ' ve r t ' , fg = ' n o ir ' , g a m m a = 0 .9 9 )

> > > d ic t .p y

[('b g ', 'v e rt '), ('g a m m a ',

0 .9 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 ),

('fg ', 'n o ir')]

> > >

(35)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 3 5

Le s fo n c t io n s (8 )

(a r g u m e n t s fa c u lt a t ifs , n o m b r e

d ’a r g u m e n t s va r ia b le )

# !/u s r /b in /e n v p yt h o n d e f a fvd (a 1 , a 2 = 3 , *a r g s , **d ic t ): p r in t a 2 , fo r a r g in a r g s : p r in t a r g , p r in t d ic t .it e m s () a fvd (1 , 2 0 , -5 .1 , 1 0 , b g = ' ve r t ' , fg = ' n o ir ' ) Le s a r g u m e n t s o p t io n n e ls d e t yp e d ic t io n n a ir e d o ive n t ê t r e d é c la r é s e n d e r n ie r

(36)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 3 6

Le s fo n c t io n s (9 )

(a r g u m e n t s fa c u lt a t ifs , n o m b r e

d ’a r g u m e n t s va r ia b le )

> > > d e f fo n c t (x, y, z): . . . p r in t x, y, z > > > fo n c t (1 , z= 3 , y= 2 ) 1 2 3 > > > fo n c t (1 , y= 2 , 3 ) S y n t a x Erro r: n o n -k e y w o rd a rg a ft e r k e y w o rd a rg > > > > > > fo n c t (1 , y= 2 , x= 1 ) Ty p e Erro r: fo n c t () g o t m u lt ip le v a lu e s fo r k e y w o rd a rg u m e n t 'x ' > > >

(37)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 3 7

Le s fo n c t io n s (1 0 )

(le s fo n c t io n s a n o n ym e s : la m b d a )

f = la m b d a x, y: x * y > > > d e f f(x, y): . . . C o d e P yt h o n > > > f_x = la m b d a x: f(x, y= 0 ) d e f f(x, y): r e t u r n x * y

• U n e xe m p le u t ile : • L’e xe m p le p r é c é d e n t p e u t a u s s i s ’é c r ir e : > > > d e f f(x, y): . . . C o d e P yt h o n > > > f_x = la m b d a x, y= 0 : \ f(x, y)• Le s fo n c t io n s a n o n ym e s s ’u t ilis e n t é g a le m e n t e n c o n jo n c t io n a ve c m a p , re d u c e e t f i l t e r

(38)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 3 8

Le s fo n c t io n s (1 1 )

(p r o g r a m m a t io n fo n c t io n n e lle : m a p )

# !/u s r /b in /e n v p yt h o n d e f f(x): r e t u r n x * x s = (2 , 3 , 4 , 5 ) p r in t m a p (f, s ) p r in t m a p (N o n e , s ) # id e n t it é P yt h o n o ffr e le s o u t ils q u e l’o n t r o u ve d a n s t o u t la n g a g e fo n c t io n n e l t e l S c h e m e O u t r e le s fo n c t io n s a n o - n ym e s , o n d is p o s e d e s fo n c t io n s m a p , a p p l y re d u c e e t f i l t e r > > > m a p .p y [4 , 9 , 1 6 , 2 5 ] [2 , 3 , 4 , 5 ]

(39)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 3 9

Le s fo n c t io n s (1 2 )

(p r o g r a m m a t io n fo n c t io n n e lle : m a p )

# !/u s r /b in /e n v p yt h o n d e f f(x, y): r e t u r n x * y s = (2 , 3 , 4 , 5 ) p r in t m a p (N o n e , s , m a p (la m b d a x: f(x, y= x), s )) p r in t m a p (f, s , m a p (la m b d a x: f(x, y= x), s )) > > > m a p .p y [(2 , 4 ), (3 , 9 ), (4 , 1 6 ), (5 , 2 5 )] # lis t e d e s a r g u m e n t s p a s s é s à f [8 , 2 7 , 6 4 , 1 2 5 ]

(40)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 4 0

Le s fo n c t io n s (1 3 )

(p r o g r a m m a t io n fo n c t io n n e lle : a p p ly )

# !/u s r /b in /e n v p yt h o n d e f e c h o (a r g ): p r in t a r g d e f le n g t h (a r g ): le n = 0 fo r c in a r g : le n + = 1 p r in t le n t o d o = ((e c h o , (3 ,)), (le n g t h , (' c h a in e ' ,))) fo r (f, a ) in t o d o : a p p ly(f, a ) # f(a ) > > > a p .p y 3 6 > > >

(41)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 4 1

Le s fo n c t io n s (1 4 )

(p r o g r a m m a t io n fo n c t io n n e lle : re d u c e )

# !/u s r /b in /e n v p yt h o n d e f f(x, y): # fo n c t io n n é c e s s a ir e m e n t à 2 a r g u m e n t s r e t u r n x * y d e f fa c t (n ): # u n e a u t r e m a n iè r e d e c o d e r n ! r e t u r n r e d u c e (f, r a n g e (1 , n + 1 ), 1) # va le u r in it ia le , n é c e s -p r in t m a -p (fa c t , r a n g e (6 )) # s a ir e s i la lis t e e s t vid e > > > r e d u c e .p y [1 , 1 , 2 , 6 , 2 4 , 1 2 0 ]

(42)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 4 2

Le s fo n c t io n s (1 5 )

(p r o g r a m m a t io n fo n c t io n n e lle : filt e r)

# !/u s r /b in /e n v p yt h o n M AS K = 1 < < 3 d e f f(x): r e t u r n x & M AS K s = r a n g e (1 0 ) p r in t filt e r (N o n e , s ), filt e r (f, s ) • f ilt e r (fo n c t , s e q ) c o n s t r u it u n e s u it e c o n s t it u é e d e s é lé m e n t s d e la s u it e s e q p o u r le s q u e ls la fo n c t io n fo n c t r e t o u r n e v ra i (≠ 0 ) • S i fo n c t va u t No n e , s e u ls le s é lé m e n t s n o n n u ls d e la s u it e s e q s o n t r e t o u r n é s > > > filt e r .p y [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] [8 , 9 ]

(43)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 4 3

Le s fo n c t io n s (1 6 )

(le s lis t e s e n « c o m p r é h e n s io n » )

• Le s lis t e s e n c o m p r é h e n s io n

fo u r n is s e n t u n m o ye n p lu s

e xp lic it e d e c o n s t r u ir e d e s lis t e s

q u ’a ve c m a p , re d u c e , filt e r e t /o u

la m b d a

• U n e lis t e e n c o m p r é h e n s io n e s t

c o n s t it u é e d ’u n e e xp r e s s io n s u ivie

d ’u n e in s t r u c t io n fo r, e lle -m ê m e

é ve n t u e lle m e n t s u ivie d ’u n e o u

p lu s ie u r s in s t r u c t io n s fo r o u if

(44)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 4 4

Le s fo n c t io n s (1 7 )

(le s lis t e s e n « c o m p r é h e n s io n » )

l1 = r a n g e (1 , 6 ) l2 = [x * x fo r x in l1 ] l3 = [x * x fo r x in l1 if x != 1 a n d x != 5 ] p r in t l2 , l3 l4 = [[x, x * x] fo r x in l3 [:2 ]] l5 = [' x= % d y= % d ' % (x, y) fo r x in l1 [:2 ] fo r y in l2 [:2 ]] p r in t l4 , l5 [1 , 4 , 9 , 1 6 , 2 5 ] [4 , 9 , 1 6 ] [[4 , 1 6 ], [9 , 8 1 ]] ['x = 1 y = 1 ', 'x = 1 y = 4 ', 'x = 2 y = 1 ', 'x = 2 y = 4 ']

(45)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 4 5

Le s m o d u le s (1 )

• Le s m o d u le s s o n t im p lé m e n t é s s o it

e n P yt h o n (c e s o n t a lo r s d e

s im p le s fic h ie r s t e xt e c o n t e n a n t

d e s in s t r u c t io n s P yt h o n ) s o it e n C

• Le c h a r g e m e n t d ’u n m o d u le e s t

in d é p e n d a n t

d e

s o n

im p lé m e n t a t io n

• Le s

m o d u le s

d is p o n ib le s d a n s la

ve r s io n 2 .2 .1 (il y e n a d e s d iza in e s

!)

(46)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 4 6

Le s m o d u le s (2 )

(im p o rt )

# !/u s r /b in /e n v p yt h o n # m o d u le e s s a i.p y d e f p r n (): p r in t ' e s s a i.p y' La d ir e c t ive im p o rt e s s a i.p y : 2. r e c h e r c h e le fic h ie r e s s a i.p y (à l’a id e d e la va r ia b le s y s .p a t h ) 3. e xé c u t e le c o d e 4. c h a r g e t o u s le s o b je t s d é fin is d a n s u n n o u ve l e s p a c e d e n o m s (e s s a i) 5. c h a r g e l’o b je t m o d u le e s s a i d a n s l’e s p a c e d e n o m s c o u r a n t (__m a in __) > > > im p o r t e s s a i > > > e s s a i.p r n () e s s a i.p y > > >

(47)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 4 7

Le s m o d u le s (3 )

(im p o rt e t fro m )

# !/u s r /b in /e n v p yt h o n # m o d u le e s s a i.p y x = 3 d e f p r n (): p r in t ' e s s a i.p y' C o m m e p r é c é d e m m e n t p o u r le s 3 p r e m iè r e s é t a p e s m a is r e m p la c e l’é t a p e 4 p a r u n e c o p ie d e la va r ia b le (ic i p rn ) P o u r c h a r g e r p lu s ie u r s o u t o u s le s o b je t s d ’u n m o d u le : > > > fr o m e s s a i im p o r t p r n > > > p r n () e s s a i.p y > > > > > > fr o m e s s a i im p o r t p r n , x > > > fr o m e s s a i im p o r t *

(48)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 4 8

Le s m o d u le s (4 )

( __m a in __ )

# m o d u le e s s a i.p y d e f p r n (): p r in t ' e s s a i.p y' p r n () • La fo n c t io n p rn s e r a a p p e lé e d è s q u e le m o d u le e s s a i.p y e s t im p o r t é p o u r la p r e m iè r e fo is • C e c o m p o r t e m e n t n ’e s t p a s t o u jo u r s s o u h a it a b le $ p yt h o n e s s a i.p y $ e s s a i.p y # m o d u le e s s a i.p y d e f p r n (): p r in t ' e s s a i.p y' if __n a m e __ = = ' __m a in __' : p r n () • p rn n e s e r a a p p e lé e q u e s i o u a u s s i (s o u s U n ix)

(49)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 4 9

Le s m o d u le s (5 )

(re lo a d )

# m o d u le e s s a i.p y d e f p r n (): p r in t ' e s s a i.p y' > > > im p o r t e s s a i > > > e s s a i.p r n () e s s a i.p y O n m o d ifie m a in t e n a n t le m o d u le e s s a i.p y… # m o d u le e s s a i.p y d e f p r n (): p r in t ' Le m o d u le e s s a i.p y' > > > e s s a i.p r n () e s s a i.p y > > > r e lo a d(e s s a i) < m o d u le 'e s s a i' fro m 'e s s a i.p y '> > > > e s s a i.p r n () Le m o d u le e s s a i.p y

(50)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 5 0

Le s m o d u le s (6 )

(d ir, __d ic t __ )

d e f p r n (): # m o d u le e s s a i.p y p r in t ' e s s a i.p y' d e f p r n (): # m o d u le e s s a i.p y p r in t ' e s s a i.p y' __d o c __ = """\ Do c d e e s s a i.p y""" > > > p r in t d ir (e s s a i) ['__b u ilt in s __', '__n a m e __', '__file __', 'p rn ', '__d o c __'] > > > p r in t e s s a i.__file __ /u s e rs /y lg /e s s a i.p y > > > p r in t e s s a i.__d o c __ No n e > > > p r in t e s s a i.__d o c __ Do c d e e s s a i.p y e s s a i.__d o c __ e s s a i.__d ic t __[' __d o c __' ] ↕

(51)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 5 1

Le s c la s s e s (1 )

(g é n é r a lit é s )

c la s s S im p le : # c la s s e d e f s h o w (s e lf, a r g ): # m é t h o d e p r in t a r g i = S im p le () # i in s t a n c e d e la # c la s s e S im p le i.s h o w (' e s s a i' ) # ‘.’ a p p e l d e la # m é t h o d e s h o w • Le s c la s s e s , c o m m e le s fo n c t io n s , s o n t d é fin ie s a u s e in d ’u n m o d u le • O u t il d e b a s e p o u r la p r o g r a m m a t io n o r ie n t é e o b je t e n P yt h o n • H é r it a g e e t h é r it a g e m u lt ip le • An a lo g u e a u x c la s s e s d e C + + , m a is a ve c d e s d iffé r e n c e s im p o r t a n t e s > > > c l.p y e s s a i

(52)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 5 2

Le s c la s s e s (2 )

(g é n é r a lit é s )

# !/u s r /b in /e n v p yt h o n c la s s S im p le : d e f s h o w (s e lf, a r g ): p r in t a r g x = S im p le () # x in s t a n c e y = S im p le () # y in s t a n c e x.la b e l = ' x' # n o u ve l a t t r ib u t y.la b e l = ' y' # n o u ve l a t t r ib u t x.s h o w (y.la b e l) • Le s in s t a n c e s x e t y o n t u n n o u ve l a t t r ib u t la b e l q u i n ’e s t p a s u n a t t r ib u t d e la c la s s e S im p le , c h a c u n e a ya n t s a p r o p r e c o p ie lo c a le • O n n e p r o c è d e p a s h a b it u e lle m e n t d e c e t t e m a n iè r e : p r o b lè m e d e c o h é r e n c e

(53)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 5 3

Le s c la s s e s (3 )

(g é n é r a lit é s )

# !/u s r /b in /e n v p yt h o n c la s s S im p le : d e f s h o w (s e lf, a r g ): p r in t a r g d e f s e t _la b e l(s e lf, la b e l): s e lf.la b e l = la b e l d e f g e t _la b e l(s e lf): s e lf.s h o w (s e lf.la b e l) i = S im p le () i.s e t _la b e l(' x' ) # la b e l e s t c r é e • Ic i l’a t t r ib u t la b e l e s t c r é é a u s e in d e la c la s s e S im p le • Q u a n d u n e in s t a n c e d ’u n e c la s s e a p p e lle u n e m é t h o -d e , l’in s t a n c e e lle -m ê m e e s t p a s s é e (d e m a n i è re i m p l i c i t e ) c o m m e p r e m ie r a r g u m e n t d e la m é t h o d e • C e t a r g u m e n t a p o u r n o m s e lf p a r c o n ve n t io n (m a is il p o u r r a it a vo ir n ’im p o r t e q u e l a u t r e n o m )

(54)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 5 4

Le s c la s s e s (4 )

(l’h é r it a g e )

c la s s S im p le : d e f s h o w (s e lf, a r g ): p r in t a r g c la s s S im p le F ille (S im p le): d e f s e t _la b e l(s e lf, la b e l): s e lf.la b e l = la b e l d e f g e t _la b e l(s e lf): s e lf.s h o w(s e lf.la b e l) i = S im p le F ille () i.s h o w(' e s s a i' ) • La c la s s e S im p le Fille h é r it e d e t o u t e s le s m é - t h o d e s e t a t t r ib u t s d e la c la s s e S im p le s a u f s i e lle le s r e d é fin it • To u t e s le s m é t h o d e s e t a t t r ib u t s s o n t vi rt u e l s a u s e n s d e C + + . Le u r s r é fé - r e n c e s n e s o n t e xa m in é e s q u ’à l’e xé c u t io n (ru n t im e )

(55)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 5 5

Le s c la s s e s (5 )

(l’h é r it a g e )

c la s s S im p le : d e f s h o w (s e lf, a r g ): p r in t ' S im p le ' , a r g c la s s S im p le F ille (S im p le ): d e f s e t _la b e l(s e lf, la b e l): s e lf.la b e l = la b e l d e f g e t _la b e l(s e lf): s e lf.s h o w (s e lf.la b e l) d e f s h o w(s e lf, a r g ): p r in t ' S im p le F ille ' , a r g i = S im p le () i.s h o w (' i' ) j= S im p le F ille () j.s h o w (' j' ) > > > c l.p y S im p le i S im p le Fille j > > >

(56)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 5 6

Le s c la s s e s (6 )

(l’h é r it a g e m u lt ip le )

c la s s C 1 : d e f m (s e lf): p r in t ' C 1 .m ' c la s s C 2 : d e f m (s e lf): p r in t ' C 2 .m ' c la s s A(C 1 , C 2 ): p a s s c la s s B(C 2 , C 1 ): p a s s a , b = A(), B() a .m () # il y a c o n flit d e n o m s , b .m () # C1 .m o u C2 .m ? > > > c l.p y C1 .m C2 .m c la s s B(C 2 , C 1 ): m = C 1 .m P o u r r é s o u d r e le c o n flit :

(57)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 5 7

Le s c la s s e s (7 )

(c o n s t r u c t e u r : __in it __)

c la s s P a c k e t : d e f __in it __(s e lf, d a t a ): s e lf.d a t a = d a t a c la s s P a c k e t Wit h H d r (P a c k e t ): d e f __in it __(s e lf, h d r , d a t a ): s e lf.h d r = h d r P a c k e t .__in it __(s e lf, d a t a ) p k t = P a c k e t (' d a t a ' ) p k h = P a c k e t Wit h H d r (' h e a d e r ' , ' d a t a ' ) • Lo r s q u ’u n e in s t a n c e e s t c r é é e , le c o n s t r u c t e u r __in it __ e s t a u t o m a t i- q u e m e n t a p p e lé • U n c o n s t r u c t e u r e s t u n e m é t h o d e c o m m e u n e a u t r e , e n p a r t ic u lie r d u p o in t d e vu e d e l’h é r it a g e • C o n t r a ir e m e n t à C + + , P yt h o n n ’in vo q u e q u ’u n s e u l c o n s t r u c t e u r → g e s t io n m a n u e lle : Pa c k e t .__in it __

(58)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 5 8

Le s c la s s e s (8 )

(d e s t r u c t e u r : __d e l__)

c la s s C la s s e : d e f __d e l__ (s e lf): p r in t s e lf, ' d e le t e d ' x = C la s s e () d e l x • Lo r s q u ’u n e in s t a n c e e s t d é t r u it e (i.e q u a n d la d e r n iè r e r é fé r e n c e e s t s u p p r im é e ), le d e s t r u c t e u r __d e l__ e s t a u t o m a t iq u e - m e n t a p p e lé • C o m m e p o u r le s c o n s t r u c - t e u r s , u n s e u l d e s t r u c t e u r e s t in vo q u é lo r s d e la s u p p r e s s io n d ’u n e in s t a n c e d a n s le c a s d ’u n e c la s s e fille > > > c l.p y < __m a in __.Cla s s e in s t a n c e a t 0 x 0 0 9 E3 1 6 8 > d e le t e d > > >

(59)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 5 9

Le s c la s s e s (9 )

(s u r c h a r g e d ’o p é r a t e u r /m é t h o d e )

c la s s P a c k e t : d e f __in it __(s e lf, d a t a ): s e lf.d a t a = d a t a d e f __a d d __(s e lf, d a t a ): r e t = P a c k e t (s e lf.d a t a ) r e t .d a t a + = d a t a r e t u r n r e t d e f __r e p r __(s e lf): r e t u r n ' Da t a : ' + s e lf.d a t a > > > c l.p y Da t a : d a t a 1 -d a t a 2 > > > p k t = P a c k e t (' d a t a 1 ' ) p k t + = ' -d a t a 2 ' p r in t p k t • S u r c h a r g e d e s m é t h o d e s __a d d __ (+ ) e t __re p r__ (p rin t )

(60)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 6 0

Le s c la s s e s (1 0 )

(s u r c h a r g e d ’o p é r a t e u r /m é t h o d e )

P a c k e t IP E r r o r = ' P a c k e t IP E r r o r ' c la s s P a c k e t IP : d e f __in it __(s e lf, d a t a ): s e lf.__d ic t __[' t yp e ' ], s e lf.d a t a = ' IP v4 ' , d a t a d e f __s e t a t t r __(s e lf, n o m , va l): if n o m = = ' t yp e ' : # a n a lo g u e d e p r iva t e : e n C + + r a is e P a c k e t IP E r r o r , ' a t t r ib u t t yp e n o n m o d ifia b le ' s e lf.__d ic t __[n o m ] = va l # o n n ’é c r it p a s s e lf.n o m = v a l # c a r c ’e s t é q u iva le n t à s e lf.__s e t a t t r__(n o m , v a l) !

(61)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 6 1

Le s c la s s e s (1 1 )

(le s m é t h o d e s p r é d é fin ie s )

c o n s t r u c t e u r d e s t r u c t e u r ` s e lf` , p r in t s e lf, r e p r (s e lf) s t r (s e lf), p r in t s e lf s e lf > x, s e lf = = x, … x < = s e lf, x != s e lf, … d ic t io n n a r y[s e lf], h a s h (s e lf] s e lf(a r g s …) __in it __(s e lf, a r g s …) __d e l__(s e lf) __r e p r __(s e lf) __s t r __(s e lf) __c m p __(s e lf, o t h e r ) __r c m p __(s e lf, o t h e r ) __h a s h __(s e lf) __c a ll__(s e lf, *a r g s )

To u s l e s t yp e s

(62)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 6 2

Le s c la s s e s (1 2 )

(le s m é t h o d e s p r é d é fin ie s )

s e lf.n o m s e lf.n o m = va l d e l s e lf.n o m __g e t a t t r __(s e lf, n o m ) __s e t a t t r __(s e lf, n o m , va l) __d e la t t r __(s e lf, n o m )

To u s l e s t yp e s (s u it e )

Co l l e c t i o n s

le n (s e lf) s e lf[k e y], x in s e lf, fo r x in s e lf s e lf[k e y] = va l __le n __(s e lf) __g e t it e m __(s e lf, k e y) __s e t it e m __(s e lf, k e y, va l)

(63)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 6 3

Le s c la s s e s (1 3 )

(le s m é t h o d e s p r é d é fin ie s )

s e lf[l:h ] s e lf[l:h ] = s e q d e l s e lf[l:h ] __g e t s lic e __(s e lf, l, h ) __s e t s lic e __(s e lf, l, h , s e q ) __d e ls lic e __(s e lf, l, h )

Co l l e c t i o n s (s u it e )

N o m b re s

__m o d __ __r m o d __ __d ivm o d __ __p o w __ __m u l__ __r m u l__ __d iv__ __r d iv__ __a d d __ __r a d d __ __s u b __ __r s u b __

(64)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 6 4

Le s c la s s e s (1 4 )

(le s m é t h o d e s p r é d é fin ie s )

N o m b re s (s u it e )

__in t __ __lo n g __ __flo a t __ __o c t __ __h e x__ __o r __ __r o r __ __n e g __ __p o s __ __a b s __ __in ve r t __ __n o n ze r o __ __c o e r c e __ __ls h ift __ __r ls h ift __ __r s h ift __ __r r s h ift __ __a n d __ __r a n d __ __xo r __ __r xo r __

(65)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 6 5

Le s c la s s e s (1 5 )

(le s a t t r ib u t s p r é d é fin is )

c la s s A: d e f p r (a r g ): p r in t a r g c la s s B(A): p a s s p r in t A.__d ic t __, A.__n a m e __ p r in t B.__b a s e s __ a , b = A(), B() p r in t a .__c la s s __, p r in t is in s t a n c e (a , A), p r in t is s u b c la s s (B, A) { 'p r': < fu n c t io n p r a t 0 x 0 0 9 2 1 4 F8 > , '__m o d u le __': '__m a in __', '__d o c __': No n e } A (< c la s s __m a in __.A a t 0 x 0 1 0 4 1 6 9 8 > ,) __m a in __.A 1 1

(66)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 6 6

Le s fic h ie r s (1 )

# !/u s r /b in /e n v p yt h o n fd = o p e n(' e s s a i.p y' , ' r ' ) p r in t fd .r e a d(), fd .s e e k(0 , 0 ) p r in t fd .r e a d (3 ) fd .s e e k (0 , 0 ) p rin t fd .re a d (3 ) # !/ > > > file .p y # !/u s r/b in /e n v p y t h o n fd = o p e n ('e s s a i.p y ', 'r') p rin t fd .re a d () c lo s e () t e ll() is a t t y () flu s h () re a d lin e () re a d lin e s () w rit e (s t rin g ) w rit e lin e s (lis t )

• Le s a u t r e s m é t h o d e s :

(67)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 6 7

Le s fic h ie r s (2 )

• O n p e u t é g a le m e n t a c c é d e r a u x fic h ie r s via le m o d u le o s • Da n s c e c a s , o n d is p o s e d e s a p p e ls s ys t è m e U n ix s t a n d a r d : re a d , w rit e , ls e e k , d u p ,… a ve c p r e s q u e la m ê m e s yn t a xe e t le s m ê m e s a r g u m e n t s (la p lu p a r t s o n t é g a le m e n t u t ilis a b le s s o u s Win d o w s o u M a c O S ) # !/u s r /b in /e n v p yt h o n im p o r t o s fd = o s .o p e n (' e s s a i' , o s .O _RDWR | o s .O _TRU N C , 0 6 4 4 ) o s .w r it e (fd , ' e s s a i' ) o s .c lo s e (fd )

(68)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 6 8

La d o c u m e n t a t io n e n lig n e

(1 )

> > > im p o r t __b u ilt in __ > > > p r in t d ir (__b u ilt in __) ['Arit h m e t ic Erro r', … 'z ip '] > > > p r in t c h r .__d o c __ c h r(i) -> c h a ra c t e r Re t u rn a s t rin g o f o n e c h a ra c t e r w it h o rd in a l i; 0 < = i < 2 5 6 . # !/u s r /b in /e n v p yt h o n d e f f(c ): """ f(x) -> r e t o u r n e s t r (x)\ """ r e t u r n s t r (x) p r in t f.__d o c __ > > > d o c .p y f(x ) -> re t o u rn e s t r(x )

(69)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 6 9

La d o c u m e n t a t io n e n lig n e

(2 )

""" U n p e t it m o d u le \ """ c la s s A: """ La c la s s e A e s t vid e \ """ p a s s p r in t A.__d o c __, p r in t __d o c __ > > > d o c .p y La c la s s e A e s t v id e Un p e t it m o d u le • La d o c u m e n t a t io n e n lig n e , t r è s u t ile , e s t fa c ile à m e t t r e e n œ u vr e • A u t ilis e r s a n s m o d é r a t io n ! • P r is e e n c o m p t e p a r id le

(70)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 7 0

É t e n d r e P yt h o n e n C (1 )

• É t e n d r e P yt h o n e n C e s t p a r fo is

n é c e s s a ir e s i l’o n ve u t c r é e r d e

n o u ve a u x t yp e s d e d o n n é e s o u a c c é d e r

à d e s a p p e ls s ys t è m e s n o n d é jà

d is p o n ib le s (il y e n a d e m o in s e n m o in s

!), e t c …

• S i l’o n s a it p r o g r a m m e r e n C, c e la n e

p r é s e n t e p a s d e d iffic u lt é s p a r t ic u liè r e s

• L’AP I P yt h o n fo u r n it t o u t c e d o n t o n a

b e s o in

• Le s e u l p o in t u n p e u d é lic a t e s t la

g e s t io n d e s r é fé r e n c e s d e s o b je t s

(m a c r o s PY_INCREF e t PY_DECREF)

(71)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 7 1

É t e n d r e P yt h o n e n C (2 )

(u n e xe m p le : m in im o d .c )

# in c lu d e < P yt h o n .h> // AP I P yt h o n s t a t ic P yO b je c t * M in iM o d _h e llo (P yO b je c t *s e lf, P yO b je c t *a r g s ) { if (!P yAr g _P a r s e Tu p le (a r g s , "")) // p a s d ’a r g u m e n t r e t u r n N U LL; // e xc e p t io n g é r é e p a r l’in t e r p r é t e u r fp r in t f(s t d o u t , "H e llo Wo r ld !\n ");

P y_IN C RE F(P y_N o n e); // o n c r é e u n e n o u ve lle r é fé r e n c e

r e t u r n P y_N o n e; // d e l’o b je t Py _No n e (No n e )

(72)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 7 2

É t e n d r e P yt h o n e n C (3 )

(u n e xe m p le : m in im o d .c )

s t a t ic s t r u c t P yM e t h o d De f M in iM o d _m e t h o d s[] = {

{ "h e llo", M in iM o d _h e llo , M E TH _VARARGS } , { N U LL, N U LL} } ; // d é c la r a t io n d e s m é t h o d e s d u m o d u le m in im o d s t a t ic c h a r M in iM o d _d o c[] = "U n (t o u t ) p e t it m o d u le "; vo id in itm in im o d (vo id ) // in it ia lis a t io n d u m o d u le m in im o d { P y_In it M o d u le 3 ("m in im o d", M in iM o d _m e t h o d s, M in iM o d _d o c); }

(73)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 7 3

É t e n d r e P yt h o n e n C (4 )

(u n e xe m p le : m in im o d .c )

$ g c c –s h a r e d –I< p yt h o n _in c _d ir > m in im o d .c –o

m in im o d.s o $ p yt h o n > > > im p o r t m in im o d > > > m in im o d .h e llo () He llo W o rld ! > > > p r in t m in im o d .__d o c __ Un (t o u t ) p e t it m o d u le < p yt h o n _in c _d ir > e s t le c a t a lo g u e o ù l’o n t r o u ve le fic h ie r Py t h o n .h (p a r e x., /u s r/lo c a l/in c lu d e /p y t h o n 2 .2 )

(74)

S e p t e m b r e 2 0 0 2 F o r m a t io n BC E AO 7 4

C o n c lu s io n

(q u i n ’e n g a g e q u e l’a u t e u r )

• Vo u s p o u ve z o u b lie r t o u s le s

a u t r e s la n g a g e s d e s c r ip t s (e t

m ê m e le C d a n s b e a u c o u p d e c a s )

e t n ’u t ilis e r q u e P yt h o n !

• À m o n s e n s , b ie n q u ’a ya n t u n e

a p p r o c h e t r è s d iffé r e n t e (la n g a g e

t y p é ), p e u t -ê t r e u n s e u l

« c o n c u r r e n t » in t é r e s s a n t :

o c a m l (O b je c t ive C AM L). M a is

o c a m l e s t b e a u c o u p m o in s d iffu s é

q u e P yt h o n …

Références

Documents relatifs

Flash) For ce (r elated to an object of the animation) [Automatic cr eation] For ce-feedback is computed fr om the position and geometry of the object Flash Mouse with a joystick

politiques sont le RND (Rassemblement National Démocratique), Hamas (Mouvement de la Société Islamique), le RCD (Rassemblement pour la Culture et la Démocratie), le MDS (Mouvement

De nombreux points militent pour une utilisation plus importante des outillages et des moules en matériaux composites mais certains aspects comme le vieillissement en cyclage

The LCA presented in this study enabled a comparison of the environmental impacts in the life cycle of carbon fiber- reinforced plastic composite, considering two different scenar-

It means that, even though in theory, we can partly understand that SVC should be better than AVC with its scalability feature at the encoding step, but it is only through

Il nous faudra revenir à la clinique, mais dans un premier temps, nous sou- haitons préciser en quoi consiste l’abstraction technique, que nous avons déjà définie comme analyse

L'auteur explique comment ces objets vivants, usuels mais aussi dotés d'une signification sociale et symbolique au XVIIIe siècle, sont devenus des objets inanimés mais

Mais surtout on commence, à la fin des années 70, à se dégager d'une simple liste d'instruments, d'un simple inventaire des éléments musicaux1, pour tenter