python基本知识
文章平均质量分 80
人生苦短,python陪伴
成为一名合格的Geeeeeeeek是需要不断挑战新事物
展开
-
执行python程序的两种方式、变量以及内存管理
1、执行python程序有两种方式I:交互式优点:调试程序缺点:无法永久保存代码II:命令行的方式python3 D:\p1.py优点:可以永久保存代码缺点:相对于方式一在操作上稍有难度(需要安装开发工具,如:pycharm,VScode)2、python执行程序的三个阶段:python3 D:\p1.py1、先启动python3解释器2、python3解释器就像一个文本编辑器一...原创 2018-11-15 22:06:43 · 562 阅读 · 0 评论 -
序列化与反序列化、时间模块、随机值random模块、os模块
序列化与反序列化1、什么是序列化与反序列化序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于网络传输反序列化就是硬盘中或者网络中传来的一种数据格式转换成内存中数据结构2、 为什么要有?1、可以保存程序的运行状态2、数据的跨平台交互 json注意点:json格式不能识别单引号,全都是双引号优点: 跨平台性强缺点: 只...原创 2018-06-20 17:43:06 · 262 阅读 · 0 评论 -
re模块、sys模块、打印进度条、subprocess
re模块1.什么是正则 正则就是用一系列具有特殊含义的字符组成的一套规则,该规则用来描述具有某一特征的字符串,正则就是用来去一个大的字符串中匹配出符合规则的子字符串2.为什么要用正则 1、用户注册 2、爬虫程序# print(re.findall('\w','hello 123_ */-='))# print(re.findall('\W','...原创 2018-06-21 19:36:56 · 426 阅读 · 0 评论 -
hashlib模块、shutil模块、shevle模块、xml文件解析、configparser模块、面向对象编程介绍
hashlib模块1.什么是hash hash是一种算法,该算法接收传入的内容,经过运算得到一串hash值 如果把hash算法比喻为一座工厂 那传给hash算法的内容就是原材料 生成的hash值就是生产出的产品2.为何要用hash算法 hash值/产品有三大特性: 1.只要传入的内容一样,得到的hash值必然一样 ...原创 2018-06-25 16:12:48 · 198 阅读 · 0 评论 -
内置函数、反射、自定义内置方法来定制类的功能、元类
内置函数isinstance(obj,cls):检查obj是否是类cls的对象1 class Foo(object):2 pass3 4 obj = Foo()5 6 isinstance(obj, Foo)在python3中统一类与类型的概念d={'x':1}#d=dict('x':1)print(type(d) is dict)print(isin...原创 2018-06-29 16:47:29 · 167 阅读 · 0 评论 -
udp协议没有粘包问题、基于socketserver实现并发的socket(基于tcp、udp协议)、基于udp协议的套接字、操作系统原理以及进程知识
基于udp协议的套接字通信服务端from socket import *server=socket(AF_INET,SOCK_DGRAM)#数据报协议-》udpserver.bind(('127.0.0.1',8080))data,client_addr=server.recvfrom(1)#recvfrom(1)括号内的数字1表示:b'hello'==>b...原创 2018-07-10 17:03:08 · 275 阅读 · 0 评论 -
开启子进程的两种方式、进程间内存空间隔离、进程对象的方法或属性详解
1、操作系统(推荐查看书籍:现代操作系统) 操作系统是位于计算机硬件与软件之间的控制程序 作用: 1、将硬件的复杂操作封装成简单的接口,给用户或者应用程序使用 2、将多个应用程序对硬件的竞争变的有序2、进程 一个正在运行的程序或者说是一个程序的运行过程3、串行、并发、并行 串行:一个任务完完整整运行完毕,才执行下一个程序 ...原创 2018-07-11 22:06:00 · 2971 阅读 · 0 评论 -
元类、单例模式的四种实现方式
元类class Mymete(type): n=444 def __call__(self,*args,**kwargs): obj=self.__new__(self) self.__init__(obj,*args,**kwargs) return objclass A(object): n=333class...原创 2018-07-02 15:06:31 · 290 阅读 · 0 评论 -
客户端/服务器架构、网络通信原理、网络协议、osi七层协议(五层协议)、tcp协议、半连接池
操作系统基础操作系统:(Opearting System,简称:OS)是管理和控制计算机硬件与软件资源的计算机程序,是运行在电脑硬件与应用程序之间作为最核心的计算机程序,想要顺利使用计算机都必须在操作系统上才能运行并使用。网络通信原理互联网的本质一台电脑安装了操作系统,再安装上基础软件就可以正常使用,但如果需要与其它电脑、网站等进行通信交互的话,我们需要通过网络,即Inter...原创 2018-07-05 21:37:02 · 1633 阅读 · 0 评论 -
基于tcp协议的套接字通信(简单版、循环版)
1、C/S B/S模型 client-----server browser-----server 其中服务端必须具备: 1、稳定运行,对外一直提供服务 2、绑定一个固定的Ipod+port2、互联网: 2.1 物理连接介质 2.2 互联网协议(互联网协议即计算机界的英语)3...原创 2018-07-07 00:32:41 · 282 阅读 · 0 评论 -
多路复用I/O模型
多路复用I/O模型# 服务端:from socket import *import time,select # select主要用于socket通信当中,能监视我们需要的文件描述变化server=socket(AF_INET,SOCK_STREAM)server.bind(('127.0.0.1',8080))server.listen(5)server.setblo...原创 2018-07-18 20:56:18 · 226 阅读 · 0 评论 -
什么是粘包、tcp协议粘包问题分析、模拟ssh远程执行命令、解决粘包问题终极版本
粘包问题须知:只有TCP有粘包现象,UDP永远不会粘包发送端可以是1K1K地发送数据,而接收端的应用程序可以2k2k地提起数据,当然也有可能一次提起3k或者6k数据,或者一次只提起几个字节的数据,也就是说,应用程序所看到的数据是一个整体,或说是一个流(stream),一条消息有多少字节对应用程序是不可见的,因此TCP协议是面向流的协议,这也是容易出现粘包问题的原因。而UDP是面向...原创 2018-07-09 18:53:51 · 216 阅读 · 0 评论 -
守护进程、互斥锁、IPC机制、生产者消费者模型
强调p.join的作用from multiprocessing import Processimport time,osdef task(): print('%s is running'%os.getpid()) time.sleep() print('%s is done'%os.getpid())if __name__=='__main__': p...原创 2018-07-12 19:14:55 · 203 阅读 · 0 评论 -
线程及多线程、互斥锁、死锁现象与递归锁、信号量
线程基础知识一、什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位。 多线程(即多个控制线程)的概念,在一个进程中存在多个控制线程,多个控制线程共享该进程的地址空间,相当于一个车间内有多条流水线,都共用一个车间的资源。 小结:...原创 2018-07-13 19:08:04 · 411 阅读 · 0 评论 -
GIL(全局解释器锁)、GIL vs 互斥锁、线程queue、进程池与线程池
互斥锁将多个任务对共享数据修改的那一部分代码由并发变成“串行”,牺牲了效率但保证数据安全GIL(全局解释器锁)1.什么是GIL(这是Cpython解释器) GIL本质就是一把互斥锁,那既然是互斥锁,原理都一样,都是让多个并发线程同一时间只能有一个执行 即:有了GIL的存在,同一进程内的多个线程同一时刻只能有一个在运行,意味着在Cpyhon中,一个进程下的多个线程无法实现...原创 2018-07-17 14:29:31 · 324 阅读 · 0 评论 -
协程的概念、I/O模型
GIL全局解释器锁 什么是GIL? GIL本质就是一个把互斥锁,是将多个并发的线程对共享数据的修改变成“串行”(并非真的串行,详情: http://www.cnblogs.com/linhaifeng/articles/7449853.html,第三节GIL和Lock) 为何有? Cpython解释器的垃圾回收机...原创 2018-07-17 21:17:28 · 294 阅读 · 0 评论 -
模块的另一种形式->包、logging模块
模块另一种形式-包1.什么是包 包是模块的一种形式,包的本质就是一个含有__init__.py文件的文件夹2.为什么要有包3.如何用包 导入包就是在导包下的__init__.py import... from...import...主义的问题: 1.包内所有的文件都是被导入使用的,而不是被直接运行的 2.包内部模块之间的导入可以使...原创 2018-06-19 16:09:52 · 153 阅读 · 0 评论 -
元组类型、字典类型
01 元组类型# 一:基本使用# 1 用途:元组是不可变的列表,能存多个值,但多个值只有取的需求,而没有改的需求,那么用元组合最合理## 2 定义方式:在()内用逗号分割开,可以存放任意类型的值# names=('alex','egon','wxx') #names=tuple(('alex','egon','wxx'))# print(type(names))# 强调: 当元组内...原创 2018-06-19 15:08:28 · 332 阅读 · 0 评论 -
数字类型、字符串类型、列表类型
01 数据类型#一:基本使用# 1 int用途:年龄 号码 等级...# 2 定义方式age=10 #age=int(10)# x=int('1111') # int只能将纯数字的字符串转成十进制的整型# print(type(x))# 3 常用操作+内置的方法#算数运算,比较运算#二:该类型总结# 1 存一个值or存多个值# 只能存一个值# age=10# ag...原创 2018-06-18 23:50:06 · 184 阅读 · 0 评论 -
数据类型、与用户交互、格式化输出、基本运算符
1、数据类型 数字(整形,长整形,浮点型,复数) 字符串 字节串:在介绍字符编码时介绍字节bytes类型 列表 元组 字典 集合2、与用户交互 input raw_input3、格式化输出4、运算符5、流程控制if判断6、流程控制循环while7、流程控制循环for (一)数据类型1、什么...原创 2018-06-18 10:19:14 · 195 阅读 · 0 评论 -
集合类型、字符编码
集合类型pythoners=['王大炮','李二丫','陈独秀','艾里克斯','wxx','欧德博爱']linuxers=['陈独秀','wxx','egon','张全蛋']a=[]for i in pythoners: for i in linuxers: a.append(i)print(i)结果:['陈独秀', 'wxx']l2=[]for s...原创 2018-06-25 17:25:05 · 175 阅读 · 0 评论 -
文件处理、绝对路径 与相对路径、文件的打开模式
01文件处理1.什么是文件 文件是操作系统为用户或应用程序提供的一个存取/读写硬盘的虚拟单位 文件的操作核心是读、写 即我们只需要对文件进行读写操作,就是对操作系统发起请求,然后由操作系统将用户或者应用程序对文件的读写操作转换成具体的 硬盘指令(比如控制盘片,控制机械手臂来读写数据)2.为什么要用文件? 转为内存无法永久保存数据,但凡我们永久保存数...原创 2018-07-19 08:47:18 · 877 阅读 · 0 评论 -
文件处理之可读可写、控制文件指针移动、文件修改、函数基本使用、函数定义与调用阶段、函数定义的三种形式
01文件处理之可读可写#1. 打开文件的模式有(默认为文本模式):r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】w,只写模式【不可读;不存在则创建;存在则清空内容】a, 之追加写模式【不可读;不存在则创建;存在则只追加内容】#2. 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符...原创 2018-07-19 10:56:57 · 474 阅读 · 0 评论 -
函数的返回值、调用函数以及函数的参数
函数的返回值1、什么是返回值返回值是一个函数的处理结果2、为什么要有返回值如果我们需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须有返回值3、函数的返回值的应用函数的返回值用return去定义格式为:return 值注意:1、return是一个函数结束的标志,函数内可以有多个return,但只要执行一次,整个函数就会结束运行2、return 的返回值无类型限制...原创 2018-11-20 16:56:50 · 1736 阅读 · 0 评论 -
函数的对象、函数嵌套、名称空间与作用域
函数的对象函数是第一类对象的含义是函数可以被当作数据处理1.引用y=xf=funcprint(f)f()2.当作参数传给一个函数len(x)def foo(m): print(m) m()foo(func)3.可以当作函数的返回值def foo(x): return xres=foo(func) print...原创 2018-06-11 12:25:08 · 133 阅读 · 0 评论 -
闭包函数、装饰器、装饰器修正
闭包函数作用域关系在函数定义阶段就已经固定死了,与调用位置无关即:在任意调用函数都需要跑到定义函数时寻找作用域关系def f1(): x=1 def inner(): print(x) return innerfunc=f1()def f2(): x=111111 func()f2()'''def out...原创 2018-06-12 00:36:04 · 131 阅读 · 0 评论 -
为对象定制自己独有的属性、属性查找、绑定方法、类即类型、小结、继承与派生、继承的应用
定义类和调用类的使用1、先定义类class OldboyStudent: school='oldboy' def choose_course(self): print('is choosing course')强调:类定义阶段会立刻执行类体代码,会产生类的名称空间,将类体代码执行过程中产生的名字都丢进去print(Old...原创 2018-06-26 16:33:25 · 166 阅读 · 0 评论 -
组合、菱形继承问题、在子派生的新方法中重用父类功能的两种方式、多态与多态性
1、__init__方法:用于在调用类时/实例化时自动触发,为对象初始化自己独有的特征 class People: country='China' def __init__(self,name,age,sex): self.name=name self.age=a...原创 2018-06-27 16:26:53 · 205 阅读 · 0 评论 -
封装、特性property、绑定方法(classmethod)与非绑定方法(staticmethod)
1、组合 什么是组合? 一个类的对象具备某一个属性 该属性的值是指向另外一个类的对象的class Foo: passclass Bar: passobj_of_foo=Foo()obj_of_bar=Bar()obj_of_foo.attrib=obj_of_bar # .attrib是将o...原创 2018-06-28 19:53:47 · 191 阅读 · 0 评论 -
有参装饰器、迭代器
有参装饰器有参装饰器实验1:import timecurrent_user={'users':None}def deco(func): def wrapper(*args,**kwargs): if current_user['user']: #已经登陆过 res=func(*args,**kwar...原创 2018-06-12 18:29:55 · 105 阅读 · 0 评论 -
生成器、杂项
生成器1.什么是生成器?在函数内但凡出现 yield关键字,再调用函数就不会执行函数体代码,会返回一个值,该值称之为生成器生成器本质就是迭代器2.为什么要有生成器? 生成器是一种自定义迭代器的方式3.如何用生成器# def func():# print('first1')# print('first2')# print('first3...原创 2018-06-13 20:06:00 · 127 阅读 · 0 评论 -
函数递归、匿名函数、内置函数
1.生成器def func(): yieldg=func()next(g)x=yield2.三元表达式 res=x if 条件 else y3.列表推导式,字典生成式,生成器表达式 l=[表达式 for i in 可迭代对象 if 条件] g=(表达式 for i in 可迭代对象 if 条件) d={k:v...原创 2018-06-14 14:50:46 · 298 阅读 · 0 评论 -
面向过程编程、python模块及搜索路径
面向过程面向过程编程 核心过程二字,过程指的是解决问题的步骤,即先干什么、再干什么、然后干什么... 基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式 优点 复杂的问题流程化、进而简单化 缺点 扩展性极差# 接收用户输入用户名,进行用户名合法性校验,拿到合法的用户名def check_user():...原创 2018-06-15 17:17:39 · 129 阅读 · 0 评论 -
流程控制之if判断、流程控制之while循环、流程控制之for循环
# for i in range(5):# print('========>第一层: %s<=========' %i)# for j in range(3):# print(' 第二层: %s' %j)#for+break# names=['asb','wsb','egon','lsb','csb']# for n in ...原创 2018-06-18 22:50:02 · 190 阅读 · 0 评论 -
celery redis rabbitMQ各是什么及之间的区别?
Celery:Celery是基于Python开发的分布式任务队列。它支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度。1、 celery工作流程:消息中间件(message broker):Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ,Redis,MongoDB,SQLAlchemy等,其中rabbit...转载 2019-03-11 11:33:19 · 7469 阅读 · 5 评论