Python
文章平均质量分 66
zxnode
不废话总结学习和开发中的问题,希望大家多多指教
展开
-
Python 之 gevent
简介Python 脚本执行的时候不是很快,特别是 Python 下面的多线程机制,长久以来一直被大家所诟病。通常来说要让 Python 执行效率变高一般使用的方法包括:将复杂的代码转由 C 等执行效率更高的语言完成 多进程并发执行 用多线程完成 IO 操作 使用 gevent 协程机制本篇博客将简单介绍一下协程。协程的基本原理gevent 的基本原理来自于 libevent...原创 2019-03-19 09:54:57 · 934 阅读 · 0 评论 -
Python 基础之序列化模块
序列化概念将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化。如:将 Python 代码转为文本,方便移植,转化文本这个过程为序列化。目的以某种存储形式使自定义对象持久化; 转移对象,方便携带移植; 使程序更具有维护性。json使用 json 函数要先导入 json 函数库:import jsondump和dumps 序列化方法。dump:必须...原创 2018-08-13 22:00:42 · 9277 阅读 · 0 评论 -
Python高级开发之多线程(Multithreaded)初识
简介在多线程(multithreaded,MT)编程出现之前,计算机程序的执行是由单个步骤序列组 成的,该序列在主机的 CPU 中按照同步顺序执行。要是让这些独立的任务同时运行,会怎么样呢?很明显,这种并行处理方式可以显著地提高整个任务的性能。这就是多线程编程。多线程特点:异步、多并发和不确定性。多线程程序在读取 I/O 终端通道时不能阻塞,因为用户输入的到达时间是不确定的,并且阻塞会...原创 2018-08-13 17:48:12 · 9694 阅读 · 0 评论 -
Python基础之时间模块
和时间有关系的我们就要用到时间模块。在使用模块之前,应该首先导入这个模块。import time常用方法时间模块常用方法 方法/属性 描述 time.altzone 返回与utc时间的时间差,以秒为单位(西区该值为正,东区该值为负)。其表示的是本地DST 时区的偏移量,只有daylight非0时才使用。 time.clock() 返回当前进程所消耗的处理...原创 2018-08-08 18:38:05 · 9159 阅读 · 0 评论 -
Python基础之模块(Module)和包(Package)
模块(Module)能够逻辑的组织代码块,以.py文件结尾的包含Python对象定义和Python语句的Python文件。模块的类别:使用Python代码写的代码文件(.py) 使用C/C++编写的.dll(动态链接库)文件 包装好的一组模块包 使用C编写并链接到Python解释器的内置模块为何使用模块?如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量...原创 2018-08-03 15:09:02 · 9126 阅读 · 0 评论 -
Python网络编程之基本架构与socket模块
两种架构我们了解的涉及到两个程序之间通讯的应用大致可以分为两种:第一种是应用类:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用。第二种是web类:比如百度、知乎、谷歌等使用浏览器访问就可以直接使用的应用。这些应用的本质其实都是两个程序之间的通讯,而这两个分类又对应了两个软件开发的架构。C/S架构Client/Server,客户端和服务器结构。这种架构也是从用户层面(也...原创 2018-08-15 14:40:18 · 9898 阅读 · 1 评论 -
Python基础之正则表达式
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。正则表达式模式字符串使用特殊的语法来表示一个正则表达式:字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。 多数字母和数字前加一个反斜杠时会拥有不同的含义。 标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。 反斜杠本身需要使用反斜杠转义。 由于正则表达式通常都包含反...原创 2018-08-07 17:51:51 · 13153 阅读 · 0 评论 -
Python面向对象编程(Object Oriented Programming,OOP)之进阶
isinstance和issubclass1. isinstance()Python中内建函数。语法:isinstance(object, classinfo)如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, 返回True。如果object不是一个给定类型的的对象, 则返回结果总是False。class A(obje...原创 2018-08-02 21:58:53 · 9638 阅读 · 0 评论 -
Python网络编程之初识
引言Internet和internetInternet:(因特网)是一个专用名词,指当前全球最大的、开放的、由众多网络相互连接而成的特定的计算机网络。internet:(互联网或互连网)是一个通用名词,泛指由多个计算机网络互联而成的虚拟网络。本页博客主要会介绍一些计算机网络的基本定义,网络的体系结构等,旨在学习计算机网络的基本概念,为接下来的网络编程打下良好的基础。之前在大三大...原创 2018-08-14 20:17:51 · 10550 阅读 · 0 评论 -
Python基础之collections模块
在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。namedtuple生成可以使用名字来访问元素内容的tuple。from collections import namedtuplePoint = namedtu...原创 2018-08-07 09:42:08 · 9015 阅读 · 0 评论 -
Python基础之hashlib模块和configparse模块
hashlib模块Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。摘要算法摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。摘要算法意义摘要算法就是通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被人篡改过。 摘要算法之所以能...原创 2018-08-09 16:15:49 · 12866 阅读 · 0 评论 -
Python基础之random模块
1. 随机小数random() :随机生成一个介于0.0到1.0之间的任意浮点数,属于左闭右开区间。没有参数,返回值为一个浮点数。uniform(a, b):生成参数a到b之间的浮点数的函数,如果a > b,则生成b到a之间的浮点数,属于左闭右开区间,返回值为一个浮点数。import randomprint(random.random())print(random.uni...原创 2018-08-09 08:31:43 · 10437 阅读 · 0 评论 -
Python基础之操作系统
操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。单道程序系统手工操作——穿孔卡片1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。穿孔卡带早期计算机程序员将对应于程序和数据...原创 2018-08-22 16:44:09 · 11542 阅读 · 0 评论 -
Python基础之进程(Process)
进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is...原创 2018-08-27 19:31:06 · 62127 阅读 · 8 评论 -
Python基础之并发编程
在 Python 学习的过程中,并发编程有些概念我们可能在理解上有些模糊,这些概念却很重要。下面我讲逐一解释一下并发和并行,同步和异步,阻塞和非阻塞。并发&并行并发:在 OS 中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。简言之,是指系统具有处理多个任务的能力。并行:当系统有一个以...原创 2019-03-18 14:50:16 · 278 阅读 · 0 评论 -
Python 基础部分面试题(一)
Python 面试题点击这里关注GitHub,期待您的参与!什么是 Python?使用 Python 有什么优缺点?Python是一种计算机程序设计语言。是一种动态的、面向对象的脚本语言。好处:简单易学。代码开源,自由度高,高度可定制化。可移植性强。丰富的库,开发效率高。可扩展性和可嵌入性,被称作胶水语言。面向对象、模块、线程、异常处理和自动内存管理。代码简洁规范,可...原创 2018-11-24 18:28:52 · 1583 阅读 · 0 评论 -
Python基础之控制台输出颜色
简介在python开发的过程中,经常会遇到需要打印各种信息。海量的信息堆砌在控制台中,就会导致信息都混在一起,降低了重要信息的可读性。这时候,如果能给重要的信息加上字体颜色,那么就会更加方便用户阅读了。当然了,控制台的展示效果有限,并不能像前段一样炫酷,只能做一些简单的设置。不过站在可读性的角度来看,已经好很多了。基本属性控制台显示方式 显示方式 显示效果 0 默...原创 2018-09-19 12:17:37 · 42450 阅读 · 6 评论 -
Python基础之turtle模块
简介Python2.6版本中后引入的一个简单的绘图工具,叫做海龟绘图(Turtle Graphics),turtle库是Python的内部库。画布(canvas)画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。设置画布大小turtle.screensize(canvwidth=None, canvheight=None, bg=None)参数:...原创 2018-09-03 15:44:32 · 32194 阅读 · 1 评论 -
Python基础之程序暂停
当我们执行某些程序时,由于机器速度很快导致肉眼无法直接看到执行结果时程序便停止运行。这时候我们迫切需要在程序中暂停,专业术语叫做阻塞。下面列举几种常用的程序暂停方法:input()用法:直接在欲等待处输入input()即可。特点:优点:不需要借助模块,执行到此处阻塞等待人工输入。 缺点:程序结束时候需要强制结束或者在控制台输入值。time.sleep()用法:导入time模...原创 2018-09-03 12:34:57 · 96386 阅读 · 5 评论 -
Python基础之生产者与消费者模型
简介在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。为什么要使用生产者和消费者模式在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生...原创 2018-08-29 14:42:32 · 9651 阅读 · 0 评论 -
Python基础之IO多路复用
IO模型介绍一般情况而言,常用的五种IO Model为(参考:Richard Stevens--“UNIX® Network Programming Volume 1, Third Edition: The Sockets Networking ):IO模型 中文名称 blocking IO 阻塞IO nonblocking IO 非阻塞IO IO multi...原创 2018-08-29 12:22:02 · 9715 阅读 · 0 评论 -
Python基础之单例类
单例类Python中的有且只能有一个实例化对象的一种类。实现方法很多,这里列举两个:实例1:__new__方法class SingleClass(object): def __new__(cls): if not hasattr(cls, "instance"): cls.instance = super(SingleClass, c...原创 2018-08-29 09:01:58 · 9166 阅读 · 0 评论 -
Python网络编程之黏包
概念在TCP中,发送方把若干数据发送,接收方收到数据时候黏在一包,从接受缓冲区来看,后一包的数据黏在前一包的尾部的一种现象。出现原因发送端:TCP默认使用Nagle算法,主要做两件事:上一包分组得到确认,发送下一组; 收集多个小组,合包组成一个分组,在确认信息来一起发送。接收端:收到分组暂放缓存区,程序主动接受缓存里面调出的分组; 当接收分组的速度大于应用读取分组时,...原创 2018-08-21 19:44:04 · 9545 阅读 · 0 评论 -
Python基础之协程(Coroutine)
引言之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线程来解决问题,都要消耗一定的时间来创建进程、创建线程、以及管理他们之间的切换。随着我们对于效率的追求不断提高,基于单线程来实现并发又成为一个新的课题,即只用一个主线程(很明显可利用的cpu只有一...原创 2018-08-28 21:01:45 · 11563 阅读 · 0 评论 -
Python基础之线程(Thread)
进程之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。这是这样的设计,大大提高了CPU的利用率。进程的出现让...原创 2018-08-28 16:45:49 · 11900 阅读 · 0 评论 -
Python面向对象编程(Object Oriented Programming,OOP)之结构、成员和属性
面向对象结构面向对象类中的数据大致分为两块区块:class Demo: name = '张三' # 第一部分:静态字段(静态变量) age = 18 # 第一部分:静态字段(静态变量) address = '北京' # 第一部分:静态字段(静态变量) def __init__(self): # 第二部分:动态字段(方法)部分 pa...原创 2018-07-27 17:07:47 · 8969 阅读 · 0 评论 -
Python面向对象编程(Object Oriented Programming,OOP)之封装(encapsulation)
引言封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。所以,当我们使用封装特性时,需要将内容封装到某处,从某处调用被封装的内容。第一步 将内容封装到某处class Foo: def __init__(self, name, age): self.name = name self.age = age# 根据类Foo创建...原创 2018-07-27 15:13:59 · 9436 阅读 · 0 评论 -
Python基础之os模块
os模块提供了多数操作系统的功能接口函数。当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件、目录打交道,所以离不了os模块。python编程时,经常和文件、目录打交道,这是就离不了os模块。1. 获取操作系统类型import osprint(os.name)结果:ntProcess finished wi...原创 2018-08-03 19:16:03 · 9684 阅读 · 0 评论 -
Python字符处理一些小问题
1 字符小写转换为大写(1) upper():将字符转换为大写(2) swapcase():将字符转换取反 2 将0-100的数中的偶数插入一个列表中lst = []for el in range(101): if el % 2 ==0: lst.append(el)print(lst)3 关于倒叙的一些问题lst= [1,2,3,4,5,6]方法一:lst.rever...原创 2018-07-05 21:11:24 · 7393 阅读 · 0 评论 -
基本数据类型(list,tuple)
本节主要内容:list(增删改查) 列表可以装大量的数据. 不限制数据类型. 表示方式:[] 方括号中的每一项用逗号隔开 列表和字符串一样.也有索引和切片 常用的功能: 1. 增: append() 2. 删:remove() 3. 改: 索引修改 4. 查: for循...原创 2018-07-05 16:16:04 · 7395 阅读 · 0 评论 -
Python之迭代器
函数名的应用函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量。1. 函数名的内存地址def func(): print("呵呵")print(func)结果:<function func at 0x0000000000A5D2F0>Process finished with exit code 02. 函数可以赋值给其...原创 2018-07-17 19:56:22 · 7411 阅读 · 0 评论 -
Python之文件操作
文件操作初识文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开某个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. 根据打开形式的不同能够执行的操作也会有相应的差异. 打开文件的方式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 默认使用的是r(只...原创 2018-07-11 18:29:38 · 11027 阅读 · 0 评论 -
Python开发命名规范
引言软件开发中规范的命名能够使你的代码简洁美观,完美的命名规范是一个程序员最基本的技能。下面我先简单说说两种常用的命名方式:驼峰命名法混合使用大小写字母来构成变量和函数的名字,以大写字母代替语句间隔的命名方法。程序员们为了自己的代码能更容易的在同行之间交流,所以多采取统一的可读性比较好的命名方式。大驼峰命名:首字母大写。如CamelCase、JavaScript,HelloWorl...原创 2018-07-04 20:31:01 · 18094 阅读 · 1 评论 -
Python中统计输入字符的个数
Python中这个功能主要使用了count()这个函数,具体实现代码如下:content = input("请输入一串字符串:")res = {}for i in content: res[i] = content.count(i)print(res)原创 2018-07-04 19:00:25 · 31687 阅读 · 0 评论 -
Python提取用户输入的字符串中的数字
Python在3.5.2中求取引入了re包,具体实现代码如下import recontent = input("请输入内容:")content = re.sub("\D","",content)print(content)原创 2018-07-04 18:11:18 · 15675 阅读 · 0 评论 -
Python之高阶函数(一)
高阶函数引入高阶函数英文叫Higher-order function。什么是高阶函数?我们以实际代码为例子,一步一步深入概念。 大家都很熟悉abs()函数吧,这个函数的意思就是求某个数字的绝对值。下面我们使用代码来看看这个函数的意思:# 内置函数可以直接调用print(abs(-10))# 可以看出,内置函数可以直接赋值给变量f = absprint(f(10))运...原创 2018-07-17 12:37:28 · 7740 阅读 · 0 评论 -
Python之基础数据补充、set集合和深浅拷贝
基础数据补充字符串的常用操作 1. join()li = ["李嘉诚", "麻花藤", "⻩海峰", "刘嘉玲"]s = "_".join(li)print(s)li = "床前明月光"s = "_".join(li)print(s) 运行结果: 李嘉诚_麻花藤_黄海峰_刘嘉玲床_前_明_月_光Process finishe原创 2018-07-10 20:25:26 · 7530 阅读 · 0 评论 -
Python初级之查找列表中重复元素
示例代码:lstA = [4, 2, 5, 5, 6, 8, 6, 5, 2, 3, 2, 6, 2, 5, 4, 2, 3, 6, 9, 5, 2, 2, 6, 8, 2, 1, 4, 5, 6, 8, 5, 2]setB = set(lstA)for elB in setB: count = 0 for elA in lstA: if elB == elA...原创 2018-07-09 22:03:51 · 11716 阅读 · 0 评论 -
Python中is与“==”和一些编码的问题
is和==的区别 1. id() 通过id()我们可以查看到一个变量表示的值在内存中的地址。s = 'Python'print(id(s))s = "Python"print(id(s))lst = [1, 2, 3]print(id(lst))lst1 = [1, 2, 3]print(id(lst1))运行结果103366081033660814193...原创 2018-07-09 19:17:40 · 7450 阅读 · 0 评论 -
Python中append、extend与insert几个方法的区别
Python语言,看到向列表增加更多数据时被append(),extend(),insert()方法绕晕了。append 和extend都只需要一个参数,并且自动添加到数组末尾,如果需要添加多个,可用数组嵌套,但是 append是将嵌套后的数组作为一个对象,extend是将嵌套的数组内容作为多个对象,添加到原数组中作为编程0基础的小白,觉得有必要自己再梳理一遍:1.append()方法是指在列表...转载 2018-07-06 08:20:56 · 8609 阅读 · 0 评论