Python学习笔记
记录Python学习历程
TeenJeen
大专文凭机械系90男,经培训学习Java后工作5年,后裸辞和同事合伙创业,中途道不同退出,目前自由职业,对新技术感兴趣,目前自学Pyhon中...
展开
-
Python之RE模块的使用
RE 模块时Python的标准库模块,直接引入就可以直接使用,具体的功能包含如下:regex = compile(pattern,flags = 0) 功能: 生产正则表达式对象 参数: pattern 正则表达式 flags 功能标志位,扩展正则表达式的匹配 返回值: 正则表达式对象 re.findall(pattern,string,flags ...原创 2020-02-29 16:42:17 · 205 阅读 · 0 评论 -
Python之正则表达式介绍
动机 【1】文本处理已经成为计算机常见工作之一 【2】对文本内容的搜索,定位,提取是逻辑比较复杂的工作 【3】为了快速方便的解决上述问题,产生了正则表达式技术简介 1. 定义 即文本的高级匹配模式,提供搜索,替换等功能。其本质是由一系列字符和特殊符号构成的字串,这个字串即正则表式。 2. 原理 通过普通...原创 2020-02-29 08:58:30 · 208 阅读 · 0 评论 -
Python之协程技术
基础概念 1. 定义: 纤程,微线程。是允许在不同入口点不同位置暂停或开始的计算机程序,简单来说,协程就是可以暂停执行的函数。 2. 协程原理 : 记录一个函数的上下文,协程调度切换时会将记录的上下文保存,在切换回来时进行调取,恢复原有的执行内容,以便从上一次执行位置继续执行。协程本质上就是一个线程,以前多线程任务的切换是由操作系统控制的...原创 2020-02-28 11:38:57 · 184 阅读 · 0 评论 -
Python之IO并发(多路复用)
IO 分类 IO分类:阻塞IO ,非阻塞IO,IO多路复用,异步IO等。 阻塞IO 1.定义:在执行IO操作时如果执行条件不满足则阻塞。阻塞IO是IO的默认形态。 2.效率:阻塞IO是效率很低的一种IO。但是由于逻辑简单所以是默认IO行为。 3.阻塞情况: 因为某种执行条...原创 2020-02-28 09:47:06 · 453 阅读 · 0 评论 -
Python之并发网络通信模型
常见网络模型 【1】循环服务器模型 :循环接收客户端请求,处理请求。同一时刻只能处理一个请求,处理完毕后再处理下一个。 优点:实现简单,占用资源少 缺点:无法同时处理多个客户端请求 适用情况:处理的任务可以很快完成,客户端无需长期占用服务端程序。udp比tcp更适合循环。 【2】多进程/线程网络并发模型:每当一个客户端连接服务器,就创建一个新的进程/线程为该客户端...原创 2020-02-27 17:53:34 · 126 阅读 · 0 评论 -
Python之进程与线程的区别
进程线程的区别联系 区别联系 【1】两者都是多任务编程方式,都能使用计算机多核资源 【2】进程的创建删除消耗的计算机资源比线程多 【3】进程空间独立,数据互不干扰,有专门通信方法;线程使用全局变量通信 【4】一个进程可以有多个分支线程,两者有包含关系 【5】多个线程共享进程资源,在共享资源操作时往往需要同步互斥处理 【6】进程线程在系统中都有自己的特有属性标志,如I...原创 2020-02-27 12:27:17 · 167 阅读 · 0 评论 -
Python之线程的GIL问题
1.GIL是什么 GIL(Global Interpreter Lock)并不是python的特性,而是Python解释器Cpython引入的一个概念。而python的解释器不仅仅只有Cpython,若解释器为Jpython,那么python就没有GIL。官方的解释:In CPython, the global interpreter lock, or GIL, is a...原创 2020-02-27 11:37:15 · 412 阅读 · 0 评论 -
Python之线程的同步互斥与死锁
线程间通信方法 1. 通信方法线程间使用全局变量进行通信 2. 共享资源争夺 共享资源:多个进程或者线程都可以操作的资源称为共享资源。对共享资源的操作代码段称为临界区。 影响 : 对共享资源的无序操作可能会带来数据的混乱,或者操作错误。此时往往需要同步互斥机制协调操作顺序。 3. 同步互斥机制 同步 : 同步是一种协作关系,为完成操作,...原创 2020-02-26 12:23:05 · 229 阅读 · 0 评论 -
Python之线程编程(Thread)
线程基本概念 1. 什么是线程 【1】 线程被称为轻量级的进程 【2】 线程也可以使用计算机多核资源,是多任务编程方式 【3】 线程是系统分配内核的最小单元 【4】 线程可以理解为进程的分支任务 2. 线程特征 【1】 一个进程中可以包含多个线程 【2】 ...原创 2020-02-26 10:11:26 · 251 阅读 · 0 评论 -
Python之进程间通信(PIC)
进程间通信(IPC) 1. 必要性: 进程间空间独立,资源不共享,此时在需要进程间数据传输时就需要特定的手段进行数据通信。 2. 常用进程间通信方法管道 消息队列 共享内存 信号 信号量 套接字 管道通信(Pipe) 1. 通信原理 在内存中开辟管道空间,生成管道操作对象,多个进程使用同一个管道对象...原创 2020-02-26 09:12:20 · 746 阅读 · 0 评论 -
Python之multiprocessing模块及进程池
进程创建方法 1. 流程特点 【1】 将需要子进程执行的事件封装为函数 【2】 通过模块的Process类创建进程对象,关联函数 【3】 可以通过进程对象设置进程信息及属性 【4】 通过进程对象调用start启动进程 【5】 通过进程对象调用join回收进程 2. 基本接...原创 2020-02-25 09:22:48 · 222 阅读 · 0 评论 -
Python之基于fork的多进程编程
fork使用 pid = os.fork() 功能: 创建新的进程 返回值:整数,如果创建进程失败返回一个负数,如果成功则在原有进程中返回新进程的PID,在新进程中返回0 import osfrom time import sleep# 创建子进程pid = os.fork()if pid < 0: print("Create ...原创 2020-02-25 09:21:48 · 209 阅读 · 0 评论 -
Python之进程理论基础
进程(process) 进程理论基础 1. 定义 : 程序在计算机中的一次运行。 【程序】是一个可执行的文件,是静态的占有磁盘。 【进程】是一个动态的过程描述,占有计算机运行资源,有一定的生命周期。 2. 系统中如何产生一个进程 ...原创 2020-02-25 09:16:50 · 72 阅读 · 0 评论 -
Python之排序与查找
排序 排序(Sort)是将无序的记录序列(或称文件)调整成有序的序列。排序方法有很多种,下面举例说明: 冒泡排序 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 示例:list_data = [...原创 2020-02-24 10:28:09 · 346 阅读 · 0 评论 -
Python之数据结构--树形结构
树形结构 基础概念 1. 定义 树(Tree)是n(n≥0)个节点的有限集合T,它满足两个条件:有且仅有一个特定的称为根(Root)的节点;其余的节点可以分为m(m≥0)个互不相交的有限集合T1、T2、……、Tm,其中每一个集合又是一棵树,并称为其根的子树(Subtree)。 2. 基本概念 ...原创 2020-02-24 08:54:45 · 1570 阅读 · 0 评论 -
Python之数据结构--栈和队列
栈和队列 栈 1. 定义 栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,另一固定端称为“栈 底”,当栈中没有元素时称为“空栈”。 2. 特点: 栈只能在一端进行数据操作 栈模型具有先进后出或者叫做...原创 2020-02-23 18:33:48 · 196 阅读 · 0 评论 -
Python之数据结构--线性表
线性表 线性表的定义是描述其逻辑结构,而通常会在线性表上进行的查找、插入、删除等操作。 线性表作为一种基本的数据结构类型,在计算机存储器中的存储一般有两种形式,一种是顺序存储,一种是链式存储。 线性表的顺序存储 1. 定义 若将线性表L=(a0,a1, ……,an-1)中的各元素依次存储于计算机一片连续的存储...原创 2020-02-23 11:53:53 · 1056 阅读 · 0 评论 -
Python之数据结构基本概念
什么是数据结构? 1. 数据 数据即信息的载体,是能够输入到计算机中并且能被计算机识别、存储和处理的符号总称。 2. 数据元素 数据元素是数据的基本单位,又称之为记录(Record)。一般数据元素由若干基本项组成。 3. 数据结构 数据结构指的是数据元素及数据元素之间的相互关系,...原创 2020-02-22 14:24:59 · 266 阅读 · 0 评论 -
Python之函数式编程
函数式编程 1. 定义:用一系列函数解决问题。--函数可以赋值给变量,赋值后变量绑定函数。--允许将函数作为参数传入另一个函数。--允许函数返回一个函数。 2. 高阶函数:将函数作为参数或返回值的函数。 函数作为参数将核心逻辑传入方法体,使该方法的适用性更广,体现了面向对象的开闭原则。 lambda 表达式 ...原创 2020-02-22 10:45:37 · 87 阅读 · 0 评论 -
Python之迭代器与生成器
迭代 每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。例如:循环获取容器中的元素。 可迭代对象iterable 定义:具有__iter__()函数的对象,可以返回迭代器对象。例如列表,元组 语法:-- 创建:class 可迭代对象名称:def __iter__(self):...原创 2020-02-21 09:22:49 · 149 阅读 · 0 评论 -
Python之异常处理
异常处理Error 异常 定义:运行时检测到的错误。 现象:当异常发生时,程序不会再向下执行,而转到函数的调用语句。 常见异常类型:-- 名称异常(NameError):变量未定义。-- 类型异常(TypeError):不同类型数据进行运算。 -- 索引异常(IndexError):超出索引范围...原创 2020-02-20 09:52:58 · 118 阅读 · 0 评论 -
Python之模块与包
模块 Module 定义 包含一系列数据、函数、类的文件,通常以.py结尾。 作用 让一些相关的数据,函数,类有逻辑的组织在一起,使逻辑结构更加清晰。 有利于多人合作开发。 导入 import 语法: ...原创 2020-02-19 11:07:05 · 109 阅读 · 0 评论 -
Python面向对象--设计原则
开-闭原则(目标、总的指导思想) Open ClosedPrinciple对扩展开放,对修改关闭。增加新功能,不改变原有代码。例如:Student调用Teacher的教学方法,不管Teacher的教学方法如何扩展,Student的学习方法不需要改变类的单一职责(一个类的定义)Single ResponsibilityPrinciple 一个类有且只有一个改变它的...原创 2020-02-18 19:01:46 · 109 阅读 · 0 评论 -
Python之面向对象--多态
设计角度讲 定义 父类的同一种动作或者行为,在不同的子类上有不同的实现。 作用 在继承的基础上,体现类型的个性化(一个行为有不同的实现)。 增强程序扩展性,体现开闭原则。语法角度讲 重写 子类实现了父类中相同的方法(方法名、参数)。 在调用该方法时,实际执行的是子类的方...原创 2020-02-18 11:46:48 · 118 阅读 · 0 评论 -
Python之面向对象--继承
语法角度讲 继承方法 代码:class Parent: def p_fun(self): print("父类方法")class Child(Parent): def c_fun(self): print("子类方法")c = Child()c.c_fun()c.p_fun() ...原创 2020-02-18 11:12:10 · 101 阅读 · 0 评论 -
Python之面向对象--封装
定义 1.数据角度讲,将一些基本数据类型符合成一个自定义类型。 2.行为角度讲,向类外提供功能,隐藏实现的细节 3.设计角度讲: (1)分而治之 -- 将一个大的需求分解成为许多类,每个类处理一个独立的功能 -- 拆分好处:便于分工,便于服用,可扩展性强。 (2)封装变化 ...原创 2020-02-18 10:31:21 · 102 阅读 · 0 评论 -
Python之面向对象--概述
概述 面向过程 分析除解决问题的步骤,然后逐步实现。 例如:婚礼筹办 -- 发请柬(选照片、措词、值作) -- 宴席(场地、厨师、桌椅餐具,菜品) -- 婚礼仪式(婚礼仪式流程,主持人) ...原创 2020-02-12 14:43:37 · 125 阅读 · 0 评论 -
Python之作用域LEGB
作用域:变量起作用的范围 Local 局部作用域:函数内部 Enclosing 外部嵌套作用域:函数嵌套 Global 全局作用域:模块(.py文件)内部 Builtin 内置模块作用域:builtins.py文件变量名的查找规则 由内到外:L -- E -- G -- B 在访问变量时,先查找本地变量,然后是包裹此函数的外部...原创 2020-02-12 11:32:05 · 124 阅读 · 0 评论 -
Python之函数
定义 用于封装一个特定的功能,表示一个功能或者行为。 函数时可以重复执行的语句块,可以重复调用作用 提高代码的可重用性和可维护性,代码层次结构清晰定义函数 语法: def 函数名(形参): 函数体 说明 -- def 关键字,意为“定义” -- 函数名 对...原创 2020-02-12 11:27:25 · 143 阅读 · 0 评论 -
Python之容器
通用操作 数学运算符 +:用于拼接两个容器 +=:用原容器与右侧容器拼接,并重新绑定变量 *:重复生成容器元素 *=:用原容器生成重复元素,并重新绑定变量 < <= > >= == !=:依次比较两个容器中元素,一旦不同则返回比较...原创 2020-02-12 10:13:05 · 152 阅读 · 0 评论 -
Python之语句
选择语句 if elif else 语句 作用:让程序根据条件选择性执行语句 语法: if a > b: ...elif a < b: ...else: ... if 语句的真值表达式 语法:if "a": print("真值") 等...原创 2020-02-10 19:37:50 · 142 阅读 · 0 评论 -
Python之运算符
算术运算符 + 加法 - 减法 * 乘法 / 除法:结果为浮点数 // 地板除:结果是去掉小数部分 % 求余 ** 幂运算 优先级从高到低:** --> () --> * --> / --> % --> // --> + --> -增强运算符 y += x...原创 2020-02-10 12:56:11 · 135 阅读 · 0 评论 -
Python之基本数据类型
注释 给别人看的,通常是对代码的描述 1、单行注释:以#开头 2、多行注释:三引号开头,三引号结尾 """ """函数 表示一个功能,函数定义这是提供功能的人,函数调用者是函数的使用的人变量 定义:关联一个对象的标识符 命名:必须是字母或者下划线开头,后跟字母、数字、下划线。不能使用python中的关键字 建议命名:字母...原创 2020-02-10 12:56:01 · 123 阅读 · 0 评论 -
PyCharm常用快捷键
移动到本行开头:home 键移动到本行末尾: end 键注释代码:CTRL + /复制行:CTRL + D选择列:ALT + 鼠标左键移动行:Ctrl +Shift+上下箭头查看方法/函数详细信息:Ctrl + Q查看方法/函数参数信息:Ctrl + P...原创 2020-02-10 12:55:46 · 184 阅读 · 0 评论