![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python
RJJJJJ
这个作者很懒,什么都没留下…
展开
-
多进程
守护线程非守护线程:若一个进程有多个线程,程序不会再主线程结束后就结束,而是在所有线程结束之后才结束守护线程:主线程结束,子线程就结束(主线程结束程序就结束)线程对象.setDaemon(True)数据冲突一般发生在多个线程对同一个数据进行操作的时候。在一个数据被一个线程操作后却还未更新数据时数据被另一个线程操作就会造成数据冲突。解决数据冲突:在数据被一个线程操作时将数据锁住,等该线程返回更新数据后再解锁数据让数据再次可以被线程操作Lock锁类,重量级锁(上锁和解锁都需要手动进行)原创 2020-09-03 19:08:26 · 117 阅读 · 0 评论 -
pyquery、xpath和线程池
pyquery的使用 pyquery的节点操作本质上和jquery一样,一个pyquery对象就是一个容器,容器中的元素就是相关的所有标签,操作pyquery对象会直接操作pyquery中的所有标签。通过html页面创建pyquery对象pyquery(html页面)通过选择器选中标签pyquery对象(css选择器) - 获取选择器选中的标签pyquery对象.find(css选择器) - 获取选择器选中的标签获取标签内容和属性pyquery对象.text()/pyquery原创 2020-09-02 20:08:18 · 126 阅读 · 0 评论 -
bs4的使用
Buautifulsoup创建指定页面对应的解析器BeautifulSoup(需要解析的文档数据,解析器类型(一般是lxml))标签选择器解析器对象.标签名 - 解析器对象中第一个指定标签获取标签名、标签属性、标签内容标签名:标签对象.name标签属性标签对象.attrs - 获取指定标签所有的属性和值对应的字典标签对象.attrs[属性名]标签内容标签对象.string - 获取标签中文本内容(若内容是标签则返回子标签的文本内容,若文本和子标签同时存在则返回原创 2020-08-31 20:15:28 · 150 阅读 · 0 评论 -
多线程
添加线程进程和线程正在运行的应用程序就是进程,进程与进程之间相互独立互不干扰,均运行在专门的运行空间中线程是进程执行任务的基本单元,一个进程默认有一个线程,这个线程叫主线程如果进程中需要主线程以外的子线程,需要手动创建threading模块函数threading是python标准库中提供用来专门解决多线程问题的模块threading.current_thread() - 获取当前线程threading.active_count() - 获取当前进程中活跃线程的个数thread原创 2020-08-31 20:14:10 · 112 阅读 · 0 评论 -
socket
socketServer什么是socketsocket又叫套接字,是实现连接的两个端套接字分为服务器套接字和客户端套接字。服务器套接字会绑定一个固定的IP等待客户端连接,正常情况下一个服务器可以同时和多个客户端保持连接;客户端套接字不需要绑定IP,在需要的时候主动连接服务器套接字socket编程用代码实现能够通信的服务器和客户端python中提供了一个socket模块专门用来支持socket编程服务器套接字创建套接字对象socket(family,type) - 创建套接字原创 2020-08-27 19:53:18 · 112 阅读 · 0 评论 -
数据持久化
文件基本操作文件操作文件内容的操作,主要是文件读操作和写操作文件操作基本操作第一步:打开文件第二步:读文件 - 获取文件内容/写文件 - 将内容写入文件中第三步:关闭文件打开文件open(file,model=‘r’,…,encoding=‘None’) - 以指定方式打开指定文件并返回一个文件对象file - 需要打开文件的路径model - 文件打开方式(决定文件打开后能够支持的是读操作还是写操作;决定打开文件后操作数据的数据类型是文本数据类型还是二进制数据类型) 控原创 2020-08-26 20:10:02 · 245 阅读 · 0 评论 -
异常
异常什么是异常程序在执行过程中遇见错误语法导致程序崩溃异常捕获通过异常捕获的程序让本身会异常的代码能够继续执行怎么捕获异常捕获代码段1中所有异常try: 代码段1except: 代码段2说明:try、except - 关键字,固定写法 代码段1 - 需要捕获异常的代码 代码段2 - 捕获到异常之后需要执行的代码执行过程:先执行代码段1,若执行时遇见异常程序不会报错,会直接执行代码段2,然后接着执行后面的语句捕获代码段1中的指定异常try原创 2020-08-26 00:05:46 · 121 阅读 · 0 评论 -
面向对象编程
类中的方法概念:定义类就是描述清楚这个类是拥有哪些相同功能和属性的集合类中的方法就是对类相同功能的描述方法就是定义在类中的函数三种方法:对象方法定义:直接定义在类中的函数就是对象方法特点:自带self参数调用:对象.方法()类方法定义:类中前加@classmethod装饰器的函数就是类方法特点:自带cls参数调用:类.方法()静态方法定义:类中前加@staticmethod装饰器的函数就是静态方法特点:没有参数调用:类.方法()注意:从语法上来说,原创 2020-08-07 17:18:39 · 177 阅读 · 0 评论 -
正则语法、类和对象
正则语法贪婪和非贪婪当匹配次数不确定时,匹配分为贪婪和非贪婪模式贪婪:在能够成功匹配的前提下,匹配次数尽可能多的匹配,默认情况下都是贪婪的非贪婪:在能够成功匹配的前提下,匹配次数尽可能少的匹配,在不确定的次数后加?就是非贪婪的 如:*?,+?,??,{M,N}?,{M,}?,{,N}? (fullmatch中贪婪与非贪婪没有区别)检测符号检测符号只做检测,不会做匹配\b - 检测是否是单词边界(任何可以隔开单词的符号,如:空格、标点符号、字符原创 2020-08-06 20:14:15 · 107 阅读 · 0 评论 -
模块、包、正则语法
模块什么是模块一个py文件就是一个模块模块间的数据交流我们可以在任意一个模块中使用另一个模块中所有的全局变量(普通全局变量、函数、类)如果想在一个模块中使用另一个模块中的内容必须先导入模块模块分类系统模块:系统已经定义好的模块,可以直接导入使用第三方库模块(其他程序员或机构定义的模块):需要下载放入工程后再导入使用自定义模块:导入后直接使用导入模块导入方式import 模块 - 导入指定模块,导入后可以通过模块名.变量的形式使用该模块中的全局变量from 模原创 2020-08-05 23:55:15 · 202 阅读 · 0 评论 -
装饰器迭代器生成器
装饰器什么是装饰器装饰器的本质就是一个实参高阶函数或返回值高阶函数装饰器的作用就是在不修改原函数的前提下给函数添加功能装饰器语法:def 函数(func): def test(*args,**kwargs): func(*args,**kwargs) 添加新功能 return test说明:函数 - 装饰器对应的函数名,也是装饰器的名字(与添加功能相关)func - 指向的是需要添加新功能的函数test - 指向的是已经添加完功能的新函数有参的装饰器如原创 2020-08-05 23:54:32 · 215 阅读 · 0 评论 -
函数进阶
函数就是变量定义函数时,其实就是在定义一个类型为function的变量,函数名就是变量名;普通变量能做的事函数都能做实参高阶函数实参高阶函数若一个函数的一个或多个参数是函数,那么原函数即为实参高阶函数通过函数体中如何使用该参数来确定应该传什么类型的数据实参高阶函数的应用除了写装饰器以外,一般不会自己定义实参高阶函数,主要使用系统定义好的实参高阶函数系统中常用的实参高阶函数:max/min,sorted/sort,reduce,map…max/minmax/min(序列) -原创 2020-08-03 19:19:54 · 103 阅读 · 0 评论 -
函数的参数、返回值、作用域和匿名函数
参数位置参数和关键字参数根据函数调用时实参的传递方式将实参分为位置参数和关键字参数位置参数 - 调用函数时直接在括号中写多个实参,实参与形参一一对应关键字参数 - 调用函数时以 形参名=实参 的形式来确定实参,位置不影响结果,关键字参数不能重复,不能缺少注意:位置参数和关键字参数可以一起使用,但是位置参数必须在关键字参数的前面,不管以什么形式传参,最终每个参数都要有值参数默认值定义函数时,可以给形参赋默认值,若一个形参有默认值,那么这个参数调用时可以不传参数,若定义函数时有原创 2020-07-31 22:42:20 · 202 阅读 · 0 评论 -
字符串、函数定义和调用
字符串格式字符串语法:带有格式占位符的字符串 % (数据1,数据2,数据3,…)格式占位符:字符串中不同类型的占位符号,固定的 %s - 字符串的格式占位符(任何类的数据都可以赋值) %d - 整数的格式占位符 %.Nf - 浮点数的格式占位符,且控制小数点后有N为小数 %c - 字符的格式占位符(可以给字符或编码值) %() - 固定写法数据 - 最后给字符串中不确定内容赋值的数据,数据的个数和类型要与格式占位符原创 2020-07-30 19:59:05 · 569 阅读 · 0 评论 -
集合和字符串
集合什么是集合(set)集合是容器型数据类型,以{}为标志,多个元素用,隔开集合是可变的(支持增删改操作),无序的集合的元素是不可变的,唯一的(集合自带去重功能)定义空集合:变量 = { }是错的,这样定义出来是空字典,变量=set()定义出来才是空集合增删改查查 – 遍历 for 变量 in 集合: 循环体增 集合.add(元素) - 将指定元素添加进指定集合 集合.update(序列) - 将指定序列中的所原创 2020-07-29 19:58:00 · 412 阅读 · 0 评论 -
元组及字典
元组元组中的元素可以是任何的数据类型元组就是不可变的列表,所以列表中所有不会改变列表的操作都适用于元组元组中一些特有的方法和功能元组只有一个元素时:元组(元素,) – 在唯一一个元素之后必须有逗号定义元组时可以直接用逗号隔开多个元素省略括号,但前提是省略括号不会存在歧义获取元素时可以通过保持变量个数和元素相等,来分别用变量获取对应元素变量1,变量2,变量3 = 元素1 ,元素2 ,元素3 <==> 变量1=元素1,变量2=元素2,变量3=元素3变量个数少于元原创 2020-07-28 19:51:07 · 172 阅读 · 0 评论 -
6列表和元组
列表的增删改增append – 列表.append[元素] – 将指定元素增加到指定列表末尾(不会产生新的数据,在原列表上增加)insert – 列表.insert[下标,元素] – 将指定元素增加到列表的指定下标位置extend – 列表.extend[序列] – 将指定序列中的元素增加到列表的末尾示例:给一个分数列表:[90,56,78,89,45,60,32,100],在列表中所有不及格分数后加一个0scores = [90,56,78,89,45,60,3原创 2020-07-27 19:31:05 · 137 阅读 · 0 评论 -
数字类型与列表学习
数字类型Python中的数字类型有:int(整型)、float(浮点型)、complex(复数)、bool(布尔)int:所有的整数,包括十进制、二进制、八进制、十六进制int数据类型转换:int(数据)除了数字类型以外只有部分str可以转换成int。float:所有的小数,包括科学计数法2e3…float数据类型转换:float(数据)复数不能转换、布尔能转换、str中只含数字的能转换complex:由实部和虚部组成,虚数单位为j实部为0时能省略,虚部为1时不原创 2020-07-24 20:49:40 · 188 阅读 · 0 评论 -
分支和循环结构学习
分支结构(if)if单分支结构格式:if 条件语句: 代码块条件语句是任何有结果的表达式,不能是赋值语句代码块是与if保持一个缩进的代码或代码段,在满足条件语句时执行。执行过程:先判断条件语句是否成立(布尔值是否为True),成立(为True)则执行代码块,否则不执行代码块示例:根据输入的数据值打印奇数或偶数num = int(input())if num % 2 == 0: print('偶数')if not num % 2: print('偶数')if num % 2:原创 2020-07-23 20:07:57 · 140 阅读 · 0 评论 -
运算符和分支结构学习
编译性语言(C、Java等)与Python定义变量的区别编译性语言:定义变量前先定义变量类型再赋值,系统会根据变量类型申请内存空间,之后再将数据与内存空间和变量名关联,更改数据的过程就是先将内存空间中的数据清除再赋新值。由于最初在申请内存空间时内存空间就由变量类型确定了,所以在里面保存的数据的类型和大小就确定了,当保存数据超出内存空间大小时就会导致数据溢出,数据太小时又会浪费内存。Python:定义变量时直接对变量赋值,系统会根据赋值的大小申请内存空间,之后将数据与内存空间和变量名关联,更改数据时就是原创 2020-07-22 19:59:39 · 118 阅读 · 0 评论 -
python初学
Python简介Python是一种解释性语言,与编译性语言C语言、Java等有所不同,C、Java等编译性语言所写的源文件在运行时首先会被编译器编译成可执行文件,之后再执行可执行文件得到结果,而Python作为解释性语言在运行时会直接通过解释器一边解释一边执行代码,相对而言,编译性语言的运行效率更高,而Python的开发效率更高。Python基础语法注释注释是代码中对代码进行解释说明的文字,但它本身不会被执行,不会影响程序的功能。单行注释在注释文字前加一个#,#只会从当前位置注释到本行结束,原创 2020-07-21 22:20:01 · 159 阅读 · 0 评论