Python笔记
文章平均质量分 85
python笔记
fan__lee
向前走,不回头
展开
-
python3 getopt(简记)
python3 getopt(一看就懂)首先:来自菜鸟教程getopt模块getopt模块是专门处理命令行参数的模块,用于获取命令行选项和参数,也就是sys.argv。命令行选项使得程序的参数更加灵活。支持短选项模式 - 和长选项模式 --。如:短:python test.py -c 'l' -confkey 'y'长:python test.py --c 'l' --confkey 'y' --authkey 'p' --version该模块提供了两个方法及一个异常处理来解析命令行参原创 2021-10-11 20:17:23 · 511 阅读 · 0 评论 -
python/HTTP协议简介
文章目录HTTP协议简介HTTP协议简介在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来。而浏览器和服务器之间的传输协议是HTTP,所以:HTML是一种用来定义网页的文本,会HTML,就可以编写网页;HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。需要安装Google的Chrome浏览器:=我们需要在浏览器很方便地调试我们的Web应用,而Chrome提供了一套完整地调试工具,非常适合Web开发。安装好Chrome浏览器后,打原创 2020-09-15 14:21:29 · 298 阅读 · 0 评论 -
python/分布式进程
分布式进程在Thread和Process中,应当优选Process,因为Process更稳定,而且,Process可以分布到多台机器上,而Thread最多只能分布到同一台机器的多个CPU上。Python的multiprocessing模块不但支持多进程,其中managers子模块还支持把多进程分布到多台机器上。一个服务进程可以作为调度者,将任务分布到其他多个进程中,依靠网络通信。由于managers模块封装很好,不必了解网络通信的细节,就可以很容易地编写分布式多进程程序。举个例子:如果我们已经有一个原创 2020-09-15 14:20:37 · 60 阅读 · 0 评论 -
python/访问数据库
文章目录访问数据库NoSQL数据库类别访问数据库程序运行的时候,数据都是在内存中的。当程序终止的时候,通常都需要将数据保存到磁盘上,无论是保存到本地磁盘,还是通过网络保存到服务器上,最终都会将数据写入磁盘文件。而如何定义数据的存储格式就是一个大问题。如果我们自己来定义存储格式,比如保存一个班级所有学生的成绩单:名字成绩Michael99Bob85Bart59Lisa87你可以用一个文本文件保存,一行保存一个学生,用,隔开:Michael,99B原创 2020-08-11 08:06:33 · 217 阅读 · 0 评论 -
Web开发
CS架构:最早的软件都是运行在大型机上的,软件使用者通过“哑终端”登陆到大型机上去运行软件。后来随着PC机的兴起,软件开始主要运行在桌面上,而数据库这样的软件运行在服务器端,这种Client/Server模式简称CS架构。BS架构:随着互联网的兴起,人们发现,CS架构不适合Web,最大的原因是Web应用程序的修改和升级非常迅速,而CS架构需要每个客户端逐个升级桌 面App,因此,Browser/Server模式开始流行,简称BS架构。在BS架构下,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务原创 2020-08-04 11:50:54 · 306 阅读 · 0 评论 -
python/使用SQLite-使用MySQL-使用SQLAlchemy
文章目录使用SQLite使用SQLiteSQLite是一种嵌入式数据库,它的数据库就是一个文件。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成。Python就内置了SQLite3,要使用SQLite3可以直接导入。要搞清楚的几个概念:表是数据库中存放关系数据的集合,一个数据库里面通常都包含多个表,比如学生的表,班级的表,学校的表,等等。表和表之间通过外键关联。使用:要操作关系数据库,首先需要连接到数据库,一个数据库原创 2020-08-04 10:47:09 · 706 阅读 · 0 评论 -
python/电子邮件/SMTP发送邮件-POP3收取邮件编程
文章目录电子邮件SMTP发送邮件SMTP发送邮件发送HTML邮件发送附件发送图片同时支持HTML和Plain格式加密SMTPPOP3收取邮件POP3收取邮件通过POP3下载邮件解析邮件电子邮件一封电子邮件的具体旅程是:MUA:Mail User Agent——邮件用户代理。MTA:Mail Transfer Agent——邮件传输代理MDA:Mail Delivery Agent——邮件投递代理发件人 -> MUA -> MTA -> MTA -> 若干个MTA ->原创 2020-07-31 22:48:34 · 1983 阅读 · 0 评论 -
python网络编程/TCP/IP简介/TCP编程-UDP编程
文章目录网络编程TCP/IP简介TCP编程客户端网络编程自从互联网诞生以来,现在基本上所有的程序都是网络程序,很少有单机版的程序了。计算机网络就是把各个计算机连接到一起,让网络中的计算机可以互相通信。网络编程就是如何在程序中实现两台计算机的通信。举个例子,当你使用浏览器访问新浪网时,你的计算机就和新浪的某台服务器通过互联网连接起来了,然后,新浪的服务器把网页内容作为数据通过互联网传输到你的电脑上。由于你的电脑上可能不止浏览器,还有QQ、Skype、Dropbox、邮件客户端等,不同的程序连接的原创 2020-07-31 10:37:36 · 429 阅读 · 0 评论 -
python/图形界面-海龟绘图
文章目录Tkinter第一个GUI程序输入文本海龟绘图Python支持多种图形界面的第三方库,包括:1.Tk2.wxWidgets3.Qt4.GTK等等。但是Python自带的库是支持Tk的Tkinter,使用Tkinter,无需安装任何包,就可以直接使用。本章简单介绍如何使用Tkinter进行GUI编程。Tkinter我们来梳理一下概念:我们编写的Python代码会调用内置的Tkinter,Tkinter封装了访问Tk的接口;Tk是一个图形库,支持多个操作系统,使用Tcl语言开发;T原创 2020-07-22 12:32:15 · 2507 阅读 · 0 评论 -
virtualenv
在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。所有第三方的包都会被pip安装到Python3的site-packages目录下。如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办?这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。首先,我们用pi原创 2020-07-21 20:50:39 · 99 阅读 · 0 评论 -
python/第三方-chardet-psutil
文章目录chardet使用chardetpsutil安装psutil获取CPU信息获取内存信息获取磁盘信息获取网络信息获取进程信息chardet字符串编码一直是令人非常头疼的问题,尤其是我们在处理一些不规范的第三方网页的时候。虽然Python提供了Unicode表示的str和bytes两种数据类型,并且可以通过encode()和decode()方法转换,但是,在不知道编码的情况下,对bytes做decode()不好做。对于未知编码的bytes,要把它转换成str,需要先“猜测”编码。猜测的方式是先收集原创 2020-07-20 19:03:54 · 330 阅读 · 0 评论 -
python/Pillow-requests
文章目录Pillow操作图像PillowPIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。PIL仅支持到Python 2.7,在Python 3.x版本,其被替换为Pillow。这里使用的Anaconda,内置了Pillow.操作图像最常见的图像缩放操作,只需三四行代码:...原创 2020-07-19 18:25:52 · 411 阅读 · 0 评论 -
python/itertools-contextlib-urllib-XML-HTMLParser
文章目录itertoolscount()cycle()repeat()chain()groupby()练习 计算圆周率可以根据公式:itertoolsPython的内建模块itertools提供了非常有用的用于操作迭代对象的函数。首先,我们看看itertools提供的几个“无限”迭代器:count()import itertoolsa = itertools.count(1)#count(1,2)一次累加2for n in a: if n<20: print(n原创 2020-07-18 18:00:19 · 864 阅读 · 0 评论 -
python/struct-hashlib-hmac
文章目录struct练习:请编写一个`bmpinfo.py`,可以检查任意文件是否是位图文件,如果是,打印出图片大小和颜色数。hashlib摘要算法简介摘要算法应用练习 根据用户输入的口令,计算出存储在数据库中的MD5口令:练习 根据用户输入的登录名和口令模拟用户注册,计算更安全的MD5:hmac练习:将上一节的salt改为标准的hmac算法,验证用户口令:struct准确地讲,Python没有专门处理字节的数据类型。但由于b'str'可以表示字节,所以,字节数组=二进制str。而在C语言中,我们可以很原创 2020-07-16 16:40:00 · 354 阅读 · 0 评论 -
python/常用内建模块datetime-collections-base64
文章目录datetime获取当前日期和时间获取指定日期和时间datetime转换为timestamptimestamp转换为datetimestr转换为datetimedatetime转换为strdatetime加减本地时间转换为UTC时间时区转换练习collectionsnamedtupledequedefaultdictOrderedDictChainMapCounterPython之所以自称“batteries included”,就是因为内置了许多非常有用的模块,无需额外安装和配置,即可直接使用原创 2020-07-15 17:28:37 · 400 阅读 · 0 评论 -
python/正则表达式
文章目录正则表达式进阶re模块切分字符串分组:正则表达式字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。所以我们判断一个字符串是否是合法的Email的方法原创 2020-07-14 22:46:51 · 303 阅读 · 0 评论 -
python中if __name__ == ‘__main__‘ 的理解
if __name__ == '__main__' 的理解看廖雪峰老师的教程时,他的解释是:import sysdef test(): args = sys.argv3 if len(args)==1: print('Hello, world!') elif len(args)==2: print('Hello, %s!' % args[1]) else: print('Too many arguments!')if原创 2020-07-08 10:41:42 · 645 阅读 · 0 评论 -
python/多线程-ThreadLocal-进程 vs. 线程笔记
文章目录多线程线程Lock多核CPUThreadLocal多线程线程多任务可以由多进程完成,也可以由一个进程内的多线程完成。我们前面提到了进程是由若干线程组成的,一个进程至少有一个线程。由于线程是操作系统直接支持的执行单元,因此,高级语言通常都内置多线程的支持,Python也不例外,并且,Python的线程是真正的Posix Thread,而不是模拟出来的线程。Python的标准库提供了两个模块:_thread和threading,_thread是低级模块,threading是高级模块,对_th原创 2020-06-26 10:27:42 · 303 阅读 · 0 评论 -
python/多进程笔记以及一些理解
文章目录多进程Pool子进程多进程Python程序实现多进程(multiprocessing):Unix/Linux操作系统:提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。子进程永远返回0,而父进程返回子进程的ID。这样做的理由是,一个父进程可以fork出很多子进程,所以,父进程要记下每个子进程的ID,而子进程只需要调用getpp原创 2020-06-24 10:50:57 · 246 阅读 · 0 评论 -
python-进程
文章目录进程进程多任务:就是多个任务同时运行啦,吃鸡的时候,切出去回女朋友一个信息啊,然后再切换回来,继续打。单核CPU:就是任务一个一个执行,比如任务1执行0.01秒,切换到任务2,任务2执行0.01秒,再切换到任务3,执行0.01秒……这样反复执行下去。表面上看,每个任务都是交替执行的,但是,由于CPU的执行速度实在是太快了,我们感觉就像所有任务都在同时执行一样。多核CPU:真正的并行执行多任务,但是,由于任务数量远远多于CPU的核心数量,所以,操作系统也会自动把很多任务轮流调度到每个核心上执行原创 2020-06-22 11:55:47 · 213 阅读 · 0 评论 -
python/IO编程-文件读写-StringIO和BytesIO-操作文件和目录-序列化
文章目录IO编程文件读写读文件file-like Object二进制文件字符编码写文件StringIO和BytesIOStringIOBytesIO操作文件和目录IO编程IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口比如你打开浏览器,访问新浪首页:浏览器这个程序就需要通过网络IO获取新浪的网页浏览器—>发送数据给新浪服务器,告诉它我想要首页的HTML(向原创 2020-06-21 18:44:09 · 1055 阅读 · 0 评论 -
python/单元测试-文档测试
文章目录单元测试__setattr__运行单元测试:setUp与tearDown练习:对Student类编写单元测试,结果发现测试不通过,请修改Student类,让测试通过:文档测试单元测试单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。比如对函数abs(),我们可以编写出以下几个测试用例:1.输入正数,比如1、1.2、0.99,期待返回值与输入相同;2.输入负数,比如-1、-1.2、-0.99,期待返回值与输入相反;3.输入0,期待返回0;4.输入非数值类型,比如No原创 2020-06-18 17:07:16 · 519 阅读 · 0 评论 -
错误、调试和测试/错误处理--调试
在程序运行过程中,总会遇到各种各样的错误。有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的。有的错误是用户输入造成的,比如让用户输入email地址,结果得到一个空字符串,这种错误可以通过检查用户输入来做相应的处理。还有一类错误是完全无法在程序运行过程中预测的,比如写入文件的时候,磁盘满了,写不进去了,或者从网络抓取数据,网络突然断掉了。这类错误也称为异常,在程序中通常是必须处理的,否则,程序会因为各种问题终止并退出。Python.原创 2020-06-17 12:00:30 · 1257 阅读 · 0 评论 -
python/枚举类-使用元类
枚举类当我们需要定义常量时,一个办法是用大写变量通过整数来定义,例如月份:JAN = 1FEB = 2...NOV = 11DEC = 12这样写比较简单,但是缺点是其类型是int,且仍然是变量。更好的方法是为这样的枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例。Python提供了Enum类来实现这个功能:from enum import EnumMonth = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May原创 2020-06-16 17:15:52 · 779 阅读 · 0 评论 -
python/定制类
文章目录定制类1__str__2__iter__3__getitem__4__getattr__定制类看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的。len()方法:是为了能让class作用于len()函数。除此之外,Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类。1__str__定义一个Student类:class Student(object): def __init__(self,name):原创 2020-06-16 14:02:08 · 664 阅读 · 1 评论 -
python-使用__slots__/使用@property/多重继承
文章目录1.使用__slots__1.使用__slots__一般情况下,当我们定义一个class,创建一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。定义类:class Student(object): pass然后,给实例绑定一个属性:s = Studen()#s即是Student类的一个实例s.name = 'Math1'#动态的给实例绑定一个属性print(s.name)--->Math1还可以实例绑定一个方法...原创 2020-06-14 11:51:22 · 341 阅读 · 0 评论 -
Python MethodType函数的使用方法
看廖雪峰的python教程时候,看到它使用了MethodType函数,但是并没有教怎么使用,就在网上搜了一哈,记录一下python 中MethodType函数使用方法:使用的anaconda,创建的python 2.7的环境公共部分from types import MethodType #先导入MethodType#创建类class Student(): passdef set_age(self,myage): self.age = myaget1 = Student()#创建实例原创 2020-06-14 10:57:31 · 1392 阅读 · 0 评论 -
python/继承和多态-获取对象信息-实例属性和类属性
文章目录继承和多态继承多态静态语言 vs 动态语言获取对象信息使用type()继承和多态继承在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。如:编写的一个名为Animal的class,有一个run的方法可以直接打印class Animal(object): def run(self): print('Ani原创 2020-06-11 14:31:07 · 525 阅读 · 0 评论 -
python/类和实例-访问限制
类和实例类(Class)和实例(Instance)是面向对象最重要的概念。类,是抽象的模版(下面的Student类,)实例,是根据类创建出来的具体的对象,每个对象都拥有相同的方法,但各自的数据可能不同。Student类为例,定义类:'用class定义类'class Student(object): pass'class后面是类名(Student),类名通常是以大写开头的单词,紧接着是(object),表示该类是从哪个类集成下来的,通常,如果没有合适的继承类,就使用object类,这是所有类原创 2020-06-10 20:29:33 · 674 阅读 · 0 评论 -
模块/使用模块-导入第三方模块
模块在Python中,一个.py文件就称之为一个模块(Module)。使用模块的好处:1.大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用2.使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,但尽量不要和内置函数名字冲突。python内置函数你也许还想到,如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。mycompan就是一个包,包里原创 2020-06-10 13:11:10 · 1213 阅读 · 0 评论 -
python/返回函数-匿名函数-装饰器-偏函数
文章目录返回函数函数作为返回值闭包匿名函数装饰器练习请设计一个decorator,它可作用于任何函数上,并打印该函数的执行时间:偏函数总结:返回函数lambda匿名函数的格式:冒号前是参数,可以有多个,用逗号隔开,冒号右边的为表达式。其实lambda返回值是一个函数的地址,也就是函数对象。函数作为返回值高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。如:实现可变参数求和(功能是不需要立刻求和,而是在后面的代码中,根据需要再计算):#不返回求和的结果,而是返回求和的函数def l原创 2020-06-09 16:35:16 · 203 阅读 · 0 评论 -
python/函数式编程-高阶函数
文章目录函数式编程理解高阶函数(Higher-order function)函数名也是变量传入函数map/reducemap()reduce()练习:1.利用map()函数,将英文名字变为首字母大写,其他小写的规范名字2.编写一个prod()函数,可以接受一个list并利用reduce()求积:3.利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456:filter(用于过滤序列)练习:回数是指从左向右读和从右向左读都是一样的数,例如12321,909。原创 2020-06-08 23:14:20 · 485 阅读 · 0 评论 -
python高级特性(切片/迭代/列表生成式/生成器)笔记
文章目录切片(Slice)迭代练习:输入一个序列,找出最大值最小值列表生成式用for生成if..else总结来说:练习:生成器第一种方法:第二种:切片(Slice)当取一个list或tuple的部分元素部分元素时:cc= [1,2,3,4,5]print([cc[0],cc[1],cc(2)])但是如果列表或者元组很大,要取前N个元素,就需要用循环,比较麻烦。#注意list取值是[i]r=[]N = 4for i in range(4): r.append(cc[i])prin原创 2020-06-07 21:38:34 · 432 阅读 · 0 评论 -
函数部分笔记
文章目录函数调用函数定义函数函数的参数定义:**默认参数**可变参数:关键字参数命名关键字参数参数组合函数函数可以用来代替重复的部分,来简化代码调用函数调用函数时应注意,传入的参数数量和数据类型应该正确数据类型转换:同C相同,浮点数可以向小数转换int(5.6)-->5浮点数/整数转化为字符串:str(12.3)-->'12.3'函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:>>> a = abs # 变原创 2020-06-06 17:13:32 · 395 阅读 · 0 评论 -
python基础部分-笔记
文章目录数据类型与变量字符串和编码python的字符串数据类型与变量1.整数 1/200/-2002.浮点数 1.235/0.36/-100.103.字符串’abc’4.转义字符:\:'I\'m \"Fan\"!'输出为I'm "Fan"!\可以转义很多字符\n表示换行 \t表示制表符 \\表示\有很多字符需要转义时:可以用 r''表示''内部的字符不转义print(r'\\我是斜杠\\\')'''...'''显示多行内容print(''' ,,,我要多行 。。显原创 2020-06-05 20:48:45 · 520 阅读 · 0 评论 -
一些python笔记总
<! 看廖雪峰教程,做一些笔记,便于回顾>如果想要在终端执行.py文件,需要将路径切换到.py所在的目录下,才能正常执行:第一个程序一切的起源都在‘hello, world’输入用print(),括号可以用一个或多个字符串或者表达式print('hello, world')print('hello', 'world')#遇到逗号,或输出一个空格,输出为 hello worldprint('100 + 200 =', 100 + 200)#输出100 + 200=300输出用in原创 2020-06-05 12:00:01 · 191 阅读 · 0 评论