python进阶相关总结
1.python中的global,nonlocal的作用域:https://www.cnblogs.com/z360519549/p/5172020.html
python中内存变量的创建过程,涉及到垃圾回收:https://www.cnblogs.com/cnhkzyy/p/9063224.html
2.python中的赋值,拷贝,深拷贝:https://blog.csdn.net/solariens/article/details/53527373
https://blog.csdn.net/weixin_40920290/article/details/81147862
https://www.cnblogs.com/doublexi/p/8745792.html(赋值的时候,数字和字符串在很大的时候,python会开辟新的内存空间,而不是指向同一内存空间)
不可变对象的浅拷贝和深拷贝是一样的,id相同,甚至说欸有浅拷贝和深拷贝的概念,因为对其值修改,都会重新常见一个对象,然后另变量等于它;
无论是深拷贝,浅拷贝,赋值,他们的最小元素都指向同一内存空间(注意是最小元素)
3.python中命名空间与作用域,闭包函数,装饰器
https://www.cnblogs.com/smallmars/p/6890076.html
命名空间是名字和对象的映射,就像是字典,key是变量名,value是变量值
内置名称空间-----------随着python解释器的启动而产生,包括异常类型,内建函数,和特殊方法,可以在代码中国的任何地方调用
全局命名空间-----------文件的执行会产生全局名称空间,指的是文件级别的名字都会放入该空间
局部名称空间-----------调用函数时会产生局部名称空间,只在函数调用时临时绑定,调用结束解除绑定
作用域:
命名空间的可见性就是作用域
- 1. 全局作用域:内置名称空间,全局名称空间
- 2. 局部作用域:局部名称空间
名字的查找顺序:局部名称空间---》全局名层空间---》内置名称空间
查看全局作用域内的名字:globals()
查看局部作用域内的名字:locals()
全局作用域的名字:全局有效,在任何位置都能被访问到,除非del删掉,否则会一直存活到文件执行完毕
局部作用域的名字:局部有效,只能在局部范围调用,只在函数调用时才有效,调用结束就失效
闭包补充:1.定义在函数内部,2.包含对 外部作用域而非全局作用域的应用,3.必须返回内嵌函数
装饰器的基本框架:
https://www.cnblogs.com/wilber2013/p/4657155.html
def timer(func):
def wrapper():
func()
return wrapper
----------------------------------------------------------
#带参数的:
def timer(func):
def wrapper(*args,**kwargs):
func(*args,**kwargs)
return wrapper
4.python中=和+=
https://www.cnblogs.com/erbaodabao0611/p/7646945.html
补充:注意其中(对于+=号操作,可变对象调用__iadd__,不可变对象调用__add__(不可变对象没有__iadd__),__iadd__表示原地操作)
5.python中面向对象
http://python.jobbole.com/82023/ (上)
http://python.jobbole.com/83747/?utm_source=blog.jobbole.com&utm_medium=relatedPosts(下)
http://python.jobbole.com/82280/?utm_source=blog.jobbole.com&utm_medium=relatedPosts(上)
dir() ---------- 查看对象支持的属性、方法
__class__ ---------查看对象的类型
__bases__ ---------查看对象的父类
type和object的关系
http://python.jobbole.com/82285/?utm_source=blog.jobbole.com&utm_medium=relatedPosts
Python对整数对象和字符串对象会进行缓存,所以没有产生新的对象,而是指向了缓存的对象。当超过缓存时,就会创建新的对象
如果两个类型对象的身份不同,那么两个类型对象的值肯定不同。
在Python中,一切都是对象,Python中不存在所谓的传值,一切传递的都是对象的引用(也可以认为是传址)。
python对象 ------------ 身份,类型,值
6.Python类中super()和__init__()
https://www.cnblogs.com/python-nameless/p/6229506.html
class Base(object):
def __init__(self):
print('base create')
class childA(Base):
def __init__(self):
print('create A')
Base.__init__(self)
class childB(base):
def __init__(self):
print('create B')
super(childB,self).__init__()
base=Base()
a=childA()
b=childB()
输出:
Base create
creat A Base create
creat B Base create
#使用super()继承时不用显式引用基类
super()只能用于新式类中
super不是父类,而是继承顺序的下一个类
实例.__class__.__mro__ ---------------类的继承关系
class Base(object):
def __init__(self):
self.age=20
print('Base create')
class childA(Base):
def __init__(self,name):
self.name=name
print('enter A')
Base.__init__(self)
print('age:%s'%self.age)
print('leave A')
如果要想在子类中使用父类中的属性,就要实现父类的__init__方法,不使用的话就不需要。不过,继承就是为了实现
从super()方法可以看出,super()的第一个参数可以是继承链中任意一个类的名字,
如果是本身就会依次继承下一个类;
如果是继承链里之前的类便会无限递归下去;
如果是继承链里之后的类便会忽略继承链汇总本身和传入类之间的类;
实例._类名__属性 访问类的私有属性
8.python装饰器,闭包,迭代器
https://www.cnblogs.com/smallmars/p/6939519.html
https://www.jianshu.com/p/36264e32c3f0
https://blog.csdn.net/qq_27629199/article/details/82156392 -----------yield和send
https://www.jianshu.com/p/d09778f4e055 -----------yield和send
9.python中__new__()方法的使用和__init__()的区别
https://blog.csdn.net/Four_Infinite/article/details/52798919
https://blog.csdn.net/qq_37616069/article/details/79476249
10.python中类的全面解析
https://blog.csdn.net/dreamhua927/article/details/52461816
11.python单例模式
https://blog.csdn.net/qq_33733970/article/details/78792656
http://python.jobbole.com/86687/
https://blog.csdn.net/zhangbinbinz/article/details/78681886 -------------python2与python3的metaclass的使用
https://blog.csdn.net/andybegin/article/details/80775773 --------------type和object的认识
http://python.jobbole.com/21351/ ---------------python中的元类(最好的资料,我遇见的 )
https://blog.csdn.net/zhangbinbinz/article/details/78681886 ----------------python2与python3的metaclass的用法
https://www.cnblogs.com/tkqasn/p/6524879.html
12.Python2与python3的区别
https://www.cnblogs.com/weikunzz/p/6857971.html
13.python中的鸭子类型
https://blog.csdn.net/f1ngf1ngy1ng/article/details/80455830
14.python中的多态
http://www.maiziedu.com/wiki/python/ducktype/
15.python中常用的模块
https://www.cnblogs.com/smallmars/p/6947084.html
http://www.cnblogs.com/wf-linux/archive/2018/08/01/9400354.html
16.python文件的读写
https://www.cnblogs.com/c-x-m/articles/7756498.html
17.python中的多线程,进程,协程
http://python.jobbole.com/86406/
https://blog.csdn.net/baidu_32542573/article/details/80867464
18.格式化输出
https://www.cnblogs.com/fat39/p/7159881.html