相关疑难解决方法(0)

"是"运算符与整数意外行为

为什么以下在Python中出现意外行为?

>>> a = 256
>>> b = 256
>>> a is b
True           # This is an expected result
>>> a = 257
>>> b = 257
>>> a is b
False          # What happened here? Why is this False?
>>> 257 is 257
True           # Yet the literal numbers compare properly
Run Code Online (Sandbox Code Playgroud)

我使用的是Python 2.5.2.尝试一些不同版本的Python,似乎Python 2.3.3显示了99到100之间的上述行为.

基于以上所述,我可以假设Python在内部实现,使得"小"整数以不同于大整数的方式存储,is运算符可以区分.为什么泄漏抽象?当我不知道它们是否是数字时,比较两个任意对象以查看它们是否相同的更好的方法是什么?

python int identity operators python-internals

476
推荐指数
11
解决办法
6万
查看次数

C如何实现大数字的Python赋值

事实上,Python是用C语言编写的,实际上是一个C程序,这让我想知道如何处理十进制数字赋值.

C程序如何实现非常大的十进制数(大于int或long)的Python变量赋值?

例如:

a=10000...  # a=(10^1000)
Run Code Online (Sandbox Code Playgroud)

当在python中运行时,我知道值太大,以至于在内存中需要很多单词,所以C程序显然会这样做,但是如何?

C中的每个变量都有一个类型,但C编译的代码不知道该数字有多大.

(python)C程序如何处理该赋值?(以及对这些变量的操作)

c python variable-assignment

12
推荐指数
1
解决办法
242
查看次数