Immutable and Mutable Types

Duncan Booth duncan.booth at invalid.invalid
Mon Mar 17 12:03:19 EDT 2008


Steven D'Aprano <steve at REMOVE-THIS-cybersource.com.au> wrote:

> On Mon, 17 Mar 2008 10:40:43 +0000, Duncan Booth wrote:
> 
>> Here's a puzzle for those who think they know Python:
>> 
>> Given that I masked out part of the input, which version(s) of Python
>> might give the following output, and what might I have replaced by
>> asterisks?
> 
> There's too many variables -- at least five Python implementations
> that I know of (CPython, Jython, PyPy, IronPython, and the Lisp-based 
> implementation that I can never remember the name of), and given that 
> this is an implementation-dependent feature it could have changed at
> any time, in any version number (say, between minor releases). And
> there's literally an infinite number of ways to get b equal to an int
> with the value 1.

True, there are a lot of variables, but perhaps not as many as you think. 
For example, you can't get that output from IronPython or PyPy (or at least 
not the versions I have kicking around) as they won't print 'yes!' for the 
first test. You are correct though it is possible with both CPython and 
Jython.

> So I think unless somebody happens to have stumbled across this 
> behaviour, it's not predictable.
> 
> But having said that, I'm going to take a stab in the dark:
> 
> The line "b = ****" should be "b = int('1')"
> 
> and the version is CPython 1.4.
> 
> Am I close?
> 
I don't have a copy of 1.4 to check so I'll believe you, but you can 
certainly get the output I asked for with much more recent versions.

For the answer I actually want each asterisk substitutes for exactly one 
character.



More information about the Python-list mailing list