![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
文章平均质量分 55
久醉绕心弦,
人生短短几个秋!
展开
-
Python socket编程
socket简称套接字,应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。创建套接字:import sockets = socket.socket(family,type) # 创建套接字对象参数如下:family: 套接字家族可以使 AF_UNIX 或者 AF_INET。type: 套接字类型可以根据是面向连接的还是非连接分为 SOCK_STREAM(TCP套接字) 或 SOCK_DGRAM(UDP套接字)。部分socket对象内建方法:原创 2021-09-03 12:49:19 · 188 阅读 · 0 评论 -
Python 协程
协程协程(coroutine)又称微线程,是Pyhon中另外一种实现多任务的方式,比线程占用更小的执行单元。执行原理协程是线程中一个特殊函数,这个函数执行的时候,可以在某个地方暂停,并且可以重新在暂停处运行;协程进行切换的时候,只需要保存当前协程函数的一些临时变量等信息,然后切换到另外一个函数中执行,并且切换次数以及什么时候再切换到原来的函数,都可以自己定义。一、yield首先通过生成器yield的方式实现协程:运行结果由此可见,会在两个函数fun与fun1中来回切换,从而实现多个任务函数一起执原创 2021-09-02 16:11:58 · 155 阅读 · 0 评论 -
Python 多进程与进程池
进程:一个程序运行起来后,代码+用到的资源称之为进程,它是操作系统分配资源的基本单元。其也会有并发与并行的状态,与多线程不同的是,多进程会充分利用CPU的资源来执行任务。进程的状态:当任务数大于CPU的核数时,部分任务在执行,部分任务在等待执行,因此就会产生不通的状态:1.就绪状态:运行条件以满足,等待CPU执行。2.执行状态:CPU正在执行其任务。3.等待状态:等待某些条件满足,例如一个程序sleep了。multiprocessing模块python中的多线程其实并不是真正的多线程,如果想要原创 2021-09-01 15:35:43 · 760 阅读 · 0 评论 -
Python 队列
queuequeue模块中提供了同步的、线程安全的队列类。这些队列都实现了锁原语,能够在多线程中直接使用。可以使用队列来实现线程间的同步导入以下模块:from queue import Queue, LifoQueue, PriorityQueue一、Queue:FIFO先进先出队列Queueq = Queue() # 创建一个队列q.put('python') # 队列添加数据q.put('java') # 队列添加数据print(q.get()) # 获取队列中的数据print(q原创 2021-08-31 17:04:48 · 195 阅读 · 0 评论 -
python 多线程与线程池
线程:线程(Thread)也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位。线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行并发与并行:单核CUP执行多任务,由于CUP执行代码都是顺序执行的,当执行多个任务的时候操作系统会轮流让各个任务交替执行,由于执行速度过快,感觉是所有的任务同时执行一样,称为并发,当任务数小于CU原创 2021-08-30 16:44:12 · 1115 阅读 · 0 评论 -
python 内存管理机制
一、引用计数机制通过sys模块中的getrefcount()方法查看引用计数增加:1.对象被创建2.对象被别的变量引用(另外起名字)3.对象被作为元素,放到容器中(比如被当作元素放在列表中)4.对象被当成参数传递到函数中import sys>>>>li = [] # 创建对象 +1>>>>li2 = li # 被别的变量引用>>>>li3 = [li,1] # 作为元素放到容器中>>>>sy原创 2021-08-26 14:58:39 · 69 阅读 · 0 评论 -
Python中setattr()、getattr()、hasattr() 函数
一、hasattr(object,name):检查 object 对象是否包含名为 name 的属性或方法,有返回True,否则返回False。class A: name = 'test' def func(self): return "hello"a = A()print(hasattr(a, "name"))print(hasattr(a, 'fun'))print(hasattr(a,'test'))>>>>True&原创 2021-08-24 15:22:57 · 237 阅读 · 0 评论 -
Python 内置类属性
1__doc__:类的文档信息class Test: """类的文档信息""" pass print(Test.__doc__)>>>>类的文档信息2__class__:获取对象的类名称class Test: passt = Test()print(t.__class__)>>>><class '__main__.Test'>3__dict__:以字典的形式获取对象(类)的所有属性原创 2021-08-20 10:37:19 · 264 阅读 · 0 评论 -
Python 上下文管理器with
上下文管理器是一个Python对象,其中必须包__enter__(self)和__exit__(self,exc_type, exc_val, exc_tb)方法,在使用with语句初始化上下文,以及完成with块中的所有代码时,采用可调用的形式。举例:正常打开一个文件f = open("file.txt", "w")f.write("python")f.close()使用with:with open ("file.txt", "w") as f: # 自动关闭文件 f.write("py原创 2021-08-18 22:18:52 · 114 阅读 · 0 评论 -
Pyhton 单例模式及实现方法
类每次实例化时创建一个新的对象,始终返回的都是第一次创建的对象。如下初始化对象时会产生两个对象class Test: passm = Test()m1 = Test()print(m)print(m1)<__main__.Test object at 0x000001F7E062A4F0><__main__.Test object at 0x000001F7E062A730>方式一、通过装饰器的方式实现代码如下:def derocator(cls)原创 2021-08-18 13:42:06 · 152 阅读 · 0 评论 -
Python魔术方法
在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”(魔术方法。常用的魔术方法详解:1__init__:构造器,当一个实例被创建的时候调用的初始化方法class Test: def __init__(self): print("__init__方法")Test()__init__方法2__new__:在对象初始化之前调用的第一个方法正常定义的类是继承于Object类,而使用的是父类里面的__new__方法,如果重写new方法要调用原创 2021-08-18 11:42:00 · 381 阅读 · 0 评论 -
Python 装饰器中的@wraps()的作用
装饰器,其原理是在不修改原功能函数的基础上而扩展新的功能,而@wraps的主要作用是来消除被装饰之后的副作用,保留被装饰函数的原有属性。举例:如下fun没有被装饰之前获取函数名,字符串注释def decorator(fun): def wrapper(): """wrapper文档字符串""" fun() return wrapperdef fun(): """fun文档字符串""" print("----fun----")print原创 2021-08-18 10:35:40 · 982 阅读 · 0 评论 -
Python 装饰器(二)进阶
上一篇介绍过普通函数的装饰器的简单用法,如果被装饰的函数需要传入参数,那装饰器则不能使用。因为装饰器中返回的函数并不能接受参数。一、带参数的功能函数def decorator(fun): def wrapper(): print('---start---') fun() print('----end---') return wrapper@decoratordef fun(a,b): print(a+b) fun(1,2)运原创 2021-08-15 23:38:54 · 103 阅读 · 0 评论 -
python 装饰器(一)
装饰器本质上是一个Python函数,其可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。而实现装饰器的方式叫做闭包。闭包函数可以看这篇。定义一个闭包函数:其返回结果为wrapper函数def fun(a): def wrapper(): print('---start---') print(a) print('----end---') returnb = fun(11) #print(b)b() #运行结果:&原创 2021-08-13 16:27:10 · 136 阅读 · 0 评论 -
python 高阶函数与匿名函数
一、高阶函数1、filter函数filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表,接收两个参数:参数1:过滤规则的函数参数2:可迭代对象#语法filter(function, iterable)返回结果是迭代器。举例:过滤出列表li中的偶数li = [2, 22, 44, 33, 11]# 定义处理规则的函数def fun(x): return x % 2 == 0# 调用过滤函数filter()传入函数fun,可迭代对象li原创 2021-08-13 11:37:58 · 102 阅读 · 0 评论 -
python 可迭代对象、迭代器与生成器
一、可迭代对象 IterablePython 中能够使用for循环遍历,逐一返回其成员的对象称为可迭代对象,其中包括:序列类型:如ist、str、tuple非序列类型:dict、set等# 通过Iterable来判断结果为Truefrom collections.abc import Iterableli = [1, 2, 3]st = 'python'dic = {'name': 'python'}tup = (1, 2, 3)se = {1, 2, 3}print(.原创 2021-08-11 16:01:39 · 170 阅读 · 0 评论 -
python 推导式
推导式(comprehensions),也叫解析式,是Python的一种独有特性,是可以从一个数据序列构建另一个新的数据序列的结构体。一、列表推导式举例:生成0到10的列表,通常实现方式如下:li=[]for i in range(11): li.append(i)print(li)运行结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10]而列表推导能够通过非常简洁的代码构造一个新的列表,其基本语法如下:[表达式 for 变量 in 可迭代对象]实现以上需求:原创 2021-08-09 22:06:52 · 117 阅读 · 0 评论 -
python命名元组
Python的元组不能为元组内的元素进行命名,获取值时只能通过下标索引来获取如下:t = ('test','男','18')t[0]t[1]结果:test男而命名元组可以来构造一个含有字段名称的元组类,通过collections.namedtuple来定义:from collections import namedtuple方式一:user = namedtuple('User', ['name', 'age','gender'])方式二:user = namedtuple(原创 2021-08-09 16:00:44 · 561 阅读 · 0 评论 -
python闭包函数
什么是闭包函数在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包。普通函数结束时,函数的内部的对象都会释放掉,还给内存,而局部变量也会消失。而闭包中被内部函数引用的变量,不会因为外部函数结束而被释放掉,而是一直存在内存中,直到内部函数被调用结束。包函数的三个条件:1.函数内部嵌套一个函数2.外层函数返回的是内层的函数名3.内存函数引用外部作用域的非全局变量如下:# 闭包函数实例# func为外部函数def func(n): a = 10原创 2021-07-30 10:40:18 · 171 阅读 · 0 评论 -
Python正则表达式入门篇
正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成匹配或替换。关于正则表达式的对象操作使用内置re模块。先来看下re模块的常用方法:search:根据输入的正则表达式,扫描要匹配的所有字符串,并获取匹配结果,只有一个结果,没有则返回None。match:根据输入的正则表达式,从字符串的开始位置进行匹配,并获取匹配结果,只有一个结果。没有则返回None。findall:查找字符串中所有出现的正则表达式模式,并返回一个匹配列表,没有则返回空列表。举一个简单的例子原创 2020-06-28 17:02:28 · 199 阅读 · 2 评论 -
Python 类继承与多重继承
python中新定义一个类称为子类,被继承的类称为父类;子类继承父类后就拥有了父类的所有特性。#语法格式class 子类名(父类名): pass如下:定义了Person类,一个Student类,但是Student类完全可以使用Person类中的方法或着属性,这时候就可以继承;继承之后当实例化Student之后,就可以调用Person类中sleep实例方法。这里的Person是有初始化属性name的,所以Student也会继承父类的初始化属性,而不需要再Studet中单独去定义,所以再实例化St原创 2020-05-21 10:35:03 · 1640 阅读 · 0 评论 -
Python 类与对像--属性和方法详解
类:类是抽象的概念,是一种数据结构,就好比生活中拥有相同属性的同一类的事物。比如人类,动物类,汽车类…等等对象:python中一切皆对象,对象就是类生产出来的真实物体,又被称为实例。比如动物类里面的对象:大象,狮子,老虎等等。在python中定义一个类使用关键字class:对像的表示方法是:object=类名(),如下Animal类产生了一个对象tiger,这个过程叫实例化,tiger就是实例对象。类属性:类属性是整个类共有的特征,每个成员都一样的,其他的类不一定具备。比如定义一个男人类原创 2020-05-19 17:18:59 · 354 阅读 · 0 评论 -
Python os模块常用方法详解
os模块是python中用于访问操作系统功能的内置模块。os.path 模块主要用于获取文件的属性,处理系统路径相关的操作。接下来介绍几种常用的方法:os.path.abspath():获取文件的绝对路径。下图是项目目录以下代码执行完以后返回的是demo1的绝对路径这里的__file__指的是当前文件,输出的是一个绝对路径(pycharm会自动输出绝对路径)但是如果在cmd中运行此文件的话得到会是一个相对路径所以如果获取绝对路径还是使用os.path.abspath()。os.pa原创 2020-05-15 14:56:15 · 1045 阅读 · 0 评论 -
python 模块导入---基础详解
python的模块(module),是以.py结尾的文件,包含了 Python 对象定义和Python语句;模块导入可以在一个模块中使用导入模块中的代码操作(函数、类、变量…),其作用可以更好的组织代码,提高代码的复用性。模块大致可以分为三类:内置模块:python自带的模块,例如上篇接触到的traceback模块…第三方模块:别人写好的模块,需要pip install 安装自定义模块:自己写的模块导入方式:第一种:import 路径.路径.模块 ; 路径从项目的根目录开始 第二种:fro原创 2020-05-13 17:11:49 · 831 阅读 · 0 评论 -
python 异常之捕获、处理
在Python无法正常处理程序时就会发生一个异常,程序就会停止运行,把异常信息抛出。如下,当代码执行到除0的时候,0不能当作被除数,这时出现异常,print(‘end’)就不会再执行。如果发生异常时不结束程序,可以用try…except去捕获异常,然后处理异常,让程序继续执行。try…except的语法:// An highlighted blocktry: 有可能出现异常的代码expect 异常信息: 出现异常时要运行的代码 再来看除0的例子:当然如果不会出现异常的代码放到try原创 2020-05-11 17:38:57 · 2276 阅读 · 1 评论 -
python 文件基本操作
python对文件的操作步骤基本分为:打开文件open()→操作文件(读read() / 写write())→关闭文件close()。文件读取:这里case.txt文件在当前目录下,所以在不写绝对路径的情况下可以直接打开。需要注意的是每次打开文件后一定要记得close(),因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的,但是需要每次都去调用close()函...原创 2020-05-08 16:25:08 · 328 阅读 · 0 评论 -
python 常用内置函数详解
python 一共包含68个内置函数,官方网址:https://docs.python.org/3/library/functions.html.接下来介绍几个目前接触到的函数,后续持续更新…abs()返回一个数字的绝对值。参数可以是整数或浮点数。如果参数是复数,则返回其大小:bool()返回一个布尔值,即True或False;非0、非空即为True。format():将值转...原创 2020-05-08 11:02:07 · 529 阅读 · 0 评论 -
python 全局变量与局部变量
全局变量和局部变量的区别在于作用域,在整个py文件中声明的变量为全局变量,全局范围都可以使用;函数体内声明的变量为局部变量,只能在函数中使用。如图:这时如果不调用函数,直接在函数外使用局部变量a的话就会报错:如果全局变量与局部变量名相同,调用函数时会优先引用函数体内的局部变量:如果函数体内没有局部变量则会引用全局变量,如下把局部变量注释后:global作用:如果想在函数内修改全...原创 2020-05-07 16:11:47 · 516 阅读 · 0 评论 -
python 函数(二) 参数类型
python中的函数中传递的参数类型包括:位置参数,默认参数,可变参数、关键字参数。一 位置参数下图函数add中a,b做为参数,函数定义时写的参数为形式参数简称形参;调用函数add()传入的参数3,4为实际参数简称实参。所以在调用函数add时,结果就是7。这样就大大提高了代码的复用性,再来看计算两数之间的和,就不用每次都去修改函数内部的代码,将两数作为实参传给函数就行。这里实参与形参需...原创 2020-04-29 16:32:26 · 518 阅读 · 0 评论 -
python 函数(一)定义
python 函数之前接触过的有len(),print(),range()…等等,这些都是python定义好的内置函数,比如下面些就是已经定义好的函数,我们可以直接拿来用的,(再Pycharm中选中函数Ctrl+B)。除此之外我们自己还可以定义一些函数,来提高代码的重复利用率。语法:def 函数名(参数列表): 函数代码块 比如定义一个add函数,必须以def关键字开头,冒号后面加...原创 2020-04-28 17:46:47 · 273 阅读 · 0 评论 -
python while循环语句
while 循环语句与for循环类型,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务;但主要应用场景没有for循环多。基本用法:while 判断语句: 代码块/执行语句判断条件可以是任何表达式,返回结果是bool类型,其实就是加强版的if,在满足的条件下循环执行其分支下的语句,当条件不满足时结束循环。举例:循环条件是index<3,所以当index<3时就会...原创 2020-04-26 13:10:02 · 260 阅读 · 0 评论 -
python for循环 / 嵌套循环
python for 循环可以遍历任何一个序列的对象。列表、字符串、字典、元组、集合等序列类型。#语法格式for 迭代变量 in 列表|字符串|字典|元组|集合: 代码块li是遍历对象,x是迭代变量用于存放从序列类型li中读取出来的元素。遍历结果数据类型不变。遍历字符串:遍历字典:for循环遍历字典默认取到的是字典中的key。如果取所有的value,可以用字典的value...原创 2020-04-24 15:58:05 · 11313 阅读 · 0 评论 -
python if else 判断语句
python判断语句是通过一个或多个条件表达式的执行结果(True或False),来决定是否执行代码块;当其中的一个条件满足,其他条件的分支自动屏蔽,不会执行。基本形式:if 条件表达式1: 代码块1else(没有表达式,剩下所有的情况): 代码块4如果有多个条件表达式时:if 条件表达式1: 代码块1elif 条件表达式2: 代码块2elif 条件表达式3: 代码块3...原创 2020-04-24 11:44:16 · 1568 阅读 · 3 评论 -
python set 集合详解
集合集合(set)是一个无序的不重复元素序列,集合内有重复元素会自动去重的;使用大括号{},或set()方法来创建。还可以用来字符串去重,但是字符串会被分割:因为集合是无序的所以不能用索引或切片来获取元素集合之间的运算,每个操作都有两种表示方法;这里以a集合,b集合为例。a - b或a.difference(b)判断两个集合中包含的元素:a | b或a.union(b) 集合a...原创 2020-04-23 18:54:53 · 1895 阅读 · 3 评论 -
python 字典、元祖详解
字典python中的字典是最常见的数据类型,其作用与列表相似,也是用来存储数据的;由key(键),value(值)组成,每个键值对用冒号:分割。表示方法:字典info={'name':'value_张三','age':18,'gender':'男'}key必须是唯一的,不能重复,value值则不必。获取字典内的值 info[‘name’],如果有重复的key,只会取到一个value...原创 2020-04-22 22:38:10 · 1370 阅读 · 0 评论 -
python 列表及操作详解
列表是python中最常见的数据类型,列表可以储存多种数据类型,可存储整形,浮点型,字符串,字典,列表以及对象等。其定义为方括号[]内以逗号为分隔符。list=[1,1.5,‘字符串’,[‘列表’,2],{‘dict’:3,‘dict2:4’}]获取列表长度及获取某一个元素,方法跟字符串一样。len()获取长度,索引,切片获取元素输出结果:该元素是什么数据类型,得到结果就是什么类型...原创 2020-04-19 21:59:30 · 919 阅读 · 0 评论 -
python 字符串格式化 format()
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。基本语法是通过 {} 和 : 来代替以前的 % ,{}为占位符。格式化输出用户输入{}占位符与format(参数),参数不限个数,位置可以不按顺序但是传参数量必须大于{}占位符的数量,否则报错设置指定位置{num},num是format()传参的索引位置num要么全写,...原创 2020-04-19 14:43:02 · 330 阅读 · 0 评论 -
python 字符串操作(二) 内置函数
字符串大小写处理upper()全部大写;lower()全部小写;title()首字母大写;capitalize()首字母大写,其余小写;swapcase()大小写互换字符串替换 replace()替换用replace()方法,语法是replace(旧值,新值,替换次数),替换次数默认是全部。查找指定字符 find() index()查找指定字符返回的是字符串的索引位置,查到匹配字符...原创 2020-04-18 23:40:27 · 353 阅读 · 0 评论 -
python 字符串操作(一)索引 切片
字符串定义字符串是python中最常见的数据类型,创建字符串只需用引号括起来分配给一个变量即可,引号可以是单引号(’ ‘),双引号(""),三引号(’’’ ‘’’)。三引号与其他两种引号的区别是可以打印多行字符串。还有三引号也可以用做注释,前面写过。字符串操作①字符串可以用 运算符+ 号拼接字符串 * 数字,达到重复字符串效果字符串成员运算,判断特定值是否在字符串中,可以使用关...原创 2020-04-18 00:15:47 · 1293 阅读 · 0 评论 -
python 运算符
python运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。在Python中常见的运算符有: +、-、、/、*/<、>、!=、//、%、&、|、^、~、>>、<<、<=、>=、==、not、and、or一 算数运算 + - * / %注意0不能作为被除数,会报错常用的还有%模运算,取余数,例如2%2余0。可...原创 2020-04-17 14:01:59 · 493 阅读 · 0 评论