分类目录归档:Python

python里面如何拷贝一个对象

  • 赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个;
  • 浅拷贝(copy.copy()),创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另一个也会被改变);

  • 深拷贝(copy.deepcopy()),创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另一个不会改变)

继续阅读

正确理解python中的None

Python中以下数据会被当做 来处理:

  • 常量 None

  • 常量 False

  • 任何形式的数值零 如 0,0.0,0L,0j

  • 空的序列如 ”,(),[]

  • 空的字典如 {}

  • 当用户定义的类中定义了 nonzero()和len()方法,且该方法返回整数0或者布尔值False时

其中 None 的特殊性体现在它既不是0,False,也不是空字符串
它就是一个空值对象

In [10]: type(None)
Out[10]: NoneType

所有赋值为None的变量都相等,None与任何其他非None的对象比较结果都为False

In [12]: a = []

In [13]: a is None
Out[13]: False

In [14]: a == None
Out[14]: False

所以我们不能用None判断 列表为空
下面是正确方法

In [15]: a
Out[15]: []

In [16]: if a:
    ...:     print("a is not empty")
    ...: else:
    ...:     print("a is empty")
    ...:
a is empty