2013-05-07 168 views
0

動態類型語言(即Python)在運行時執行類型檢查,因此變量或參數可以引用任何類型的值。 語言定義是否需要變量和參數不能輸入? 將語言修改爲具有類型的變量和參數是否有意義?動態類型語言中的類型

+0

您原來的問題已關閉。你需要做的不是輕微的措詞改變,而是再次提問。 – Abizern 2013-05-07 15:37:41

+0

多種語言可以做到這一點:漸進式輸入,動態類型語言的類型推斷,契約,你的名字。 – 2013-05-07 15:42:28

+1

提問的方式有什麼問題? – akonsu 2013-05-07 15:47:26

回答

1

這個問題可能會得到關閉,除非有人像@喬恩 - 碟擺好保存。直到那時,我相信任何來自強類型編程背景的人都會爭論至少指定打字的選項。但是在這一天結束時,語言的創建者/修飾者不喜歡足夠的輸入要求,所以不會付出任何努力來允許指定類型的可能性。所以即使它真的很有意義,我也不會指望它發生。

從我簡短的研究,它顯示python不允許指定類型。但你可以使用isinstance檢查類型http://docs.python.org/library/functions.html#isinstance

現在作爲個人意見的問題,我說爲什麼不。如果相關語言的維護者/創建者可以以不影響效率/語言實際意圖的方式進行操作,那麼他們至少應該允許有興趣的人添加指定類型的能力來執行此操作。

0

您可以混合使用靜態和動態類型;有很多語言可以做到這一點。

在最簡單的情況下,您將擁有包含所有類型爲object(使用Python術語)的類層次結構。每個「無類型」變量都有object類型,因此它可以容納任何變量。其他變量可能有更多特定類型,如int

實現仍然需要執行運行時類型檢查,但它可以優化掉編譯時可以確定類型的檢查。

Cython有類似的功能,但它的靜態類型部分卸載到一個C編譯器:

def foo(): 
    cdef int i = 0 # statically typed variable 
    ham = "spam" # dynamically typed variable 

    while i < 10: 
     print(ham) 
     i += 1