Deutsch   English   Français   Italiano  
<vgjm1s$ki9n$2@solani.org>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail
From: Mild Shock <janburse@fastmail.fm>
Newsgroups: comp.lang.python
Subject: Re: Two aces up Python's sleeve
Date: Fri, 8 Nov 2024 01:29:48 +0100
Message-ID: <vgjm1s$ki9n$2@solani.org>
References: <seven-20241106014329@ram.dialup.fu-berlin.de>
 <vgg5dn$ij48$1@solani.org>
 <050c2ce9efd8442fb902ecc926afb1ee42fe6c34.camel@tilde.green>
 <vgihe5$9tsc$1@solani.org> <lp4sgdFg90oU1@mid.individual.net>
 <vgjlqg$ki9n$1@solani.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Fri, 8 Nov 2024 00:29:48 -0000 (UTC)
Injection-Info: solani.org;
	logging-data="674103"; mail-complaints-to="abuse@news.solani.org"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
 Firefox/91.0 SeaMonkey/2.53.19
Cancel-Lock: sha1:7JneXaYjmF8CoX/GdUWxJPiax4s=
In-Reply-To: <vgjlqg$ki9n$1@solani.org>
X-User-ID: eJwNyskBwCAIBMCWFrmkHES3/xKSeY9rSExaeJjTybMvz6znmN3I0eyz0KUlQlVllptx30LByMj7x3xsUCAfaGEVxQ==
Bytes: 2747
Lines: 57


For example this article:

https://www.codementor.io/@arpitbhayani/python-caches-integers-16jih595jk

about the integer singletons claims:

 >>> x, y = 257, 257
 >>> id(x) == id(y)
False

But on Windows my recent CPython doesn't do that:

Python 3.14.0a1 (tags/v3.14.0a1:8cdaca8, Oct 15 2024, 20:08:21)
 >>> x, y = 257, 257
 >>> id(x) == id(y)
True

Mild Shock schrieb:
> Hi,
> 
> In Java its possible to work this way
> with the Integer datatype, just call
> Integer.valueOf().
> 
> I am not sure whether CPython does the
> same. Because it shows me the same behaviour
> for small integers that are more than
> 
> only in the range -128 to 128. You can try yourself:
> 
> Python 3.14.0a1 (tags/v3.14.0a1:8cdaca8, Oct 15 2024, 20:08:21)
>  >>> x,y = 10**10, 10**9*10
>  >>> id(x) == id(y)
> True
> 
> Maybe the idea that objects have an address
> that can be accessed via id() has been abandoned.
> This is already seen in PyPy. So maybe we
> 
> are falsly assuming that id() gives na object address.
> 
> Greg Ewing schrieb:
>> On 8/11/24 3:04 am, Mild Shock wrote:
>>> This only works for small integers. I guess
>>> this is because tagged pointers are used
>>> nowadays ?
>>
>> No, it's because integers in a certain small range are cached. Not 
>> sure what the actual range is nowadays, it used to be something like 
>> -5 to 256 I think.
>>
>> BTW you have to be careful testing this, because the compiler 
>> sometimes does constant folding, so you need to be sure it's actually 
>> computing the numbers at run time.
>>
>