該語句是否正確?Python數據類型
Python對容器或變量不執行嚴格類型 。有了這個概念 ,開發人員可以設計一個 容器,以便容納不同類型的 數據
我正在做關於Python的文章,發現這種說法在random site的,只是想知道如果任何人都可以澄清這對我來說,請。
該語句是否正確?Python數據類型
Python對容器或變量不執行嚴格類型 。有了這個概念 ,開發人員可以設計一個 容器,以便容納不同類型的 數據
我正在做關於Python的文章,發現這種說法在random site的,只是想知道如果任何人都可以澄清這對我來說,請。
考慮這個名單
mixed = [ "hello", 3.1415926, 42, (1+2j) ]
的列表中有4項,每一個不同的類型。
在Java中,您必須聲明一個類型。
List<String> javaList= new LinkedList<String>();
這個Java列表只能存放String對象。
是的,它是真的。
除了用於設計容器,常規列表可以容納幾種類型
>>> 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
是一種
在Python中一切都是對象:
>>> id("hello world")
4312841696
在這裏,你可以看到即使是一個文字(在這種情況下,一個字符串)也有一個爲它保留的內存空間。
>>> class Foo(object):
... pass
...
>>> id(Foo)
4297723600
即使是類也是對象的實例。所以,考慮到這點,list/dict/set只包含對象的引用,而不管它們是什麼類的實例。
>>> a = [40L, "test", Foo, Foo()]
>>> a[0]
40L
>>> a[1]
'test'
>>> a[2]
<class '__main__.Foo'>
>>> a[3]
<__main__.Foo object at 0x1010e8710>
祝你好運!
numpy
)都可以很好地使用它。正如其他答案註釋,這是蟒蛇當然是真的。我還想指出,這是幾種高級語言的特性,包括Ruby甚至JavaScript(iirc)。就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++類似的解決方案使用指針中的孔隙能夠 但類型檢查變得毛狀,至少可以說。
從技術上講,你可以聲明一個`List`作爲`List