我知道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? –