python
文章平均质量分 72
yhc166188
路虽远,行则将至;事虽难,做则必成!
展开
-
Python 垃圾回收机制
众所周知,我们当代的计算机都是图灵机架构。图灵机架构的本质,就是一条无限长的纸带,对应着我们今天的存储器。在工程学的演化中,逐渐出现了寄存器、易失性存储器(内存)和永久性存储器(硬盘)等产品。其实,这本身来自一个矛盾:速度越快的存储器,单位价格也越昂贵。因此,妥善利用好每一寸高速存储器的空间,永远是系统设计的一个核心。回到 Python 应用层。我们知道,Python 程序在运行的时候,需要在内存中开辟出一块空间,用于存放运行时产生的临时变量;计算完成后,再将结果输出到永久性存储器中。如果数据量过大原创 2022-02-02 23:44:44 · 379 阅读 · 0 评论 -
python协程
协程是实现并发编程的一种方式。一说并发,你肯定想到了多线程 / 多进程模型,没错,多线程 / 多进程,正是解决并发问题的经典模型之一。最初的互联网世界,多线程 / 多进程在服务器并发中,起到举足轻重的作用。随着互联网的快速发展,你逐渐遇到了 C10K 瓶颈,也就是同时连接到服务器的客户达到了一万个。于是很多代码跑崩了,进程上下文切换占用了大量的资源,线程也顶不住如此巨大的压力,这时, NGINX 带着事件循环出来拯救世界了。如果将多进程 / 多线程类比为起源于唐朝的藩镇割据,那么事件循环,就是宋朝加原创 2022-02-02 21:43:50 · 522 阅读 · 0 评论 -
python装饰器
装饰器一直以来都是 Python 中很有用、很经典的一个 feature,在工程中的应用也十分广泛,比如日志、缓存等等的任务都会用到。然而,在平常工作生活中,我发现不少人,尤其是初学者,常常因为其相对复杂的表示,对装饰器望而生畏,认为它“too fancy to learn”,实际并不如此。今天这节课,我会以前面所讲的函数、闭包为切入点,引出装饰器的概念、表达和基本用法,最后,再通过实际工程中的例子,让你再次加深理解。接下来,让我们进入正文一起学习吧!函数 -> 装饰器函数核心回顾原创 2022-02-02 21:20:13 · 364 阅读 · 0 评论 -
Python之系统交互(subprocess)
os与commands模块 subprocess模块 subprocess.Popen类 总结我们几乎可以在任何操作系统上通过命令行指令与操作系统进行交互,比如Linux平台下的shell。那么我们如何通过Python来完成这些命令行指令的执行呢?另外,我们应该知道的是命令行指令的执行通常有两个我们比较关注的结果:命令执行的状态码--表示命令执行是否成功 命令执行的输出结果--...转载 2019-02-15 10:08:36 · 169 阅读 · 0 评论 -
python 文件读写
读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。读文件要以读文件的...转载 2019-02-18 16:28:30 · 89 阅读 · 0 评论 -
base64
Base64是一种用64个字符来表示任意二进制数据的方法。用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。Base64是一种最常见的二进制编码方法。Base64的原理很简单,首先,准备一个包含64个字符的数组:['A', 'B'...转载 2019-03-15 11:30:59 · 81 阅读 · 0 评论 -
Python: ord()函数
ch() , unichr() , ord()①chr()函数用一个范围在range(256)内的整数作参数,返回一个对应的字符。>>>chr(65)'A'②unichr()跟chr()一样,只不过返回的是Unicode字符。>>>unichr(12345)u'u3039③超出范围的报ValueErrro异常④ord()函数是ch...转载 2019-03-22 11:29:47 · 4490 阅读 · 0 评论 -
python常见问题
1、一行代码实现1--100之和利用sum()函数求和2、如何在一个函数内部修改全局变量利用global 修改全局变量3、列出5个python标准库os:提供了不少与操作系统相关联的函数sys: 通常用于命令行参数re: 正则匹配math: 数学运算datetime:处理日期时间4、字典如何删除键和合并两个字典...转载 2019-05-05 10:00:12 · 1363 阅读 · 0 评论 -
Python unittest(PyUnit)单元测试框架完全攻略
PyUnit(unittest) 是Python自带的单元测试框架,用于编写和运行可重复的测试。PyUnit 是 xUnit 体系的一个成员,xUnit 是众多测试框架的总称,PyUnit 主要用于进行白盒测试和回归测试。通过 PyUnit 可以让测试具有持久性,测试与开发同步进行,测试代码与开发代码一同发布。使用 PyUnit 具有如下好处:可以使测试代码与产品代码分离。 针对某一...转载 2019-07-02 20:04:44 · 1784 阅读 · 0 评论 -
Python TestSuite测试包及用法
测试包(TestSuite)可以组织多个测试用例,测试包还可以嵌套测试包。在使用测试包组织多个测试用例和测试包之后,程序可以使用测试运行器(TestRunner)来运行该测试包所包含的所有测试用例。为了示范测试包的功能,下面再开发一个程序(hello.py):# 该方法简单地返回字符串def say_hello(): return "Hello World."# 计算两个整数的...转载 2019-07-02 20:13:59 · 7123 阅读 · 0 评论 -
Python单元测试setUp和tearDown用法详解
到目前为止,针对 unittest 已经介绍了测试用例类(TestCase的子类)、测试包(TestSuite)和测试运行器(TestRunner)。此外,unittest 还有测试固件(Test Fixture)的概念:测试用例类:测试用例类就是单个的测试单元,其负责检查特定输入和对应的输出是否匹配。unittest 提供了一个 TestCase 基类用于创建测试用例类。 测试包:用于组合...转载 2019-07-02 20:20:31 · 9122 阅读 · 0 评论 -
python在不同层级目录import模块的方法
使用python进行程序编写时,经常会使用第三方模块包。这种包我们可以通过python setup install 进行安装后,通过import XXX或from XXX import yyy 进行导入。不过如果是自己遍写的依赖包,又不想安装到python的相应目录,可以放到本目录里进行import进行调用;为了更清晰的理清程序之间的关系,例如我们会把这种包放到lib目录再调用。本篇就针对常见的模...转载 2019-07-03 15:03:26 · 113 阅读 · 0 评论 -
判断python字典中key是否存在的两种方法,及对字典map的遍历
今天来说一下如何判断字典中是否存在某个key,一般有两种通用做法,下面为大家来分别讲解一下:第一种方法:使用自带函数实现。在python的字典的属性方法里面有一个has_key()方法,这个方法使用起来非常简单。(但一些版本不存在,不推荐)例: 1 2 3 4 5 #生成一个字典 d={'name':{},'age'...转载 2019-07-03 20:00:55 · 9938 阅读 · 0 评论 -
Python3安装pip3常见问题
安装pip31、安装zlib组件:安装完成后,执行命令 python3 -m pip install redis,报错:RuntimeError: Compression requires the (missing) zlib module 或者zipimport.ZipImportError: can’t decompress data,是因为缺少zlib 的相关工具包导致的,知...转载 2019-07-24 15:18:05 · 376 阅读 · 0 评论 -
Python的datetime模块分析
datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1.datetime模块定义了5个类,分别是1.datetime.date:表示日期的类2.datetime.datetime:表示日期时间的类3.datetime.time:表示时间的类4.datetime.timedelta:表示时间间隔...转载 2019-01-20 14:23:35 · 112 阅读 · 0 评论 -
python产生随机值-random模块
import random产生随机值的模块random.random() #获取一个随机的浮点值;help(random.random) #查看随机范围:0-1;random.uniform(1,10) #仍然取的是浮点数,只是相比random增加了一个区间;random.randint(1,7) #随机1-7ran...转载 2018-12-18 10:00:46 · 160 阅读 · 0 评论 -
python argparse用法总结
argparse介绍argparse,它是Python标准库中推荐使用的编写命令行程序的工具。现在用python来实现命令行,核心计算模块可以用c自己写扩展库,效果挺好。学习了argparse,在官方文档中找到一篇toturial,简单翻译了下。http://docs.python.org/2/howto/argparse.html#id12.基本用法prog.py是我在L...转载 2018-12-04 21:43:53 · 117 阅读 · 0 评论 -
python高级特性
(1)切片取前N个元素,也就是索引为0-(N-1)的元素,可以用循环:>>> r = []>>> n = 3>>> for i in range(n):... r.append(L[i])... >>> r['Michael', 'Sarah', 'Tracy']对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操原创 2018-02-03 18:01:51 · 196 阅读 · 0 评论 -
python函数式编程
1.高阶函数高阶函数英文叫Higher-order function。变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。一个最简单的高阶函数:def add(x, y, f): return f(x) + f(y)当我们调用add(-5, 6, abs)时,参数x,y和f分别接收-5,6和abs,根据函数定义,原创 2018-02-03 18:16:53 · 179 阅读 · 0 评论 -
python 模块
在Python中,一个.py文件就称之为一个模块(Module)。使用模块有什么好处?最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包原创 2018-02-05 11:11:19 · 233 阅读 · 0 评论 -
python面向对象
在Python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)的概念。我们以一个例子来说明面向过程和面向对象在程序流程上的不同之处。假设我们要处理学生的成绩表,为了表示一个学生的成绩,面向过程的程序可以用一个dict表示:std1 = { 'name': 'Michael', 'score': 98 }std2 = { 'n原创 2018-02-05 12:14:46 · 182 阅读 · 0 评论 -
python高级编程
1.使用__slots__正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。先定义class:class Student(object): pass然后,尝试给实例绑定一个属性:>>> s = Student()>>> s.name = 'Michael' # 动态给实例绑定一个属性>原创 2018-02-05 14:54:06 · 250 阅读 · 0 评论 -
python io编程
1.IO编程IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口。比如你打开浏览器,访问新浪首页,浏览器这个程序就需要通过网络IO获取新浪的网页。浏览器首先会发送数据给新浪服务器,告诉它我想要首页的HTML,这个动作是往外发数据,叫Output,原创 2018-02-05 16:22:42 · 154 阅读 · 0 评论 -
python 进程线程
1.多进程要让Python程序实现多进程(multiprocessing),我们先了解操作系统的相关知识。Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。子进程永远返回0,而父进程返回子进程的原创 2018-02-05 18:56:21 · 276 阅读 · 0 评论 -
python正则表达式简述
正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。所以我们判断一个字符串是否是合法的Email的方法是:创建一个匹配Email的正则表达式;用该正则表达式去匹配用户的输入来判断是否合法。因为正则表达式也是用字符串表示的,所以,我们要首先了解如何用字符来描述字原创 2018-02-07 10:17:36 · 240 阅读 · 0 评论 -
python内部常用模块
1.datetimedatetime是Python处理日期和时间的标准库。获取当前日期和时间我们先看如何获取当前日期和时间:>>> from datetime import datetime>>> now = datetime.now() # 获取当前datetime>>> print(now)2015-05-18 16:28:07.198690>>原创 2018-02-07 14:59:08 · 322 阅读 · 0 评论 -
python第三方模块
1.requests我们已经讲解了Python内置的urllib模块,用于访问网络资源。但是,它用起来比较麻烦,而且,缺少很多实用的高级功能。更好的方案是使用requests。它是一个Python第三方库,处理URL资源特别方便。安装requests如果安装了Anaconda,requests就已经可用了。否则,需要在命令行下通过pip安装:$ pip原创 2018-02-07 15:36:41 · 399 阅读 · 0 评论 -
python网络编程
1.TCP编程Socket是网络编程的一个抽象概念。通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可。客户端大多数连接都是可靠的TCP连接。创建TCP连接时,主动发起连接的叫客户端,被动响应连接的叫服务器。举个例子,当我们在浏览器中访问新浪时,我们自己的计算机就是客户端,浏览器会主动原创 2018-02-07 16:06:10 · 2846 阅读 · 0 评论 -
python Flask 概述
Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务。本文参考自Flask官方文档,大部分代码引用自官方文档。安装Flask首先我们来安装Flask。最简单的办法就是使用pip。pip install flask一个最小的 Flask 应用看起来会是这样:from flask import Flaskapp = Flask(__name__)...转载 2018-03-29 23:09:53 · 401 阅读 · 0 评论 -
Python json详解
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。JSON 函数使用 JSON 函数需要导入 json 库:import json。函数 描述 json.dumps 将 Python对象编码成 JSON 字符串 json.loads 将已编码的 JSON 字符串解码为 Python 对象 jso...原创 2018-09-10 20:57:14 · 111 阅读 · 0 评论 -
python语法简述
Python是一种解释型、面向对象、动态数据类型的高级程序设计的脚本语言。Python是跨平台的,它可以运行在Windows、Mac和各种Linux/Unix系统上。在Windows上写Python程序,放到Linux上也是能够运行的。1.安装:官网下载python3.* 注意勾选Add Python 3.6 to PATH,然后点“Install Now”即可完成安装。在命原创 2018-02-02 12:07:14 · 249 阅读 · 0 评论