【问题标题】:Assign and print Long Variable in python在python中分配和打印长变量
【发布时间】:2015-02-22 07:46:54
【问题描述】:
我是 python 新手。我的要求之一是处理长值。问题是我不知道如何分配长值。这个问题可能很傻。但我刚刚开始学习这门语言.我看过一个博客,我尝试过这样的事情:
# Long program in Python
x=1
y = long(x)
print(type(y))
但我收到这样的错误:
Traceback (most recent call last):
File "main.py", line 4, in <module>
y = long(x)
NameError: name 'long' is not defined
谁能帮我实现这个目标?
【问题讨论】:
标签:
python
django
python-2.7
python-3.x
web
【解决方案1】:
Python 3 不再支持long() 函数。它只有一种内置的整数类型,名为int;但它的行为主要类似于旧的 long 类型。所以你只需要在python-3.x中使用int()内置函数即可。
有关更多信息,这里还有在 python-3.x 中输入 integer 的完整更改列表:
PEP 0237:本质上,早就重命名为 int。也就是说,只有一种内置的整数类型,名为 int;但它的行为主要类似于旧的 long 类型。
PEP 0238:像1/2 这样的表达式返回一个浮点数。使用 1//2 获取截断行为。 (后一种语法已经存在多年,至少从 Python 2.2 开始。)
删除了sys.maxint 常量,因为整数的值不再有限制。但是,sys.maxsize 可以用作大于任何实际列表或字符串索引的整数。它符合实现的“自然”整数大小,通常与同一平台上先前版本中的sys.maxint 相同(假设相同的构建选项)。
长整数的repr() 不再包含结尾的L,因此无条件剥离该字符的代码将截去最后一个数字。 (改用str()。)
八进制文字不再是0720 的形式;请改用0o720。
【解决方案2】:
忘记 long 与 int 或 lL 后缀。如有必要,Python 2.7 会将int 升级为long。并且所有整数在 Python 3 中都是“长”的(类型被重命名为 int)。
假设整数在 Python 中具有无限精度。
要在 Python 中分配和打印大整数,只需分配并打印它:
x = 2**100
print(x) # -> 1267650600228229401496703205376
它适用于 Python 2 和 3。结果是一样的。
【解决方案3】:
Python 2.7.13 可以工作。
x=1
y = long(x)
type(y)
<type 'long'>
【解决方案4】:
引用diveintopython3:
Python 2 有单独的 int 和 long 类型。 int 数据类型是
受限于 sys.maxint,它因平台而异,但通常为 2^32-1。
Python 3 只有一种整数类型,其行为与旧的很相似
Python 2 中的 long 类型。有关详细信息,请参阅 pep 237。
【解决方案5】:
Python 解释器根据变量的数据类型分配内存。因此,通过为变量分配不同的数据类型,可以存储整数、字符串和长整数。
>>> a = "Hello"
>>> b = 123
>>> c = 123.0
>>> d = "a"
>>> type(a)
<type 'str'>
>>> type(c)
<type 'float'>
对于长类型,可以在值中附加“l”或“L”,建议使用大写“L”。 Python
显示带有大写 L 的长整数
>>> e = 1234L
>>> type(e)
<type 'long'>
>>> f=1234567891223341221
>>> f
1234567891223341221L
对于变量“f”,在显示值时解释器已经附加了“L”的值。
正如 Kasra 所提到的,在 Python 2.x 中,您可以使用 long() 对变量类型进行类型转换,但 Python 3 不再支持这一点。这不是必需的,因为 Python 解释器通常会注意值的变化,除非您想要明确地做到这一点
>>> b = 1234
>>> type(b)
<type 'int'>
>>> long(b)
1234L
【解决方案6】:
您无需在 python 中将变量定义为“long”。 Python 会默认处理它
例如:
>>> x = 1243254675876586798
>>> type(x)
<type 'long'>