python一切皆对象

在python中一切皆对象

所有的类除了object,都继承object,包括type,type是元类,object是type的对象,type可以动态地创建类,type类可以接受一个类的描述作为参数,然后返回一个类。内置类,object,type都是type类生成的对象

浅拷贝与深拷贝

赋值的本质是,将内存地址交给变量,而这个内存地址指向具体的值。
copy的本质是指针的拷贝,拷贝后的两个指针指向的是同一个值的内存空间,所以浅拷贝会随着原来的值的改变而改变,因为是同一个内存空间,值指向的内存地址是不同的。
deepcopy的本质是,在硬盘中开辟了额外的一片内存空间将值交给内存空间,所以经过深拷贝之后,原来的值发生改变,而深拷贝的值不会随之改变,因为值指向的不是同一个内存空间

 

可变类型和不可变类型

可变类型包括
1.字典
2.列表
3.集合
#其中字典的key值必须是不可变类型
不可变类型包括
1.数字
2.字符串
3.元组

python中的参数传递?

python中一切皆对象,参数传递的本质就是把地址copy一份传递过去,针对可变类型和不可变类型做了不同的处理,所有既不算是指传递,也不算是引用传递

字符编码

计算机的计量单位:比特0huo1(在磁盘中有磁为1)(b)
八个bit成为一个字节byte(B)
1024个字节是1kb
1024kb为1mb
。。。
gbk:是中国汉字的编码方式
Unicode编码(万国码)统一了字符和数字的对应关系
utf-8:目前主流的编码方式,utf-8使用了Unicode对应关系,是Unicode在硬盘上存储的实现

闭包函数

“python中函数是一等公民”===》函数可以赋值给任意一个函数
1.定义在函数的内部
2.对外部作用域有引用

装饰器是闭包函数的一个典型应用,面向切面变成(AOP)

装饰器的模版
def wrapper(func):
  def inner(*args,**kwargs):
    res = func(*args,**kwargs)
    return res
  return inner
#使用
@wrapper
def my_func(a):
  print(a)

#语法糖不能加括号,不然含义就发生了变化,注意识别有无参数