python
文章平均质量分 68
欲乘风
这个作者很懒,什么都没留下…
展开
-
python 装饰器
python这些奇奇怪怪的概念确实挺多了,不过好在终于快了解完了。闲话不多说,本问讲一下我对装饰器的理解,看过一遍装饰器之后,有点雾里看花的感觉,虽然可以强记下来,不过理解其中精要才是最该做的。一,为什么需要装饰器?当一个函数已经上线工作之后,虽然它本身没有问题,但是当需要添加功能的时候就比较麻烦了。首先要清楚,既然该函数已经可以在工作,那么再去修改这个函数的源代码就不合理也不现实了。所以...原创 2018-12-19 17:15:16 · 104 阅读 · 0 评论 -
正则
正则的基本语法^开头 $结尾 个数匹配 : * :任意个 +:1个或以上 ?:0个或1个 {n}: n个 {n,m}: n到m个 \d 数字 \w 字母 \s 空白符 . 任意字符更多详细语法:http:...原创 2018-12-22 19:05:51 · 119 阅读 · 0 评论 -
python异步I/O
一,python使用协程消费者不用多说,会停在yield这里。之前只知道当调用next()时,会继续执行。到了协程这里,当调用了send(msg)时,这个生成器会收到这个msg并继续执行。yield 如果带上了r,又会把r返回给调用了send(msg)的人。def consumer(): r = '' while True: n = yield r ...原创 2018-12-28 15:32:53 · 355 阅读 · 0 评论 -
turtle画分形树
今天用了python内置的turtle绘图库,感觉很有意思。然后尝试用turtle+递归画了一个分型树。代码如下,import turtletoplevel = 6 #一共递归6层angle = 30rangle = 15def drawTree(length, level): turtle.left(angle) #绘制左枝 turtle.forw...原创 2018-12-22 22:57:52 · 3664 阅读 · 2 评论 -
你真的明白Java和Python3使用Unicode编码的含义吗?
经常会听到Unicode是用两个字节表示世界上所有语言的编码,那么问题来了两个字节不过65535个符号,怎么能表示所有语言?也经常搞不清楚Unicode和UTF-8到底有什么区别。也曾听说内存中都是Unicode统一表示,然后传输和存储的时候转换成UTF-8。总之网络时代就是这样——众说纷纭。这里,我仅把此刻认为正确的说法记录下来。一. Unicode世界上存在着多种编码方式,同一个二进制...原创 2018-12-17 21:32:24 · 528 阅读 · 0 评论 -
python的电池——内置模块
本博客只为汇总内置模块的基本用法,方便查阅。目录datetime: 处理时间和日期collections: 集合模块base64: 64个字符表示二进制数据Struct: 操作字节的模块hashlib: 摘要算法模块hmac: 标准加盐算法模块itertools: ...原创 2018-12-23 17:15:28 · 599 阅读 · 0 评论 -
python第三方模块
和内建模块一样,也只是汇总方便查阅目录requests: 更方便的http请求模块chardet: 检测bytes的编码psutil: 获取系统各种信息模块Pillow: 图像处理模块requests: 更方便的http请求模块比起urllib使用起来方便了很多,请求指定关键字参数即可,响应信息一行代码即可。最棒的是,有中文文档import requests#...原创 2018-12-23 19:37:02 · 274 阅读 · 0 评论 -
Pycharm下使用Pillow的坑
导入 from PIL import Image报错D:\Anaconda3\python.exe D:/pyproject/hello.pyTraceback (most recent call last): File "D:/pyproject/hello.py", line 1, in <module> from PIL import Image Fi...原创 2018-12-24 00:11:56 · 4851 阅读 · 1 评论 -
import产生的 __name__和__pycache__
源起:刚才提交代码的时候,发现项目下多了一个__pycache__文件夹,就想知道怎么来的,查了一下,觉得这篇写的很好。转一下。模块的调用Python中导入模块时,实际上会把被导入的模块执行一遍,如下: 先看被调用的模块test.py:def haha(): print("哈哈")haha()1234再看主程序main.py:import testpr...转载 2018-12-29 09:47:13 · 147 阅读 · 0 评论 -
python实战笔记
本片博客仅用于记录开发个人博客中的心得体会。目标:使用aiohttp, aiomysql开发异步服务器。aiohttp中文文档第一阶段:开发orm框架orm框架的作用就是直接在代码中对对象进行操作,映射到数据库的操作,这样就屏蔽了数据库操作的具体细节。相当于hibernate的作用。第一步:使用了aiohttp那么所有的I/O都要用异步技术,数据库也不例外,要用aiomys...原创 2018-12-29 12:45:13 · 222 阅读 · 0 评论 -
谈谈python函数传参
上一次学习python语法的时候,被函数的参数弄得有些迷糊,究其原因,首先python函数的参数形态确实不那么单纯,更重要的一点是,本人当时没有弄清楚,为什么要学python,没有把想把它当作主力语言的想法。但结合现在行业的状况和这段时间自身的经历来看,python确实是最有钱途(对不起我这么直白)并且简单的。五类参数:Python的函数具有非常灵活的参数形态,既可以实现简单的...原创 2018-12-18 19:38:06 · 163 阅读 · 0 评论 -
python列表生成式和生成器
一,python迭代所谓迭代就是循环,python里的虚幻不同于c,java里的循环,需要依靠下标,它和java里列表的迭代差不多。for x in arr: print(x)只要arr是Itreable 可迭代对象 那么就可以用这种方式迭代。二,列表生成式要生成list[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1,11...原创 2018-12-18 22:16:35 · 330 阅读 · 0 评论 -
python迭代器和for循环原理
我们已经知道,可以直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list、tuple、dict、set、str等;一类是generator,包括生成器和带yield的generator function。这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。可以使用isinstance()判断一个对象是否是Iterable对象:>>...转载 2018-12-18 22:21:53 · 918 阅读 · 0 评论 -
来看看python支持的函数式编程
wiki上的定义:函数式编程(英语:functional programming)或称函数程序设计,又称泛函编程,是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。函数编程语言最重要的基础是λ演算(lambda calculus)。而且λ演算的函数可以接受函数当作输入(引数)和输出(传出值)。其实,JDK 8中最大的变换就是引入了函数式编程Lambda表...原创 2018-12-19 11:14:45 · 1084 阅读 · 0 评论 -
filter高阶函数和Iterator惰性计算的配合
在网络上看到一种python计算素数的方法,觉得对理解filter和Iterator很有帮助,仅在此记录下来。一,不同于一般的素数计算方案:计算素数的一个方法是埃氏筛法,它的算法理解起来非常简单:首先,列出从2开始的所有自然数,构造一个序列:2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...原创 2018-12-19 12:03:58 · 203 阅读 · 0 评论 -
python闭包——返回函数
函数作为返回值高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的:def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?...转载 2018-12-19 13:01:57 · 314 阅读 · 0 评论 -
python变量作用域
python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量 。一 ,先来看一下问题,这是创作这篇博客的诱因global关键字用来在函数或其他局部作用域中使用全局变量。但是如果不修改全局变量也可以不使用global关键字。def createCounter(): a = 1 def counter...原创 2018-12-19 13:28:50 · 227 阅读 · 0 评论 -
python网络编程
一,概念Internet:是连接网络的网络,任何网络只要支持Internet就可以接入Internet。IP:每张网卡都有一个固定的32位网络地址IPv4。IP包:在两个IP之间传递的数据包,不保证送达,不按顺序。TCP:保证IP包送达,保证顺序,并且具体到是IP中哪两个进程再通信。Socket: 代表一个连接 需要确定四个东西: 服务器ip+服务器port + 客户端ip+客...原创 2018-12-27 00:03:53 · 232 阅读 · 0 评论 -
python分布式进程
转自廖雪峰的python教程,因为是在windows上编程,所以代码会和原文有一些出入。master.pyfrom multiprocessing.managers import BaseManagerimport random, time, queuetask_queue = queue.Queue() #任务队列result_queue = queue.Queue() ...转载 2018-12-22 18:06:19 · 150 阅读 · 0 评论 -
ThreadLocal是用来做什么的?
真真应了那句话,书读百遍,其意自现。何况大多数时候,你只需要重复一遍就行了,废话不多说。一,首先来看看这样一些问题的区别:1. 多进程之间如何通信?因为不同的进程会在内存中被分配不同的资源。所以多进程之间通信是一个问题,python的multiprocessing模块一共了一系列的交换方式,Queue, Pipe, Manager。2. 多线程之间如何通信?这就不是一个问题,因...原创 2018-12-22 16:21:32 · 2047 阅读 · 0 评论 -
python多线程
在python中,多进程是可以利用多核进行真正并行的,但是多线程就不行了,理由可以参考这篇文章python学习笔记- day10-4【问题:为什么python的多线程不能利用多核CPU?】,标题一和标题三都总结得很好。 一,python多线程的基本使用:import threading, timedef ThreadWorking(): print('thread(%s)...原创 2018-12-22 15:11:15 · 140 阅读 · 0 评论 -
从java面向对象去分析python面向对象
本文的前提是对java的面向对象语法和概念有一个基本的了解,试图从这里去学习理解python的面向对象。一,用python去实现类class Animal(object): kind = 2000 def __init__(self, name): self.name = name def run(self)...原创 2018-12-20 13:49:37 · 1313 阅读 · 0 评论 -
python多继承父类存在同名方法和Mixin
废话不多说,还是坚持代码驱动,先看代码,引出问题一,python多继承 父类存在同名方法class land(object): def me(self): print('land') def run(self): print('run...')class sky(object): def me(self): p...原创 2018-12-20 15:57:12 · 2773 阅读 · 2 评论 -
python __slots__和@property
前面了解了python的面向对象的基本方式https://blog.csdn.net/qq_21294095/article/details/85118247心中有挺多的疑问,而解决这些疑问就需要用到python更强大的功能了一,动态绑定这个事儿太随意了,怎么限制?__slots__属性可以用来限制动态绑定可以绑定的属性,哪怕是在类内部,也要遵守这个规定。class Animal...原创 2018-12-20 19:06:42 · 295 阅读 · 1 评论 -
python定制类例子——魔法方法
__str__我们先定义一个Student类,打印一个实例:>>> class Student(object):... def __init__(self, name):... self.name = name...>>> print(Student('Michael'))<__main__.Student ob...转载 2018-12-20 17:38:04 · 205 阅读 · 0 评论 -
python中object的方法——魔法方法
正如java有个顶级类Object一样,Object类提供了hashCode equals toString等一系列方法。那么python中的object也是一样,并且这些方法感觉上会更强大,更灵活。本文仅做一个总结,方便日后查阅。__slots__ 限制类的属性 __len__() 实现了它才能被len()方法调用 __str__() 和 __repr__() 前者是print(...原创 2018-12-20 17:38:52 · 5381 阅读 · 0 评论 -
python的元类
元类从概念上理解是不难的,仅从字面上去理解,当初学数据库的时候,就知道有元数据这么个东西,那么元数据是什么?元数据就是用来描述数据库的数据。那么一样的道理,类是什么?类是创建对象用的,那么元类就是创建类用的。一,先来看type方法class Lan(object): def run(self): print('run...')l = Lan()print(t...原创 2018-12-21 12:20:27 · 248 阅读 · 0 评论 -
metaclass实现orm的原理
需要从调用去入手,理解框架为什么这么写,另外,在原文基础上,修改了Model代码,原文有些做复杂了。另外最重要的是,你需要在原文的引导下,自己亲自动手实现一遍才能真正理解。期望实现这样一个orm框架的调用:class User(Model): # 定义类的属性到列的映射: id = IntegerField('id') name = StringField('...转载 2018-12-21 12:19:41 · 311 阅读 · 1 评论 -
如何优雅地终止python线程
前言 · 零我们知道,在python里面要终止一个线程,常规的做法就是设置/检查 --->标志或者锁方式来实现的。这种方式好不好呢?应该是不大好的!因为在所有的程序语言里面,突然地终止一个线程,这无论如何都不是一个好的设计模式。同时有些情况下更甚,比如:线程打开一个必须合理关闭的临界资源时,比如打开一个可读可写的文件; 线程已经创建了好几个其他的线程,这些线程也是需...转载 2018-12-27 00:05:53 · 20652 阅读 · 1 评论 -
python使用SQLite,MySQL,SQLAlchemy
SQLite: 轻量级、可嵌入,但不能承受高并发访问,适合桌面和移动应用MySQL: 为服务端设计的数据库,能承受高并发一,SQLitepython内置了c写的很小的嵌入式数据库SQLite,使用方法也很简单,因为其数据库就是一个文件,所以获取connection之后,再紧接着获取游标cursor而不是session。例子,这里为了简化,突出重点,没有使用try...except....原创 2018-12-27 13:39:56 · 949 阅读 · 0 评论 -
了解什么是Anaconda
由于python的火热,我也信了那句,人生苦短,我用python。那么在学python的时候,基本绕不开Anaconda。本文转述了https://www.jianshu.com/p/eaee1fadc1e9一文中的讨论,并进行了一些修正。概述很多学习python的初学者甚至学了有一段时间的人接触到anaconda或者其他虚拟环境工具时觉得无从下手, 其主要原因就是不明白这些工具究竟有...转载 2018-12-17 10:16:01 · 15083 阅读 · 0 评论 -
强迫症该这么对待异常和调试
其实异常是个非常好的东西,但是滥用异常会让本来简单的代码变得很难维护。先来看python中异常的用法,try: x = 0 y = 10 / xexcept ZeroDivisionError as e: print('x is zeor:', e)else: print('no error')finally: print('finally'...原创 2018-12-21 19:30:11 · 267 阅读 · 0 评论 -
python Web开发
目录本文参考自廖雪峰老师的python教程,旨在理清用python做web开发的思路。一,HTTP二,请求一个网页的流程三,WSGI四,Web框架五,模板六,总结一,HTTPhttp get请求格式:GET /path HTTP/1.1Header1: Value1Header2: Value2Header3: Value3http post请求...原创 2018-12-27 17:50:04 · 11025 阅读 · 1 评论 -
Pycharm指定python环境
一,安装并破解PycharmWindow下安装Pycharm不是多难的事情,但是根据国内行情,破解这个事儿几乎是个必经之路。这里不是本文的重点,请自行百度,这里仅给出一个经过检验的连接以作参考破解https://blog.csdn.net/LeonTom/article/details/82664050二,Pycharm给项目指定python环境在工作环境中我们会集成开发环境去编码...原创 2018-12-17 11:23:18 · 5009 阅读 · 1 评论 -
python I/O+编码 小例
python3使用Unicode编码 str = ord('中') #ord获取字符整数表示 这个整数表示也就是Unicode编码去映射的 也就是'中'字在内存中真正表示的值print(str)#在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytesstr = '中文'.encode('utf-...原创 2018-12-21 20:40:40 · 147 阅读 · 0 评论 -
python在windows上如何创建文件
在学习python I/O的时候,试着使用mknod创建文件夹,提示os没有mknod,查阅发现了这个。转一下AttributeError: module ‘os’ has no attribute ‘mknod’今天在给同学做一个遍历目录、统计学生交作业情况的Python程序。在我想用代码生成一些测试文件,使用os.mknod()的时候,碰到了这个问题。搜了一下才知道Windows上的Py...转载 2018-12-21 21:46:39 · 6324 阅读 · 0 评论 -
python序列化和JSON
为什么把这两个放到一起,理由很简单,不过暂时不解释。一,先看python提供的序列化模块pickleimport picklel = ['柯基', '小李', '大华']lw = pickle.dumps(l) # 把对象转乘字节流 也就是序列化print(lw)with open('l.txt', 'wb') as f: #字节流写入文件 f.write(lw)...原创 2018-12-21 23:02:57 · 127 阅读 · 0 评论 -
python多进程--python之旅的首个坑
注意这里是多进程而不是多线程一,先看多进程数据交互,使用Queue或Pipes这些multiprocessing模块封装好的交换方式。from multiprocessing import Process , Queueimport os, time, randomdef write(q): print('write child process(%s) start..' %...原创 2018-12-22 13:33:54 · 393 阅读 · 1 评论 -
python电子邮件
一,电子邮件传输流程MUA 邮件用户代理 MTA 邮件传输代理 MDA 邮件投递代理流程:用户a→MUA →MTA→...→MTA→MDA←MUA←用户bMUA只能把电子邮件发送给自己的MTA,这个过程使用SMTP协议 MTA可以在不同的服务提供上之间传递,这个过程也是SMTP协议 MTA投递到MDA也只能是自家的MDA,也是SMTP协议 MUA也是,只能获取自家的MDA邮件...原创 2018-12-26 23:04:44 · 331 阅读 · 0 评论