2 Itemizing Python Objects and Nuances
4 $Revision$ $Date$ ken.manheimer@nist.gov
6 Notable lexical entities
7 ========================
11 access and break class
13 else except exec finally
17 raise return try while
19 String Literal Escapes
21 \newline Ignored (escape newline)
22 \\ Backslash (\) \e Escape (ESC) \v Vertical Tab (VT)
23 \' Single quote (') \f Formfeed (FF) \0XX char with
24 \" Double quote (") \n Linefeed (LF) octal value XX
25 \a Bell (BEL) \r Carriage Return (CR) \xXX char with
26 \b Backspace (BS) \t Horizontal Tab (TAB) hex value XX
28 Illegitimate Tokens (only valid in strings): @ $ ?
30 Operating environment (Unix)
32 Shell environment vars:
34 PYTHONPATH: dirs to be prepended to module search path; a la shell PATH
35 PYTHONSTARTUP: names path of file to be loaded on interactive startup
37 Internal (module sys) vars ('import sys' to refer to them):
39 argv - list of command and arguments passed to python script
40 builtin_module_names - list of names of modules compiled in to python
41 ( exc_* values are set only during handling of a raised exception)
42 exc_type - type of exception being handled
43 exc_value - exception's parameter ('raise's 2nd arg)
44 exc_traceback - exception's traceback obj
45 exit(N) - exit from python with status N, by raising SystemExit
46 exitfunc - function hook, to be called on exit if set
47 last_type - type of last unhandled exception
48 last_value - value of last unhandled exception
49 last_traceback - traceback of last unhandled exception
50 modules - list of modules already loaded
51 path - list of strings specifying module-load search path
52 ps1='>>>' - string specifying primary prompt, iff interactive
53 ps2='...' - string specifying secondary prompt, iff interactive
54 settrace - system trace function, used by debuggers, etc
55 setprofile - system profile function
56 stdin - standard input file object
57 stdout - standard output file object
58 stderr - standard error file object
59 tracebacklimit=1000 - maximum number of traceback levels to print
62 Objects - behaviors, special attributes, operations, statements, etc
63 ====================================================================
65 General object aspects
67 Boolean values and operators
69 False values: None, numeric zeros, empty sequences and mappings
70 True values: all other values
72 not X: if X is false then 1, else 0
73 ( 'or', 'and' evaluate second arg only if necessary to determine outcome)
74 X or Y: if X is false then Y, else X
75 X and Y: if X is false then X, else Y
77 Special methods for any type (s: self)
79 id(obj) unique identifier for object (currently, its address)
80 __init__(s, args) object instantiation - see Classes, below
81 __del__(s) object demise
82 __repr__(s) repr() and `...` conversions
83 __str__(s) str() and 'print' statement
84 __cmp__(s) implements <, ==, >, <=, <>, !=, >=, is [not]
85 __hash__(s) hash() and dictionary operations
87 Special informative state attributes for some types:
89 X.__dict__ dict used to store object's writeable attributes
90 X.__methods__ list of X's methods; on many built-in types.
91 X.__members__ lists of X's data attributes
92 X.__class__ class to which X belongs
93 X.__bases__ tuple of X base classes
95 General Name Space behavior and binding
97 Name space search order: local, global, builtin
99 "global" name space = file = module
100 "local" name space = function or method
102 Code Block scopes (ns = name space, cb = containing block)
104 ( global ns generally is containing module, unless overriden by args)
106 Code block type Local ns Notes
107 --------------- -------- -----
108 Module same as global ns
109 Script same as global ns global ns is __main__
110 Interactive cmd same as global ns global ns is __main__
113 'exec' string local ns of cb (or args)
114 'eval' string local ns of caller (or args)
115 'execfile' file local ns of caller (or args)
116 'input' expr local ns of caller
118 Binding operations and exceptions:
120 ~ SyntaxError: on attempt to bind to literals or other non-bindables
121 ~ NameError: on attempt to evaluate unbound atom
123 ( for object attribute functions, obj: object, nm: string, val: any value)
124 getattr(obj, nm) get value of obj.nm
125 hasattr(obj, nm) true if obj has nm attribute
126 setattr(obj, nm, val) set obj.nm to val
128 assignment statement: targ1, targ2, ,,, = obj1, obj2, ,,,
129 deletion statement: del obj1, obj2, ...
130 for loop target identifiers, 'except' clauses (see Statements, below)
131 formal params (see Callables, below)
132 import statement (see Modules objects, below)
133 class and func defs (see Callables, below)
137 global statement: global var, ... # Interpret 'var's as globals
138 X access statement: access ... # control inst and class vars access
140 @ Built-in Exceptions
142 AttributeError On attribute reference or assignment failure
143 EOFError Immediate end-of-file hit by input() or raw_input()
144 IOError I/O-related I/O operation failure
145 ImportError On failure of `import' to find module or name
146 IndexError On out-of-range sequence subscript
147 KeyError On reference to a non-existent mapping (dict) key
148 KeyboardInterrupt On user entry of the interrupt key (often `Control-C')
149 MemoryError On recoverable memory exhaustion
150 NameError On failure to find a local or global (unqualified) name
151 OverflowError On excessively large arithmetic operation
152 RuntimeError Obsolete catch-all; define a suitable error instead
153 SyntaxError On parser encountering a syntax error
154 SystemError On non-fatal interpreter error - bug - report it
155 SystemExit On `sys.exit()'
156 TypeError On passing inappropriate type to built-in op or func
157 ValueError On arg error not covered by TypeError or more precise
158 ZeroDivisionError On division or modulo operation with 0 as 2nd arg
162 @ Integers: 'C' long, >= 32 bits precision; OverflowError if bounds exceeded
163 @ Long Integers: unlimited precision - '2147483648L'
164 @ Floating point: machine double-precision floating point - '2147483648.0'
166 Numeric operations vs special methods (s = self, o = other)
168 s+o = __add__(s,o) s-o = __sub__(s,o)
169 s*o = __mul__(s,o) s/o = __div__(s,o)
170 s%o = __mod__(s,o) divmod(s,o) = __divmod__(s,o)
171 pow(s,o) = __pow__(s,o)
173 s^o = __xor__(s,o) s|o = __xor__(s,o)
174 s<<o = __lshift__(s,o) s>>o = __rshift__(s,o)
175 nonzero(s) = __nonzero__(s) coerce(s,o) = __coerce__(s,o)
176 -s = __neg__(s) +s = __pos__(s)
177 abs(s) = __abs__(s) ~s = __invert__(s) (bitwise)
178 int(s) = __int__(s) long(s) = __long__(s)
179 float(s) = __float__(s)
180 oct(s) = __oct__(s) hex(s) = __hex__(s)
184 range(start=0,end,step=1) create arithmetic progression list
185 round(x, n=0) round floating point x to n decimal places
186 xrange(start=0,end,step=1) create virtual arithmetic progressions tuple
190 ~ TypeError: raised on application of arithemetic opertion to non-number
191 ~ OverflowError: numeric bounds exceeded
192 ~ ZeroDivisionError: raised when zero second argument of div or modulo op
194 **** Collections - Sequences and Mappings ****
196 Collections general operations vs methods (s: self, i: index or key)
198 len(s) = __len__(s) length of object, >= 0. Length 0 == false
199 s[i] = __getitem__(s,i) Element at index/key i, origin 0
203 @ String (immutable sequence): 'string contents'
207 ''' and this begins a 'multi-line' string with embedded quotes...
208 and this is the end of that string.'''
210 `expr` = __repr__(expr), converts arbitrary expr to string
211 chr(int) string of ascii letter at ordinate in (0 <= int < 256)
212 ord(string) ascii ordinate of string (string must be length 1)
213 string % arg format operator, a la C sprintf
214 arg for single directive can be any (suitable) type
215 arg for multiple directives must be tuple or dict
216 dict (mapping) arg uses parenthesized directives that are keys into it
217 supports %, c, s, i, d, u, o, x, X, e, E, f, g, G directives
218 * can be width and precision; directs use of corresponding (int) args
219 * can not be used with dict args
220 flag characters -, +, blank, #, and 0 understood.
221 %s conversion takes any python object, converts using `str()'
222 ANSI directives %p and %n not supported
223 %s conversions do *not* take \000 as end of string
225 @ Tuples (immutable sequence): (oneelem, another, etc)
227 parens may be left off all but empty tuples
228 singletons represented by affixing a comma to an expr
229 empty tuple represented using empty parens
231 @ Lists (mutable sequence): [oneelem, another, etc]
233 assignment - must be 1-1 map of items in target and object sequences
234 deletion - similar rules as for assignment
236 List special methods: see mutable sequence ops vs methods, below
238 Sequences general ops vs methods (s: self, i,j: indices, v: val)
240 All collections general methods, plus:
241 s[i:j] __getslice__(s,i,j), all s[k] s.t. i <= k < j
242 min(s) smallest item of s
243 max(s) largest item of s
244 v [not] in s 1 if v [not] equal to an item in s, else 0
245 s + seq concatenation of s and seq
246 s * num num copies of s concatenated, also, `num * s'
248 Immutable sequence ops vs methods (s: self, i,j: indices, v: val)
250 All collections and sequences general methods, plus:
251 s[i:j] __getslice__(s,i,j), all s[k] s.t. i <= k < j
252 ( For s[i:j], len(self) is intrinsically added to i, j < 0)
253 ( Complex elems of immutable seqs may be mutable, see dictionaries, below)
255 Mutable sequence ops vs methods (s: self, i,j: indices, v: val)
257 All sequences' general methods, plus:
258 ( for non-slice refs, i < 0 intrinsically has len(s) added)
259 ( For slice refs, len(s) *is not* intrinsically added to i, j < 0)
260 ( for assignment/deletion, index refs must point to existing items
261 s[i]=v = __setitem__(s,i,v)
262 del s[i] = __delitem__(s,i)
263 s[i:j] = __getslice__(s,i,j)
264 s[i:j]=seq = __setslice__(s,i,j,seq)
265 del s[i:j] = __delslice__(s,i,j) == s[i:j] = []
266 s.append(seq) == `s[len(seq):len(seq)] = seq' (but faster)
267 s.count(v) number of i's for which `s[i] == v'
268 s.index(v) first i such that `s[i] == v', or IndexError if none
269 s.insert(i, v) == `s[i:i] = [v]'
270 s.remove(v) == `del s[s.index(v)]', or IndexError if v not in s
271 s.reverse() reverse the items of s in place
272 s.sort() permute s items so s[i] <= s[j], for i < j
276 @ Dictionaries: {key1: val1, key2: val2, ...}
278 built-in types as keys must be unalterable: obj & all contents immutable
279 User-defined classes as keys must have __hash__() and __cmp__() methods
280 ~ TypeError is raised if key not acceptable
281 ~ KeyError is raised if reference made using non-existent key
282 key types may vary (contrary to ref man)
284 Dictionaries ops vs methods (s: self, k: key, v: val)
286 all collections general ops, plus:
287 hash(s) = __hash__(s) - hash value for dictionary references
288 s[k]=v = __setitem__(s,k,v)
289 del s[k] = __delitem__(s,k)
290 s.items() = a list copy of s's (key, item) pairs
291 s.keys() = a list copy of s's keys
292 s.values() = a list copy of s's values
293 s.has_keys(k) = 1 if s has key k, else 0
294 ( s.items, .keys, and .values yield random but mutually consistent order)
298 @ User defined functions: 'def name (param-list): suite'
300 suite is not evaluated at statement execution, but at function invocation
301 function parameters, comma separated on param-list:
302 func_code: special attr, code object representing compiled function body
303 func_globals: special attr, ref to global dict of funcs definition module
304 func(arg-list) invocation
306 @ User defined methods: like functions, with extra implicit arg
308 Same as functions, but passed class instance as additional first argument
309 im_self: special attr, method's class instance object
310 im_func: special attr, function object
311 mthd(args) invocation, same as mthd.im_func(mthd.im_self, args)
313 @ Classes: 'class name[ (inheritance)]: suite'
315 inheritance list is evaluated, if any, to identify base classes for name
316 suite is executed in new local name space, which goes to the class object
317 class name is bound in encompassing local name space
318 container for dictionary containing class's ns dictionary
319 __dict__: ro attr, class ns as dictionary object
320 __bases__: ro attr, class' base classes in tuple
321 __init__(self, args..): implements object instantiation
322 __del__(self): implements impending object deletion
326 __dict__: ro attr, class' attribute dictionary
327 __class__: ro attr, instance's class object
329 Callables special method vs ops (f: function)
331 apply(f, args-tuple) call f with args-tuple as arg list
332 compile(str, flnm, kind) compile string into exectuable code object
333 eval(str, glbls=, lcls=) evaluate string as expression (cond_list)
334 filter(f, seq) => seq of seq elems for which f is true
335 map(f, lst, [lst2, ...]) => list of f applied to succesive lsts elems
336 reduce(f, lst, initlzr) => value of f applied to elems and cume result
338 @ **** Null object: `None' ****
340 @ **** Type objects, print as: <type 'int'> ****
341 ( '<...>' form is only for printing - cannot be entered that way,
343 accessed via built-in func 'type()'
344 ( equal only when identical (same id()),
345 so can't just use the string name, must use object with the same str val)
349 functions and methods in a module share module's ("global") namespace
350 function uses "global" statement to instantiate var in global context
351 Modules use "import" to incorp other module's names - see Name Spaces
353 Special attrs, methods, and operations
355 __dict__: attr, module's ns as dictionary; can modify vals but not sruct
356 __name__: ro attr, module's name as string
357 import Instantiate module or module components within another
358 reload(amod) Reread an imported module
362 wrapper around a C stdio file pointer
363 sys.stdin, sys.stdout, sys.stderr are standard io-stream file objects
367 open(nm, mode='r', bufsize=sysdef) return new file object
368 close() A closed file cannot be read or written anymore.
369 flush() Flush the internal buffer, like stdio's `fflush()'.
370 isatty() 1 if file connected to a tty(-like) device, else 0.
371 read(SIZE) Read up to SIZE bytes frm file, less on EOF or no data
372 readline() Read one entire line from the file.
373 readlines() `readline()' til EOF and return list of lines read.
374 seek(OFFSET,WHENCE) Set file's current position, like stdio's `fseek()'
375 tell() Return file's current position, like stdio's `ftell()'.
376 write(STR) Write a string to the file. There is no return value.
380 input(prompt='') like raw input but accept '\' line continuations
381 print exp, exp2, ... Write values to stdout
382 raw_input(prompt='') prompt then read single line of input
384 **** Internal types ****
386 @ Code objects - represent exectuable code - function obj sans context
387 @ Frame objects - represent executable frames - may occur in traceback objs
388 @ Traceback objects - stack trace of an exception
393 * Calls and Evaluation *
395 ( See also Callables, in Objects section above, for ops and methods.)
397 exec: exec expr [ in expr2 [, expr3]] # Dynamic execution of python code
398 return: return [expr] # Leave current func call with expr value
400 * Conditionals and Loops *
401 ( See also Boolean values, above)
403 break: break # Terminate nearest enclosing loop
404 continue: continue # Continue next cycle of enclosing loop
405 if: if cond: suite [\n elif cond: suite \n ...] [\n else: suite]
406 for: for targs in conds: suite [ \n else: suite ]
407 while: while cond: suite [ \n else : suite ]
411 raise: raise expr [, expr2] # Raise exception expr, passing expr2 if any
412 try... # Handle exceptions:
413 try: suite [\n except [cond [, targ]]: suite \n ... \n] [else: suite]
414 try: suite \n finally: suite # Specify a 'cleanup' handler
415 ( two 'try' forms cannot be mixed together)
421 sys Interpreter state (see Operating Environment, above)
422 __builtin__ Access to all built-in python identifiers
423 __main__ Scope of the interpreters main program, script or stdin
424 array Obj efficiently representing arrays of basic values
425 math Math functions of C standard
426 time Time-related functions
427 regex Regular expression matching operations
428 marshal Read and write some python values in binary format
429 strop Miscellaneous string operations
430 struct Convert between python values and C structs
434 getopt Parse cmd line args in sys.argv. A la UNIX 'getopt'.
435 os Portable interface to OS dependent functionality
436 pdb text-oriented debugger
437 rand Pseudo-random generator, like C rand()
438 regsub Functions useful for working with regular expressions
439 string Useful string and characters functions and exceptions
440 wdb window-oriented debugger
441 whrandom Wichmann-Hill pseudo-random number generator
445 dis Python disassembler
446 glob Filename globbing (a la unix shell)
447 grep File string search
448 posixpath Common operations on POSIX pathnames
449 profile Python code profiler
450 repr `...` repr operator with presentation constraints
451 string All of builtin 'strop', plus
452 tb Traceback browser and printer
453 tempfile Produce a temporary-file name
454 util Miscellaneous functions that don't belong elsewhere
458 dbm Dict/file-like interface to Unix ndbm database library
459 grp Interface to Unix group database
460 posix Standardized UNIX OS functionality - see 'os', above
461 posixpath POSIX pathname functions - see 'os', above
462 pwd Access to the Unix password database
463 select Access to Unix select multiplex file synchronization
464 socket Access to BSD socket interface
465 thread Low-level primitives for working with process threads
469 audioop Useful operations on sound fragments
470 imageop Useful operations on images
471 jpeg Access to jpeg image compressor and decompressor
472 rgbimg Access SGI imglib image files
474 @ * Cryptographic Extensions *
476 md5 Interface to RSA's MD5 message digest algorithm
477 mpz Interface to int part of GNU multiple precision library
478 rotor Implementation of a rotor-based encryption algorithm
480 @ * Stdwin * Standard Window System
482 stdwin Standard Window System interface
483 stdwinevents Stdwin event, command, and selection constants
484 rect Rectangle manipulation operations
486 @ * SGI IRIX * (4 & 5)
488 al SGI audio facilities
490 fl Interface to FORMS library
492 flp Functions for form designer
493 fm Access to font manager library
494 gl Access to graphics library
496 DEVICE More constants for gl
497 imgfile Imglib image file interface
501 sunaudiodev Access to sun audio interface
512 Invoke main if running as script: if __name__ == '__main__': main()
514 General object-type miscellany
515 What type is someobj; eg, a list: if type(someobj) == type([]):
516 Convert number to hex or octal string: hex(122) => '0x7a'
517 Convert string to number: eval('0x7a') => 122
519 Sequence Slice conceptualization:
520 +---+---+---+---+---+ Indices point ~between~ chars:
521 | s | t | u | f | f | - first char's left edge = 0,
522 +---+---+---+---+---+ - nth char's right edge = n.
523 0 1 2 3 4 5 (Note that -0 == 0, so it does
524 -5 -4 -3 -2 -1 not count from right.)
526 Sequences miscellany:
527 Create merge of lists: map(None, lst1, lst2, ...)
528 It's faster to list.append(elem) than to list[len(list):] = [elem]
529 Copy structure of seq a to b: b = a[:]
531 Comma (tuple vs expression grouping) nuances:
532 to specify a tuple of one element: ('element',)
533 to specify a tuple containing 1 tuple: (('contained', 'tuple'),)
534 "TypeError: call of non-function" often means a list missing a comma
536 Namespace and object surveillance:
537 get dictful object keys/key-vals: dir(), vars()
538 Current context globals: eval(__name__ + '.__dict__')
539 Current context locals: vars()
540 Methods supported by X (some objs): X.__methods__
541 X's data attributes (some objs): X.__members__