python
play

Python chrysn <chrysn@fsfe.org> 2008-09-25 Introduction - PowerPoint PPT Presentation

Python chrysn <chrysn@fsfe.org> 2008-09-25 Introduction Structure, Language & Syntax Strengths & Weaknesses Introduction Structure, Language & Syntax Strengths & Weaknesses Python Python is an interpreted,


  1. Python chrysn <chrysn@fsfe.org> 2008-09-25

  2. Introduction Structure, Language & Syntax Strengths & Weaknesses

  3. Introduction Structure, Language & Syntax Strengths & Weaknesses

  4. Python Python is an interpreted, object-oriented, high-level programming language with dynamic semantics. interpreted stack based byte code; JIT available; restricted subset compilable object-oriented every expression returns an object high-level “readable pseudo-code” dynamic semantics ? (suggestions welcome)

  5. Facts & Figures inventor & BDFL Guido van Rossum influenced by ABC, ALGOL 68, C, Haskell, Icon, Lisp, Modula-3, Perl, Java current version 2.5.2 (2008-02-22) looking forward to Python 3 in October currently used by NASA, CERN, Yahoo, Google, YouTube currently used in Blender, Mailman, Gentoo Linux, scons, Zope

  6. Introduction Structure, Language & Syntax Strengths & Weaknesses

  7. Structure ◮ Every Python file ( *.py ) is a Python module.

  8. Structure ◮ Every Python file ( *.py ) is a Python module. ◮ Python modules contain statements. 1 name = ” world ” 2 print ” h e l l o ” 3 print name

  9. Structure ◮ Every Python file ( *.py ) is a Python module. ◮ Python modules contain statements. ◮ Statements can contain indented clauses, which contain other statements. 1 pi = 3 2 pi > 3: i f 3 print ” pi > 3” 4 else : 5 print ” pi < = 3”

  10. Structure ◮ Every Python file ( *.py ) is a Python module. ◮ Python modules contain statements. ◮ Statements can contain indented clauses, which contain other statements. ◮ Stamements can contain expressions. 1 pi = 3 2 pi > 3: i f 3 print ” pi > 3” 4 else : 5 print ” pi < = 3”

  11. Structure ◮ Every Python file ( *.py ) is a Python module. ◮ Python modules contain statements. ◮ Statements can contain indented clauses, which contain other statements. ◮ Stamements can contain expressions. ◮ An expession is a valid statement. 1 window . show () 2 3 m y l i s t . append (42) 4 m y l i s t . s o r t ()

  12. Structure ◮ Every Python file ( *.py ) is a Python module. ◮ Python modules contain statements. ◮ Statements can contain indented clauses, which contain other statements. ◮ Stamements can contain expressions. ◮ An expession is a valid statement. ◮ Every expression can be evaluated to an object. 1 # f u n c t i o n that p r i n t s a number squared 2 f ( x ) : def 3 print x ∗∗ 2 4 5 print f 6 # < f u n c t i o n f at 0 x7f1e43f439b0 > 7 print f (2) 8 # 4 9 # None

  13. Statements: Functions (1/2) 1 def move( s t a r t , end , v e l o c i t y =1): 2 return ( end − s t a r t )/ v e l o c i t y 3 4 t = move (0 , 1) # e q u i v a l e n t : 5 t = move (0 , 1 , 1) 6 t = move( v e l o c i t y =1, s t a r t =0, end=1) 7 8 # anonymous f u n c t i o n 9 t = ( lambda s , e , v=1: ( e − s )/ v )(0 , 1) ◮ Arguments can have default values ◮ (Default arguments are evaluated when function is defined) ◮ Can use positional or named arguments ◮ Implicit return None ◮ lambda : anonymous functions, one expression only

  14. Statements: Functions (2/2) 1 def l o g g i n g ( f u n c t i o n ) : 2 decorated ( ∗ args , ∗∗ kwords ) : def 3 print f u n c t i o n . name , args , kwords 4 f u n c t i o n ( ∗ args , ∗∗ kwords ) 5 return decorated 6 7 @logging 8 def move( s t a r t , end , v e l o c i t y =1): 9 ””” C a l c u l a t e time needed to move””” 10 return ( end − s t a r t )/ v e l o c i t y ◮ *something is list of positional arguments ◮ **something is dictionary of keyword arguments ◮ @decorator passes function through another function before it is assigned to its name

  15. Statements: Control Structures ◮ for : Iteration over iterable object 1 i range (99 , 1 , − 1): for in 2 print ”%d b o t t l e s of beer . . . ” % i

  16. Statements: Control Structures ◮ for : Iteration over iterable object ◮ while : Loop while condition is true (no assignments) 1 time . time () < end time : while 2 # can do another round of c a l c u l a t i o n s 3 calculateAnotherRound ()

  17. Statements: Control Structures ◮ for : Iteration over iterable object ◮ while : Loop while condition is true (no assignments) ◮ else clause for loops: executed unless break was used. 1 for p in PATH: 2 j o i n t = os . path . j o i n (p , filename ) 3 i f os . path . e x i s t s ( j o i n t ) : 4 print ” found as %s ” % j o i n t 5 break 6 else : 7 r a i s e Exception ( ”Not found in PATH. ” )

  18. Statements: Control Structures ◮ for : Iteration over iterable object ◮ while : Loop while condition is true (no assignments) ◮ else clause for loops: executed unless break was used. ◮ if : Condition; used with elif as a replacement for Switch/Case constructs 1 spam score < 3: i f 2 print ” Probably ham . ” 3 e l i f spam score < 6: 4 print ”Might be spam . ” 5 else : 6 print ” probably spam . ”

  19. Statements: Control Structures ◮ for : Iteration over iterable object ◮ while : Loop while condition is true (no assignments) ◮ else clause for loops: executed unless break was used. ◮ if : Condition; used with elif as a replacement for Switch/Case constructs ◮ try / except / else finally : Exception handling 1 try : 2 l o g f i l e = open ( logfilename , ’w ’ ) 3 except IOError : 4 print ”Cannot open log ; l o g g i ng d i s a b l e d . ” 5 l o g g i n g = False

  20. Object Model ◮ Every Python object has ◮ an identity (think memory address) ◮ a type (an object) ◮ a value (e. g. property values) ◮ Behavior can be defined by metaclass (class’s class), class or object ◮ There are no methods, only object bound functions

  21. Basic objects & classes – general None think NULL, nil etc; distinct from unbound name int Integer, C’s long ; transparently changes to arbitrarily long integers bool True and False; subclasses of 1 and 0 float just that, C’s double complex two doubles; 1j * 1j == -1 str Byte sequences, immutable, always interned. Have built in “sprintf” support by overloading the % operator: 1 ” Operation took %.5 f seconds ” % math . pi 2 3 ( ”There are %(count )d days in %(name) ” ) % \ 4 { ’name ’ : ’ December ’ , ’ count ’ :31 }

  22. Basic objects & classes – containers tuple immutable list; created by (expr1, expr2, expr3) ; parentheses optional 1 coords = ( x , y ) 2 normal = ( coords [ 1 ] , − coords [ 0 ] ) 3 4 # i m p l i c i t l y used f o r swapping 5 a , b = b , a 6 7 mixed = (1 , ”spam” , Eggs ( ) )

  23. Basic objects & classes – containers tuple immutable list; created by (expr1, expr2, expr3) ; parentheses optional list mutable list; created by [expr1, expr2, expr3] 1 m y l i s t = [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9] 2 m y l i s t . append (10) 3 4 m y l i s t [ 1 : 3 ] = m y l i s t [ 5 : 1 0 : 2 ]

  24. Basic objects & classes – containers tuple immutable list; created by (expr1, expr2, expr3) ; parentheses optional list mutable list; created by [expr1, expr2, expr3] dict key/value pairs without sequence 1 d i c t i o n a r y = { ” h e l l o ” : ” h a l l o ” , ” water ” : 2 ” wasser ” , 42: ” z w e i u n d v i e r z i g ” } 3 4 # a l t e r n a t i v e c o n s t r u c t i o n 5 d i c t i o n a r y = d i c t ( h e l l o=” h a l l o ” , 6 water=” wasser ” ) 7 8 print d i c t [ ’ h e l l o ’ ]

  25. Basic objects & classes – containers tuple immutable list; created by (expr1, expr2, expr3) ; parentheses optional list mutable list; created by [expr1, expr2, expr3] dict key/value pairs without sequence - no built in type for plain numeric arrays

  26. Class Example 1 class Cart ( o b j e c t ) : 2 ”””The t y p i c a l shopping c a r t c l a s s example ””” 3 def i n i t ( s e l f ) : 4 s e l f . c l e a r () 5 6 def add ( s e l f , what , qty =1): 7 what in s e l f . q u a n t i t i e s : i f 8 s e l f . q u a n t i t i e s [ what ] += qty 9 else : 10 s e l f . q u a n t i t i e s [ what ] = qty 11 12 def c l e a r ( s e l f ) : 13 s e l f . q u a n t i t i e s = {}

  27. Classes 1/2 Creation by keyword class and parent classes 1 class Jackalope ( Jackrabbit , Antelope ) : pass 2 3 class Prime ( i n t ) : pass 4 5 class SomethingNew ( o b j e c t ) : pass 6 7 # bad : summons ghosts from the past 8 SomethingOld : class pass

  28. Classes 1/2 Creation by keyword class and parent classes Constructor init takes self like every other method 1 def Jackalope ( Jackrabbit , Antelope ) : 2 i n i t ( s e l f , amount antelope =0.5): def 3 s e l f . amount antelope = amount antelope

  29. Classes 1/2 Creation by keyword class and parent classes Constructor init takes self like every other method Attribute access as self.attribute , accessible from everywhere 1 def Jackalope ( Jackrabbit , Antelope ) : 2 i n i t ( s e l f , amount antelope =0.5): def 3 s e l f . amount antelope = amount antelope

  30. Classes 1/2 Creation by keyword class and parent classes Constructor init takes self like every other method Attribute access as self.attribute , accessible from everywhere private attributes are created by prepending or 1 class Animal ( o b j e c t ) : 2 i n i t ( s e l f , father , mother ) : def 3 s e l f . f a t h e r = f a t h e r 4 s e l f . mother = mother

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend