On Aug 31, 7:37 pm, Gregory Ewing <greg.ew...@canterbury.ac.nz> wrote: > Ian Kelly wrote: > > if sys.version_info < (3,): > > getDictValues = dict.itervalues > > else: > > getDictValues = dict.values > > > (which is basically what the OP was doing in the first place). > > And which he seemed to think didn't work for some > reason, but it seems fine as far as I can tell: > > Python 2.7 (r27:82500, Oct 15 2010, 21:14:33) > [GCC 4.2.1 (Apple Inc. build 5664)] on darwin > Type "help", "copyright", "credits" or "license" for more information. > >>> gv = dict.itervalues > >>> d = {1:'a', 2:'b'} > >>> gv(d) > <dictionary-valueiterator object at 0x2aa210> > > % python3.1 > Python 3.1.2 (r312:79147, Mar 2 2011, 17:43:12) > [GCC 4.2.1 (Apple Inc. build 5664)] on darwin > Type "help", "copyright", "credits" or "license" for more information. > >>> gv = dict.values > >>> d = {1:'a', 2:'b'} > >>> gv(d) > dict_values(['a', 'b']) > > -- > Greg
My problem was that I didn't understand the scoping rules. It is still strange to me that the getValues variable is still in scope outside the if/else branches. -- http://mail.python.org/mailman/listinfo/python-list