《Python 高阶教程》004|可变与不可变:为什么有些 bug 总是防不胜防
很多奇怪的 bug,其实都和可变、不可变有关Python 里有一类 bug 很典型。代码不报错。逻辑看起来也对。运行结果却悄悄变了。更麻烦的是,这类问题往往不是每次都出,一旦出问题,还不太好定位。比如:函数里改了一个参数,外面的数据也跟着变了两个变量看起来像各自独立,结果改一个另一个也受影响默认参数明明只想做个初始值,却越用越奇怪字符串怎么拼接都没事,列表一改就满地连锁反应这些问题背后,绕不开一个核心概念:可变对象和不可变对象。如果第三章讲的是名字、对象、引用,那么这一章讲的就是:对象本身到底能不能原地改变。这件事看起来只是一个小性质,实际上会影响赋值、传参、拷贝、缓存、性能和调试思路。先把结论记清楚:有些对象能原地改,有些不能可变对象,指的是对象创建后,内容可以被原地修改。常见的有:listdictset不可变对象,指的是对象创建后,内容不能被原地修改。常见的有:intfloatboolstrtuple这句话表面简单,但真正要注意的是下面这一层。不可变,不是名字不能变。可变,也不是变量一定会变。它说的是:对象本身能不能在原地改。这个区别非常重要。先看不可变对象:为什么数字变了,其实不是原来的对象变了看
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2524729.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!