我是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
任何人都可以帮助我实现这个目标吗?
答案 0 :(得分:4)
Python 3不再支持long()
功能。它只有一个内置的整数类型,名为int;但它的行为大多类似于旧的long
类型。所以你只需要在python-3.x中使用int()
内置函数。
此处有关更多信息,请参阅python-3.x中integer
类型的完整变更列表:
PEP 0237:基本上,长期重命名为int。也就是说,只有一个内置的整数类型,名为int;但它的行为大多像旧的长型。
PEP 0238:像1/2
这样的表达式返回一个浮点数。使用1//2
来获取截断行为。 (后一种语法已存在多年,至少从Python 2.2开始。)
删除了sys.maxint
常量,因为整数值不再有限制。但是,sys.maxsize
可以用作大于任何实际列表或字符串索引的整数。它符合实现的“自然”整数大小,并且通常与同一平台上以前版本中的sys.maxint
相同(假设具有相同的构建选项)。
长整数的repr()
不再包含尾随L
,因此无条件地删除该字符的代码将切掉最后一位数字。 (请改用str()
。)
八进制文字不再是0720
形式;请改用0o720
。
答案 1 :(得分:1)
忘记long
与int
或约lL
后缀。如有必要,Python 2.7会将int
提升为long
。并且所有整数在Python 3中都是“长”的(类型被重命名为int
)。
假设整数在Python中具有无限精度。
要在Python中分配和打印大整数,只需分配并打印它:
x = 2**100
print(x) # -> 1267650600228229401496703205376
它适用于Python 2和3.结果是相同的。
答案 2 :(得分:0)
Python解释器根据变量的数据类型分配内存。因此,通过为变量分配不同的数据类型,您可以存储整数,字符串和长整数。
>>> a = "Hello"
>>> b = 123
>>> c = 123.0
>>> d = "a"
>>> type(a)
<type 'str'>
>>> type(c)
<type 'float'>
对于特定于长类型,您可以附加&#34; l&#34;或&#34; L&#34;在价值,帽子&#34; L&#34;被推荐。蟒蛇 显示带有大写L
的长整数>>> e = 1234L
>>> type(e)
<type 'long'>
>>> f=1234567891223341221
>>> f
1234567891223341221L
对于变量&#34; f&#34;,在显示值时,解释器附加了&#34; L&#34;有价值。
正如Kasra所提到的,在Python 2.x中你可以使用long()来对变量类型进行类型转换,但是Python 3不再支持这种类型。这不是必需的,因为Python解释器通常会在值发生变化时小心,除非你想明确地做到这一点
>>> b = 1234
>>> type(b)
<type 'int'>
>>> long(b)
1234L
答案 3 :(得分:0)
Python 2有int和long的单独类型。 int数据类型是 受sys.maxint的限制,该平台因平台而异,但通常为2 ^ 32-1。 Python 3只有一个整数类型,其行为大致类似于旧的 来自Python 2的long类型。有关详细信息,请参阅第237页。
答案 4 :(得分:0)
Python 2.7.13它可以工作。
x=1
y = long(x)
type(y)
<type 'long'>
答案 5 :(得分:-1)
你不需要在python中将变量定义为'long'。 Python默认会处理它
例如:
>>> x = 1243254675876586798
>>> type(x)
<type 'long'>