Python 数据类型

2 投票
5 回答
1018 浏览
提问于 2025-04-16 09:40

这个说法是真的吗?

Python对容器或变量的类型没有严格的限制。基于这个概念,开发者可以设计一个容器来存放不同类型的数据。

我正在写一篇关于Python的文章,在一个随机网站上发现了这个说法,想请问有没有人能帮我解释一下,谢谢。

5 个回答

3

正如其他回答所提到的,这在Python中确实是这样。我还想指出,这也是一些高级编程语言的特点,比如Ruby,甚至JavaScript(如果我没记错的话)。至于Java,虽然技术上可以设计一个容器来存放多种类型的数据,但这些类型必须是从同一种类型派生出来的,然后在使用时需要进行类型转换。举个例子,在Java中可以这样写:

Object[] mObjArr = new Object[2];
String mString = "This is a String";
Double mDouble = 3.1415;

void assignElements() {
   mObject[0] = (Object) mString;
   mObject[1] = (Double) mDouble;
}
String getString() {
   if (mObject[0] instanceof String) return (String) mObject[0];
   else return null; // or empty string or throw exception etc.
}
Double getDouble() {
   if (mObject[1] instanceof Double) return (Double) mObjects[1];
   else return null; // or Double.NaN or throw exception etc.
}

在C/C++中也可以用指向空类型的指针实现类似的解决方案,但类型检查就会变得相当复杂。

10

没错,这是真的。

除了设计一个容器,普通的列表也可以存放多种类型的东西。

>>> myList = [1, 3.14, 'string', {'key1':'value1'}, frozenset([5,2,2,3]), [1,2,3],(5+2j),(4.0,5.0), True, type(5)]
>>> myList
[1, 3.1400000000000001, 'string', {'key1': 'value1'}, frozenset([2, 3, 5]), [1, 2, 3], (5+2j), (4.0, 5.0), True, <type 'int'>]
>>> [type(x) for x in myList]
[<type 'int'>, <type 'float'>, <type 'str'>, <type 'dict'>, <type 'frozenset'>, <type 'list'>, <type 'complex'>, <type 'tuple'>, <type 'bool'>, <type 'type'>]

甚至 type 本身也是一种类型。

6

考虑一下这个列表

mixed = [ "hello", 3.1415926, 42, (1+2j) ]

这个列表里有4个项目,每个项目的类型都不一样。

在Java中,你需要先声明一个类型。

List<String> javaList= new LinkedList<String>();

这个Java列表只能存放字符串对象。

撰写回答