Python面试(一)之交换变量值
Python中还有更简洁的更具Python风格的实现,如下
Python的字节码
dis是个反汇编工具,将Python代码翻译成字节码指令。这里的输出如下
Python面试(二) is 和 == 的区别
例子:
is 和 == 的解释
好了,看明白上面的解释后,我们来看下前面的几个例子
打印出 id(a) 和 id(b) 后就很清楚了
总结一下
Python面试(三)可变对象和不可变对象
而 == None背后调用的是__eq__,而__eq__可以被重载
is not None但 == None的例子
开始本篇的正题
例子
再来看一个列表的例子
上面对a修改元素、添加元素,变量a还是指向原来的对象
理解了上面不可变对象和可变对象的区别后,我们再来看一个有趣的问题
明明group1和group2是不同的对象(id值不同),为什么调用group2的add_member方法会影响group1的members
Python面试(四)连接字符串用join还是+
其实很简单
这样对于不同的group对象,它们的members也是不同的对象
所以不会再出现更新一个group对象的members也会更新另外一个group对象的members了。
两者的结果是一样,那么考虑这样一个问题,这两者在性能上有区别吗?
上面的程序有如下的输出
Python面试(五)理解__new__和__init__的区别
上面的代码会输出如下的结果
例子:
上面的代码输出如下的结果
先来看Singleton
再来看下工厂模式的实现
上面的代码输出
如果不用with,我们可能要用下面的代码实现类似的功能