了解python-FAQ
python FAQ#
参考: https://docs.python.org/zh-cn/3.7/faq/design.html#why-are-python-strings-immutable
-
why python str is immutable?
- 一个是性能:知道字符串是不可变的,意味着我们可以在创建时为它分配空间,并且存储需求是固定不变的。这也是元组和列表之间区别的原因之一,list是可变的,初始化建立的时候分配一定空间,当要添加元素时会根据一个算法来为其分配空间。
-
为什么必须在方法定义和调用中显示使用'self'
- 更明显的显示出, 使用是方法或实例属性而不是局部变量。在c++中可以通过缺少局部变量声明来判断,c++和java中编码标准要求实例属性具有m_前缀,
也是类似self这个显式性的语法特性。 - 在派生类中重写基类的方法 c++ 必须使用::运算符, python则不用
- 解决了变量赋值的语法问题: 为了python中的局部变量在函数体中赋值的变量赋值(并且没有明确声明为全局),就必须以某种方式告诉解释器一个赋值是为了分配一个实例变量而不是一个局部变量,
c++通过声明来做到这一点, python则用self来区分,即实例变量和局部变量存在两个不同命名空间中, 当使用self调用某个实例属性时, 无需搜索实例目录。
- 更明显的显示出, 使用是方法或实例属性而不是局部变量。在c++中可以通过缺少局部变量声明来判断,c++和java中编码标准要求实例属性具有m_前缀,
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构