我知道Python是動態類型的,鴨子類型也很強大。在某些情況下,我們必須確保它是事先聲明爲列表或字典以便使用它們......所以我可以說Python也是靜態類型語言嗎?Python靜態類型?
1
A
回答
8
不,Python不是靜態類型的。
在靜態類型名稱綁定到一個類型和一個對象(或值),在Python名稱只綁定到對象。在任何時候,您都可以將名稱重新分配給不同類型的對象,而這在靜態類型語言中是無法做到的。
我不知道你需要事先聲明你的變量是什麼意思,但我的猜測是你實際上只是創建一個空的列表或字典並將其分配給一個名稱。
0
考慮這行代碼:
x = [] # (or {})
你是不是「變量聲明爲一個表(或字典)」使用它之前。您正在創建一個清單([]
)(或字典{}
),然後將其分配爲變量的值(x
)。這並不意味着x
現在有一個類型。你可以一個字符串後分配到x
:
x = 'a string'
和Python會與這個沒有問題。
我不知道你是否被另一種語言的特性弄糊塗了,比如Perl的autovivification特性,它讓你把一個未初始化的標量變量看作是對列表或哈希的引用。你是否認爲Python不太「動態」,因爲它缺乏這樣的功能?如果您確實在尋找這樣的東西,請查看collections模塊中的defaultdict類。
相關問題
- 1. 自己類型的python靜態字段
- 2. Python靜態類型的構造函數?
- 3. 動態類型靜態UITableViewCell
- 4. 靜態與動態類型
- 5. 靜態和動態類型
- 6. Groovy靜態泛型類型
- 7. 單型態VS靜態類型
- 8. 困惑靜態類在python
- 9. 靜態類成員python
- 10. Python - 靜態類變量
- 11. Python中的靜態類
- 12. 靜態類與Python 3
- 13. Python類的靜態方法
- 14. 靜態類型和轉換
- 15. 靜態嵌套類型
- 16. 靜態類型的性能
- 17. 靜態返回類型宏
- 18. 靜態類型混亂
- 19. 靜態主類靜態類?
- 20. 靜態/非靜態內部類:類型參數T隱藏類型T
- 21. Python CGIHTTPServer設置動態與靜態頁面的文件類型
- 22. (泛型)不能使靜態參考非靜態類型T
- 23. C#泛型 - 靜態類型的靜態工廠成員
- 24. 抽象掉在靜態方法在非靜態類類型
- 25. 用於靜態類型化類屬性的Python模塊
- 26. Python靜態或不靜態
- 27. python類靜態方法動態綁定靜態數據成員
- 28. 模板:靜態類型還是動態?
- 29. C++靜態和動態類型鑄造
- 30. 嘲笑靜態與動態的類型
在遇到Python之前,您有沒有可能學習非嚴格的Perl? –