python变量与对象
对象是盒子,变量是标签
- 在python中,对象指的是一块内存区域,变量则是贴在这块区域上的标签,用来引用这片区域的值。
- python中的赋值语句,因为对象总是在=右边,变量在等号左边,因此对象总是先于变量创建,正确说法是把某变量分配给某对象,而不是反过来。
对象的标识、类型和值。
- 对象标识,即id()函数返回的值,在对象生命周期中不变。
- 类型,就是对象的类型。
- 值,两个对象的值可能相同,但仍是不同的对象,因为标识不同。
== & is的不同
- ==运算符比较两个对象的值,is比较两个对象的标识。
- 最常用is检查变量绑定的值是不是None,即
x is None
与x is not None
- is运算符速度更快,因为不用调用特殊方法。
- a == b是语法糖,等价于a.eq(b)。
- 继承自object的原始__eq__方法等价于is,但是很多类型会重写__eq__方法,转而考虑值的相等性。
元组的相对不可变性
- 元组里保存的是元素的引用,元组不可变指的是元组中元素的标识不能变,但是如果元素本身是可变的,比如list,那个可以在不改变标识的情况下改变该元素。
- 即元组的不可变指的是标识不可变,而非值不可变。
直接赋值、浅拷贝和深拷贝区别
- 直接赋值得到的副本与原对象标识相同,即完全是相同的对象。
- 不管是浅拷贝还是深拷贝,对象的标识都不同,即副本与原对象是不同的对象,区别在于浅拷贝中副本和原对象中的元素是相同的对象,深拷贝中则不同。
- 调用构造函数
a = list(b)
和使用冒号a = b[:]
的方法得到的都是浅拷贝。
python函数参数
- 与C语言中不同,python中默认引用方式传参,如果传给形参的实参是可变对象,则函数处理可能会改变原实参。如果传入的是不可变对象那当然没问题。
- 不要使用可变类型作为参数缺省值
- 如果函数接收可变参数,需要注意是否修改传入的实参的值。
posted @
2022-03-13 19:47
肖肖凯
阅读(
730)
评论()
编辑
收藏
举报
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~