列表生成式: range(3) --->[0,1,2] b=[i for i in range(10) if i%2==0] 只有在range(10)中且i%2==0 才能给了前面的i
集合set {11,22,33} 和字典类似 都用大括号 但里面不是键值对 且元素不重复
a=[11,22,33,11,22] b=set(a) a=list(b) 实现了一个列表去重
sys.path.append("../") 模块的导入路径中添加当前路径
修改了某个模块后需要重新导入 from imp import * reload(test) 重新导入加载test模块
a=[11,22,33]
b=[11,22,33]
a==b #True 判断内容
a is b #False 判断id(a)和id(b)
深拷贝和浅拷贝
指向相同的地址即为浅拷贝
import copy
c=copy.deepcopy(a) 拷贝a里面所有的值到另一个空间 即指向的空间不同为深拷贝 深度拷贝是递归深度拷贝的,不管如何引用都可以拷贝出来作为单独的空间中
c=copy.copy(a) 只拷贝指向a的地址到c中 ,且c和a是不同地址 但内容指向的是同一个地址 即只能拷贝第一层 (注意:如果a是不可变类型,那么a 和c是同一个地址)
_x单前置下划线,私有化属性或方法 from somemodule import *禁止导入,类对象和子类可以访问
__num私有属性其实也是可以访问的 需要加上类名 本质上它变成了 _Test__num 可以通过t._Test__num调用
私有变量一般有get set方法 getNum() setNum()
property:
num=property(getNum,setNum)
这样设置时候 可以通过直接赋值的方法给__num私有变量赋值 t.num=200 通过property给__num赋值200 Python解释器内部自动调用get set方法
@property
def money(self.value):
return self.__money
@money.setter
def money(self.value): #money是提供给外界用的名字
self.__money=value
property的另一种用法 getter和setter有同样的名字