Noob questions about Python

Bruno Desthuilliers bdesth.quelquechose at free.quelquepart.fr
Wed Oct 17 16:05:36 EDT 2007


Ixiaus a écrit :
> I have recently (today) just started learning/playing with Python. So
> far I am excited and impressed

Welcome onboard then !-)

> (coming from PHP background).
 >
> I have a few questions regarding Python behavior...
> 
> val = 'string'
> li = list(val)
> print li.reverse()
> 
> returns nothing, but,
> 
> val = 'string'
> li = list(val)
> li.reverse()
> print li
> 
> returns what I want. Why does Python do that?

list.reverse (like list.sort) is a destructive in-place operation. Not 
returning the object is reminder of the destructive nature of the 
operation. That's a design choice, whether you agree with it or not 
(FWIW, I don't, but I live with it !-)

Note that there's also the reverse() function that returns a reverse 
iterator over any sequence, so you could also do:

li = list('allo')
print ''.join(reverse(li))

> Also I have been playing around with Binary math and noticed that
> Python treats:
> 
> val = 00110
> 
> as the integer 72 instead of returning 00110, why does Python do that?

Literal integers starting with '0' (zero) are treated as octal. It's a 
pretty common convention (like 0x for hexa). FWIW, PHP does just the 
same thing.

> (and how can I get around it?)

You can't. Python has no literal notation for binary integers so far. 
Literal notation for binary ints is not a common feature anyway.

HTH



More information about the Python-list mailing list