- 博客(12)
- 收藏
- 关注
原创 上下文管理器with用法
上下文管理器withclass Foo(object): def __init__(self): print('实例化一个对象') def __enter__(self): print('进入') def __exit__(self, exc_type, exc_val, exc_tb): print('退出')obj = Foo()with obj: print('正在执行')打印顺序:实例化一个对象进
2021-04-07 15:22:32
200
原创 爬虫-大众点评评论信息(思路)
Python爬虫-爬取大众点评评论信息(CSS映射)正常页面显示数据为:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3T31LE19-1608714288689)(C:\Users\lili\AppData\Roaming\Typora\typora-user-images\1608691835561.png)]而打开开发者工具每条评论的个别字是通过标签替换的[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UHVWsThJ-160871
2020-12-23 17:05:45
661
原创 了解简单的正则表达式
正则表达式的简单使用介绍正则表达式的字符和语法贪婪和非贪婪反斜杠介绍 正则表达式并不是某个语言的一部分 。正则表达式是用于处理字符串的强大工具,拥有其自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,单功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;单不被支持的语法通常是不常用的部分。正则表达式的字符和语法贪婪和非贪婪 正则表达式通常用于在文本中查找匹配的字符串。Python中默认是贪婪的(
2020-08-20 20:24:01
230
原创 Python进阶-垃圾回收
Python进阶-垃圾回收垃圾回收机制引用计数标记-清除分代回收触发条件总结 因为现在的计算机内存比较富裕,所以写程序的时候不会太考虑垃圾回收这方面的知识。但是,出来混总是要还的,既然我们不断的向系统索要资源,那么还是要了解一下什么时候以及怎样把资源还回去垃圾回收机制Python中的垃圾回收是以引用计数为主,分代回收为辅引用计数 在Python中每一个对象的核心都是一个结构体PyObject,它的内部有一个计数器(ob_refcnt),程序在运行的过程中会实时的更新ob_refcnt的值,来反映当
2020-08-20 15:21:57
219
原创 Python进阶-多任务
Python进阶-多任务什么是多任务?线程进程协程什么是多任务? 简单来说就是 同时可以运行多个任务两种多任务 并发:指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行 并行:指的是任务数小于等于cpu核数,即任务真的是一起执行的真正的"并行"只能在多核CPU上实现,现实中由于任务数量远远多于CPU的核心数量,所以基本上都是“并发”。 操作系统会自动把很多任务轮流调度到每个核心上执行实现多任务的三种方式 线程、进程、协程线程概念:操作系统能够进行运
2020-08-20 08:22:39
200
原创 Python进阶-互斥锁
Python进阶-互斥锁为什么要使用互斥锁资源竞争产生的原因互斥锁的作用使用互斥锁解决资源竞争的问题总结 在编程中,为了保证共享数据操作的完整性,引入了互斥锁的概念。为什么要使用互斥锁 当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制 线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制是引入互斥锁 互斥锁能够解决资源竞争资源竞争产生的原因 1.多线程共享全局变量 2.多个线程不加限制随意访问全局资源,产生竞争,导致数据错误互斥锁的作用 互斥锁为资源引入一个状态:锁定/
2020-08-13 21:01:44
279
原创 Python进阶-多任务-队列
Python进阶-多任务-队列使用场景队列的性质queue模块队列类别队列基本方法python的编程中有四种队列模式,但是其应用场景不同,此篇文章介绍的是线程之间通信queue。使用场景 总所周知,Python的多线程不是真正的多线程,但是对于io密集型操作还是能发挥其作用的,多线程并发编程的重点,是线程之间共享数据和线程间的通信,为解决线程之间数据共享的问题,Python提供了一个数据类型队列可以用于在多线程并发的模式下,安全的访问数据并且不会造成数据共享冲突。 那么多线程之间是如何进行变量共享的
2020-08-13 20:28:18
580
原创 Python进阶-描述符
Python进阶-描述符什么是描述符 如果一个类实现了__get__()、__set__()、__delete__()中的任意一种方法的类,用这个类创建的对象叫做描述符对象 描述符对象赋值给另一个类的类属性,那么这个类就是描述符描述符分为两种 1.数据描述符:同时定义了__get__和__set__方法的描述符称为数据描述符 2.非数据描述符:只定义了__get__方法的描述符称为非数据描述符描述符作用 访问属性最终执行的是函数...
2020-08-07 08:28:27
212
原创 Python进阶-元类
元类 在Python中一切皆对象,数字、字符串、函数等都是对象,那么利用class关键字创建的类也是一个对象叫做类对象,那么他们都是什么创建的呢? 他们都是由元类创建的,而元类是由自身创建 Python是一种动态类型语言,可以动态的创建变量,那么同样可以动态的创建类,我们可以按照我们的需求通过type去创建所需要的类 总所周知,type函数可以判断对象类型,但是type还有另外一个用法,就是可以创建类type会根据传入的参数不同,执行不同的事情注意:尽量不要让一个函数拥有2种完全不同的功能,P
2020-08-06 15:53:41
89
原创 Python进阶-深浅拷贝
深浅拷贝浅拷贝深拷贝浅拷贝定义 对于一个对象的顶层拷贝(拷贝引用,不拷贝数据) 对于 不可 变类型 Number String Tuple,浅复制仅仅是地址指向,不会开辟新空间 对于 可 变类型 List、Dictionary、Set,浅复制会开辟新的空间地址(仅仅是最顶层开辟了新的空间,里层的元素地址还是一样的),进行浅拷贝 浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象的;改变原始对象中为不可变类型的元素的值,只有原始类型受影响。import copyalist =
2020-08-05 11:26:34
110
原创 Python进阶-三器一闭
Python进阶-三器一闭迭代器生成器闭包装饰器迭代器定义 迭代器是一个可以记住遍历位置的对象,从第一个元素开始访问,知道所有元素被访问结束,迭代器只能向后遍历,不能后退 一个实现了__iter__方法和__next__ 方法的对象就是迭代器可迭代对象 只要能通过for…in…进行遍历的,那么这个数据类型就是可迭代对象 一个实现了__iter__方法的对象就是可迭代对象注意 迭代器一定是可迭代对象,可迭代对象不一定是迭代器判断迭代器和可迭代对象 通过Iterable来判断是否是可迭代对
2020-08-05 10:50:22
258
原创 Python基础
Python基础字符串操作1.find2.index3.count4.replace5.split6.capitalize7.title8.startswith9.endswith10.lower11.upper12.ljust13.rjust14.center15.lstrip16.rstrip17.strip18.partition19.splitlines20.isalpha21.isdigit22.isalnum23.isspace24.join列表操作添加appendextendinsert删除p
2020-08-04 16:56:19
86
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人