2012-12-11 120 views
0

我是Python的新手,我發現這很奇怪(而且很棒)。有人可以解釋嗎?Python:更改變量的數據類型

a = 2.0 
b = 3.1 
if b==3.1: 
    print "%f"%a 
    a = "Hi!" 
    print "%s"%a 
print "%s"%a 


Output: 
2.000000 
Hi! 
Hi! 

怎樣的a類型改變從floatstring? 在C/C++中如何做類似的事情?

+3

python是動態類型的:http://en.wikipedia.org/wiki/Dynamic_typing#Dynamic_typing – Colleen

+4

這不能在C/C++中完成,因爲它們是靜態類型語言,而Python是動態類型語言。 –

+0

謝謝!這真的有幫助! – Enigman

回答

7

Python是dynamically typed語言,這意味着相同的變量可以引用不同類型的對象。像C,C++和Java這樣的語言是statically typed,這意味着類型是在編譯時確定的。在支持面向對象編程的靜態類型語言(如C++)中,可以使用繼承和多態(基類指針)來引用不同子類類型的多個對象,但它不像「 duck typing「你得到了Python。

在C和C++也可以使用通用的void*指針指向任何類型的對象,但你失去由編譯器所提供的type-safety

3

Python是動態類型的。沒有類型聲明,並且任何名稱都可以隨時引用任何值。

靜態類型語言(如C和Java)將類型分配給變量,並且將錯誤類型的值分配給名稱時出錯。 Python沒有這樣的限制。