python学习
程序员陈_明勇
一个热爱技术,喜欢专研技术的程序员。成功的路上并不拥挤,有没有兴趣结个伴?
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
python之协程学习
协程协程介绍yield实现协程及扩展yield from的使用替代产出值的嵌套for循环yield from打开双向通道greenlet实现协程greenlet安装greenlet实现gevent实现协程gevent介绍gevent安装gevent使用异步编程同步与异步async/await实现协程async实现await实现Tasks实现简单总结协程介绍协程,又称为微线程,它是实现多任务的另一种方式,只不过它是一种比线程更加轻量级的存在。因为它自带CPU的上下文,这样只要在合适的时机,我们就可以把一个原创 2020-07-09 16:39:11 · 663 阅读 · 0 评论 -
python之进程学习(二)
进程进程间的通信进程池进程池的使用进程池间的通信进程池应用进程间的通信对于线程来说,多线程间共享全局变量,但是进程就不一样了,如果想要在多进程间进行通信,应该搭个桥梁,例如建立一个进程队列代码示例import multiprocessingdef a(q): list1 = [1, 2, 3] for i in list1: q.put(i) print('入队完成!')def b(q): list2 = list() while原创 2020-07-07 22:10:36 · 368 阅读 · 0 评论 -
python之进程学习(一)
进程进程进程定义进程概念进程状态进程与程序的区别python实现多进程创建进程继承Process类创建进程守护主进程join()方法的使用主进程与子进程之间的关系进程与线程的区别进程进程定义进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。并且进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体进程概念进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data原创 2020-07-05 23:33:46 · 561 阅读 · 0 评论 -
python之线程学习(二)
线程引文互斥锁与死锁互斥锁死锁引文上一篇博客留下了一个问题,如何解决资源抢占问题,这篇博客将会细说这个问题互斥锁与死锁互斥锁当多个进程几乎同时修改某一个共享数据时,我们需要进行同步控制,否则会造成读脏数据原理当某个进程要修改共享数据时,我们先将其锁定,此时资源为“锁定”状态,其他线程不能改变,等到资源得到释放之后,才能被其他线程锁定并修改互斥锁保证了每次只有一个线程进行写入操作,从而保证了在多个线程的情况下共享数据的正确性代码示例import threadingimport ti原创 2020-07-05 22:43:13 · 392 阅读 · 0 评论 -
python之线程学习(一)
线程多任务多任务介绍多任务理解多任务的实现方式线程线程介绍线程的使用使用join()方法的使用setDaemon()方法的使用enumerate()的使用,查看线程数量子线程的创建与执行继承Thread类创建线程多线程共享全局变量线程的传参线程的资源抢占多任务多任务介绍对于人来说,一边听歌,一遍跳舞就是多任务。对于电脑,简单的说,同一时间执行多个程序处理数据叫做多任务多任务理解单核CPU单核cpu在处理多任务的时候是根据时间片轮转的方式进行的,比如执行QQ1us,然后切换微信执行1us,最后原创 2020-07-02 21:50:32 · 560 阅读 · 0 评论 -
python之socket编程(TCP)
socket编程(TCP)TCP协议TCP协议介绍Client与Server建立连接Client与Server数据传输Client与Server断开连接TCP协议特点TCP通信TCP客户端(client)的实现TCP服务端(server)的实现优化TCP服务端文件下载器TCP协议TCP协议介绍当应用程序希望通过TCP与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP将在两个应用程序之间建立一个全双工(full-duplex)的通信。这个全双工原创 2020-06-30 15:17:19 · 1227 阅读 · 0 评论 -
python之socket编程(UDP)
socket编程socketsocket介绍socket的使用udp发送数据udp接收数据udp聊天器socketsocket介绍Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。socket的使用udp发送数据步骤1、创建套接字socket.socket([family[, type[, proto]]])family: 套接字家族可以使AF_UNIX或者AF_INETtype: 套接字类型可以根据是面向原创 2020-06-26 13:33:47 · 1085 阅读 · 0 评论 -
python 生成器
生成器生成器介绍在Python中,一边循环一边计算的机制,称为生成器:generator为什么要有生成器列表所有数据都在内存中,如果有海量数据的话会非常消耗内存而生成器在循环的过程中根据算法不断推算出后续的元素,这样就不用创建整个完整的列表,从而节省大量的空间。创建生成器示例代码x = (x for x in range(3))print(x) # generator objectprint(next(x))print(next(x))print(next(x))pri原创 2020-06-24 16:37:28 · 210 阅读 · 0 评论 -
python 迭代器
迭代器迭代是Python最强大的功能之一,是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器是一个可以记住遍历的位置的对象。迭代器有两个基本的方法:iter() 和 next()。可迭代对象可以用for循环遍历的对象都是可迭代对象。str,list,tuple,dict,set等都是可迭代对象。判断是否可迭代除了看内置是否含有__iter__方法来判断该对象是否是一个可迭代的对象之外,我们还可以使用 isin原创 2020-06-24 16:18:58 · 276 阅读 · 0 评论 -
python 元类和type()
元类什么是元类?我们知道,实例对象是由类创建的,那么类是由什么创建的?答案是元类使用type()动态创建一个类type(name, bases, dict) —> a new type示例代码def __init__(self, name): self.name = namedef __str__(self): return "__str__"# 创建一个类,自定义一个类对象identity,添加上面的方法到类里User = type('User', ()原创 2020-06-24 13:27:13 · 209 阅读 · 0 评论 -
python 属性描述符
属性描述符属性描述符介绍属性描述符是一个强大的通用协议,它是properties, methods, static methods, class methods 和super()的调用原理。属性描述符协议属性描述符是实现特定协议的类,只要类里有__get__()、__set__()、和__delete__()方法的其中一个,就称为类为描述符,它能实现对多个属性运用相同存取逻辑的一种方式示例代码class IntDemo(object): def __set__(self, insta原创 2020-06-23 20:27:14 · 316 阅读 · 0 评论 -
python getattr()函数和map()函数的使用
getattr函数和map函数的使用getattr()函数描述语法参数使用map()函数getattr()和map()联合使用getattr()函数描述getattr() 函数用于返回一个对象属性值。语法getattr(object, name[, default])参数object – 对象。name – 字符串,对象属性。default – 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。使用代码举例说明class A(object):原创 2020-06-21 16:39:31 · 381 阅读 · 0 评论 -
python 如何让类支持比较操作
如何让类支持比较操作如果我们定义矩形类,圆的类的话,那就避免不了要实现计算面积的方法,然而当我们想要通过实例对象比较它们面积的大小时(>,<,>=,<=,==,!=),应该怎么实现?在python里,__le__对应的是<=,__ge__对应的是大于等于,__lt__对应的是小于······以此类推total_ordering的使用我们可以使用functools模块里的一个total_ordering装饰器就可以实现实例之间大小的比较示例代码import mat原创 2020-06-18 14:44:54 · 244 阅读 · 0 评论 -
python 如何创建可管理的对象属性
如何创建可管理的对象属性在面向对象编程中,我们把方法看作对象的接口。直接访问对象的属性可能是不安全的,或设计上不够灵活,但是使用调用方法在形式上不如直接访问属性简洁繁琐的实现:person.get_age()person.set_age(20)代码实现class Person(object): def __init__(self, name, age): self.name = name self.age = age def set_age(s原创 2020-06-18 14:15:07 · 210 阅读 · 0 评论 -
python with语句和自定义上下文管理器
with语句和自定义上下文管理器with语句自定义类使用上下文管理器contextlib的使用with语句with是一种上下文管理协议,with语句处理的对象有两个方法,一个是__enter__,另一个是__exit__在进入语句体之前会执行__enter__,语句体执行之后会自动执行__exit__举一个with的用法with open("test.txt", 'r') as f: infos = f.read()自定义类使用上下文管理器前面已经说到了with处理的对象包含_原创 2020-06-18 13:43:14 · 295 阅读 · 0 评论 -
python __slots__的作用
python 是一门动态语言,对于每一个类来说,我们可以在运行的过程中修改每个实例的属性和方法。如果我们不想实例属性被改变,使用固定属性,这是可以使用__slots__属性去实现。代码示例class Player1(object): def __init__(self, name, type, hp, money): self.name = name self.type = type self.hp = hp self.money原创 2020-06-18 13:13:18 · 361 阅读 · 0 评论 -
python 如何派生内置不可变类型并修改其实例化行为
如何派生内置不可变类型并修改其实例化行为练习需求过程分析练习实现练习需求我们想自定义一种新类型的元组,对于传入的可迭代对象,我们只保留其中int类型且值大于0的元素需要定义IntTuple类,继承Tuple类>>> IntTuple([1,3,-1,0,'abc',['a','b'],9])(1,3,9)过程分析创建元组需要传入一个可迭代的对象示例说明>>> tuple(1,) # 数字1为整形,不是可迭代对象,创建的时候发生错误。Traceb原创 2020-06-18 11:03:36 · 231 阅读 · 0 评论 -
python 深入类和对象
深入类和对象1. 鸭子对象和多态1.1 鸭子类型1.2 多态2. 抽象基类2.1 抽象基类介绍2.2 抽象基类应用场景3. type与isinstance3.1 type与isinstance的区别4. 类属性与实例属性4.1 基本查找顺序4.2 多继承查询顺序4. Python对象自省机制4.1 super函数1. 鸭子对象和多态1.1 鸭子类型在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当原创 2020-06-16 09:59:49 · 250 阅读 · 0 评论 -
python学习之路 12 - python面向对象(二)
python面向对象(二)魔法方法1.1__init__()方法1.2带参数的__init__()方法1.3__str__()方法1.4__del__()方法魔法方法在python的类里,提供的__xx__的方法,就是魔方方法。魔法方法有很多,这里举三个常用的方法。1.1__init__()方法如果类里没有定义__init__方法,则python会自动创建。为了能够完成自己想要的功能,可以自己定义__init__方法不管用户有没有定义__init__方法,类里一定有__init__方法代码举原创 2020-06-13 11:28:56 · 402 阅读 · 0 评论 -
python学习之路 11 - python面向对象(一)
python面向对象(一)1 概述1.1 面向过程思想1.2 面向对象思想1.3 特征2. 类2.1 类的定义2.2 定义类2.3 创建对象2.4 添加和获取对象的属性2.5 在方法内通过self获取对象属性面向对象1 概述如今主流的软件开发思想有两种:一个是面向过程,另一个是面向对象。面向过程出现得较早,典型代表为C语言,开发中小型项目的效率很高,但是很难适用于如今主流的大中型项目开发场景。面向对象则出现得更晚一些,典型代表为Java或C++等语言,更加适合用于大型开发场景。两种开发思想各有长短。原创 2020-06-11 04:28:38 · 194 阅读 · 0 评论 -
python学习之路 10 - python函数(三)
python函数(三)1. 高阶函数2. 闭包3. 装饰器的引入4. 装饰器的使用5. 匿名函数1. 高阶函数接收函数作为参数,或者将函数作为返回值返回的函数就是⾼阶函数贴个代码,高阶函数举例:def fun1(n): """判断偶数""" return n % 2 == 0def fun2(func, list1): new_list = [] # 创建一个新的列表 for i in list1: if func(i): # 判断是否为原创 2020-06-08 23:24:18 · 395 阅读 · 0 评论 -
python学习之路 09 - python函数(二)
python函数(二)1. 函数的返回值2. 文档字符串3. 函数的作用域4. 命名空间5. 递归函数1. 函数的返回值返回值就是函数执行以后返回的结果通过return来指定函数的返回值return后面可以跟任意对象,返回值甚至可以是⼀个函数2. 文档字符串help()是Python中内置函数,通过help()函数可以查询Python中函数的用法在定义函数时,可以在函数内部编写文档字符串,文档字符串就是对函数的说明3. 函数的作用域作用域(scope)作用域指的是变量生效的区域原创 2020-06-08 01:02:41 · 220 阅读 · 0 评论 -
python学习之路 08 - python函数(一)
python函数(一)1. 函数简介2. 函数的参数2.1 形参和实参2.2 函数的传递方式3. 不定长参数4. 参数的解包1. 函数简介函数也是一个对象函数用来保存⼀些可执行的代码,并且可以在需要时,对这些语句进行多次调用语法:def 函数名([形参1,形参2,形参3....]): 代码块注意:函数名必须符合标识符的规范(可以包含字⺟、数字、下划线但是不能以数字开头)print是函数对象,print()是调用函数2. 函数的参数2.1 形参和实参形参(形式参数),定义形参原创 2020-06-08 00:43:09 · 201 阅读 · 0 评论 -
python学习之路 07 - python元组&字典&集合
元组&字典&集合1. 元组简介2. 字典简洁2.1 字典的基本介绍2.2 字典的使用2.3 copy()3. 遍历字典4. 集合4.1 集合简介4.2 集合的运算1. 元组简介元组的基本结束元组表现形式tuple元组是一个不可变序列(一般当我们希望数据不改变是,则使用元组,其他情况下基本都用列表)使用()创建元素当元组只有一个元素时,后面的逗号不能省略,如(1,)元组解包指将元组当中的每一个元素都赋值给一个变量2. 字典简洁2.1 字典的基本介绍字典属于⼀种新的数据原创 2020-06-08 00:30:41 · 198 阅读 · 0 评论 -
python学习之路 06 - python列表
python列表1. 序列1.1 基本概念1.2 序列的分类2. 列表2.1 列表的使用2.2 切片3. 通用操作4. 修改列表5. 列表的方法6. 遍历列表6.1 for循环6.2 range(start, stop[, step])1. 序列1.1 基本概念序列是Python中最基本的⼀种数据结构。序列用于保存⼀组有序的数据,所有的数据在序列当中都有⼀个唯⼀的位置(索引)并且序列中的数据会按照添加的顺序来分配索引数据结构指计算机中数据存储的方式1.2 序列的分类可变序列(序列中的元素可原创 2020-06-08 00:02:46 · 191 阅读 · 0 评论 -
python学习之路 05 - 条件控制语句
条件控制语句1. 条件判断语句(if语句)2. input()函数3. if-else语句4. if-elif-else 语句5. while语句6. 循环嵌套7. break和continue8. 作业1. 条件判断语句(if语句)执行的流程if语句在执行时,会先对条件表达式进行求值判断如果值为True,则执行if后的语句如果值为False,则不执行语法:if 条件表达式: 代码块代码块中保存着一组代码,同一个代码块中的代码,要么都执行,要么都不执行代码块以缩进开始,直原创 2020-06-07 15:35:11 · 332 阅读 · 0 评论 -
python学习之路 01-计算机要点
计算机基本概念计算机是什么计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器。特点 : 数值计算 逻辑计算 存储记忆功能总结 : 能够按照程序运⾏、⾃动、⾼速处理数据的现代化智能电⼦设备计算机的组成硬件:⿏标 键盘 显示器 CPU 硬盘…很多很多。软件:PyCharm QQ 浏览器 英雄联盟 刺激战场 钉钉…计算机的语言计算机语言的基本概念概念 :计算机语⾔(Computer Language)指⽤于⼈与计算机之间通讯的语⾔。总结:能够按照程序运⾏、原创 2020-06-07 02:14:54 · 603 阅读 · 0 评论 -
python学习之路 04 - python运算符
python运算符1. 运算符1.1 运算符的概念1.2 运算符的分类2. 算术运算符3. 赋值运算符4. 比较运算符5. 逻辑运算符5.1 not 逻辑非5.2 and 逻辑与5.3 or 逻辑或5.4 非布尔值的与或运算6. 条件运算符7. 运算符的优先级1. 运算符1.1 运算符的概念运算符用于执行程序代码的运算,会针对一个以上操作数项目来进行运算。例如:1+1,其操作数是1和1,而运算符则是“+”1.2 运算符的分类算数运算符赋值运算符比较运算符(关系运算符)逻辑运算符条件运原创 2020-06-07 13:27:04 · 189 阅读 · 0 评论 -
python学习之路 02 - python要点
02 - python要点Python语⾔Python语⾔的基本概念解释型和编译型语⾔的区别Python 的特⾊Python的发展及应⽤搭建环境Python的解释器搭建Python环境Python的交互模式pip⼯具的使⽤Python的第⼀个程序PyCharm的安装和配置PyCharm的安装PyCharm的简单配置Python语⾔Python语⾔的基本概念Python 是⼀种极少数能兼具 简单 与 功能强⼤ 的编程语⾔。你将惊异于发 现你正在使⽤的这⻔编程语⾔是如此简单,它专注于如何解决问题,⽽⾮拘原创 2020-06-07 03:12:56 · 370 阅读 · 0 评论 -
python学习之路 03 - python基本数据类型
python基本数据类型几个概念表达式语句程序(program)函数(function)标识符关键字标识符概念基本数据类型整数和⼩数布尔值和空值变量变量的概念变量的运算字符串什么是字符串转义字符长字符串格式化字符串字符串的其他操作几个概念表达式表达式,是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列⽅法所得的组合表达式特点表达式一般仅仅用于计算一些结果,不会对程序产生实质性的影响如果在交互模式中输入一个表达式,解释器会自动将表达式的结果输出语句原创 2020-06-07 12:43:58 · 468 阅读 · 0 评论
分享