
Python
一场丶
一场恋爱,两个人。
展开
-
小红书sign算法和shield算法
import urllibimport hashlibdef sign_with_query_items(data): udid = data['deviceId'] # 将请求参数按key排序 data = {k: data[k] for k in sorted(data.keys())} # 拼接成字符串 data_str = '' fo...原创 2019-12-02 23:44:48 · 10447 阅读 · 26 评论 -
Python---装饰器关键字参数
装饰器中使用了可变参数列表,就可以支持了不同函数中有不同参数个数的情况,要是函数中有关键字参数嘞,那该如何定义: 先看关键字参数的用法:用双星号**定义关键字参数def f3(func_name1,func_name2,**kw): print(func_name1+func_name2) print(kw)f3('test,','test2',a=1,b=2,c...原创 2018-09-02 23:35:01 · 443 阅读 · 0 评论 -
Python---装饰器
Python的装饰器类似AOP编程思想。假如现有函数f1,现在有一个新需求,执行f1要打印出现在时间def f1(): print('hello world')f1()一般做法:直接在f1函数内部直接加一行代码,这样显然是不行的,这样违反了修改是封闭的,对扩展是开放的的原则。要是有几十上百的函数有这样一个需求,那岂不是要修改几十上百个函数的内部代码? 还有做法,定义另...原创 2018-09-01 22:39:25 · 142 阅读 · 0 评论 -
Python枚举转换
先看一个枚举类from enum import Enumclass Color(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4如何把a=1转换成枚举类型,很简单,直接使用方法Color(a)就可以from enum import Enumclass Color(Enum): YEL...原创 2018-08-25 23:35:46 · 5079 阅读 · 0 评论 -
Python三元表达式
在Python中的三元表达式的写法和大部分的语言是不同的 现在有 x, y,如果 x大于y的话返回x否则返回y绝大部分语言中的写法:x > y ? x : yPython中的写法 先看一个伪代码:条件为真时返回的结果 if 条件判断 else 条件为假时的返回结果x =1y =2r = x if x > y else y--------...原创 2018-08-29 22:20:18 · 1945 阅读 · 1 评论 -
lambda表达式
在Python中还可以定义匿名函数(在定义一个函数的时候不需要定义函数名) 使用lambda关键字定义匿名函数,返回的时候不用return返回,直接冒号后面表达式的计算结果将作为匿名函数的返回结果,不需要return关键字# 有名函数def add(x,y): return x+y# 匿名函数lambda x,y : x + y 如何调用匿名函数?在Pytho...原创 2018-08-29 21:52:46 · 178 阅读 · 0 评论 -
JSON反序列化
在python中,有json模块可以把json字符串转换成Python对应的数据结构 先看一个JSON字符串,在JavaScript中,它是一个JSON objectimport jsonjson_str = '{"name":"guo","age":18}' s = json.loads(json_str)print(type(s))print(s)---------------..原创 2018-08-21 23:50:01 · 218 阅读 · 0 评论 -
Python枚举注意事项
1.枚举下面是不能有两个相同的标签的。2.两个标签的值一样的话,是代表的一种枚举类型,后面的标签是第一个标签的别名3 遍历枚举不会把别名给循环处理,要把别名也遍历出来就用枚举类的__menbers__属性 枚举下面是不能有两个相同的标签的。from enum import Enumclass Color(Enum): YELLOW = 1 YELLOW =...原创 2018-08-24 22:08:18 · 328 阅读 · 0 评论 -
Python枚举的比较运算
两个枚举之间是可以做等值比较的 看代码:from enum import Enumclass Color(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4class Color1(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4re...原创 2018-08-24 21:44:21 · 3993 阅读 · 1 评论 -
Python---filter
filter在Python中也是一个类,,可以过滤一些不符合我们定义规则的元素 将list_x列表中的0都过滤掉list_x = [1, 0, 1, 2, 0, 1]f = filter(lambda x: x, list_x)print(list(f))------------------------------------------输出:[1, 1, 2, 1]l...原创 2018-08-31 22:46:17 · 485 阅读 · 0 评论 -
用闭包解决行走距离问题
假设起点从x=0开始。 走了3步,打印的结果result = 3 再走了5步,打印的结果是result = 8 又走了6步,打印的结果是result = 14 先用非闭包函数实现:x = 0def go(step): global x new_pos = x + step x = new_pos return xprint(go(3)) ...原创 2018-08-28 23:57:32 · 271 阅读 · 0 评论 -
Python---None
在Python中,有一个特殊的表示,None,它就是空。它是一个类型,也是一个对象。 从值上来说,None都不等于空字符串,不等于空的列表,不等于0,不等于Falsea = ''b = Falsec = []d = 0print(a == None)print(b == None)print(c == None)print(d == None)------------...原创 2018-09-07 21:29:42 · 30058 阅读 · 3 评论 -
Python--装饰器支持不同个数的参数
对没有参数传递的函数使用装饰器可以如下:import timedef f1(): print('hello world')def print_current_time(func): print(time.time()) func()print_current_time(f1)假如f1函数中有一个参数,再另一个函数f2要传递两个参数:def f1(f...原创 2018-09-02 23:15:15 · 680 阅读 · 0 评论 -
Python--枚举类型进阶
Python的枚举类型用好非常方便,当我们数据种存储的状态值(需要用数字来表示各种各样的状态),这种时候用到枚举类型能使得代码可读性高,让别人能看的懂,。先看定义的一个枚举类:from enum import Enumclass Nums(Enum): First = 1 Two = 2 Three = 3 Four = 4 @classmet...原创 2018-12-18 21:51:18 · 346 阅读 · 0 评论 -
Pytho异步多线程发送邮件
当批量发送邮件的时候,访问第三方邮件服务器等待返回的时间可能会比较长,而这时候同步执行代码就不适用了。这个时候就需要开启一个线程异步发送邮件:视图函数代码:@web.route('/test/mail')def send_mail(): from app.libs.email import send_mail send_mail('1215798914@qq.com','d'...原创 2018-12-15 23:39:50 · 654 阅读 · 0 评论 -
Python 之yield关键字和@contextmanager 装饰器
定义一个上下文管理器类的方法如下:class MyContent: def __enter__(self): print('first connect to resource') return self def __exit__(self, exc_type, exc_val, exc_tb): print('close resou...原创 2018-12-01 22:48:42 · 1642 阅读 · 0 评论 -
将多个小字符串拼接成大字符串
有列表p = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’],如何将其中的每个元素给拼接起来。最容易想到的是,迭代列表使用‘+’拼接。但这样的话,假如有很多很多的字符串,就会造成严重的开销和浪费,这并不是一种推荐的做法。推荐的做法是使用str.join()方法,更加快速的拼接列表中所有字符串。内容太多,详情请看将多个小字符拼接成大字符串...原创 2018-10-16 22:59:17 · 1676 阅读 · 0 评论 -
Python高阶用法
一些高阶用法将在看云发布。带上地址:Python高阶技巧原创 2018-09-14 22:49:04 · 39002 阅读 · 0 评论 -
Python列表推导式,集合推导式,元组推导式
先定义一个列表aa = [1, 2, 3, 4, 5, 6, 7, 8]a = [1, 2, 3, 4, 5, 6, 7, 8]# 列表推导d = [i**2 for i in a]#集合推导e = {i**2 for i in a}#元组推导f = (i**2 for i in a)print(type(d))print(type(e))print(ty...原创 2018-09-06 22:41:57 · 4910 阅读 · 1 评论 -
Python用字典映射代替其他语言switch case语句
Python中是没有switch case语句的,但是Python可以用字典映射来代替,而不建议使用if else来代替。 且看其他语言 switch case: switch ($day) { case 0: $dayName = "sunday"; ...... break; case 1: $dayName...原创 2018-09-06 21:40:02 · 2972 阅读 · 0 评论 -
Python抓取熊猫TV分类下的主播人气排名
抓取LOL分类下的主播人气排名情况:"""抓取熊猫TV当前分类主播人气排名"""import refrom urllib import requestclass Spider(): url = 'https://www.panda.tv/cate/lol' # 正则匹配,匹配两个div之间所有的字符(包含主播昵称和主播人气),并且是非贪婪(因为后面有很多个&am原创 2018-09-05 23:03:52 · 645 阅读 · 0 评论 -
Python--装饰器总结
装饰器最最主要的思想:从代码的稳定性来说:如果我们想对某一个被封装的单元,比如说是函数做出代码上的修改的话,我们可以不去改动这样一个具体的实现, 而是通过装饰器的这样一种形式来改变这个函数的行为。从代码的复用性角度来说:一个新增的功能也就是一个逻辑,把这个逻辑封装成一个装饰器,凡是需要这个功能的函数都可以使用装饰器来实现。一个函数可以有很多个装饰器。装饰器还是体现了AOP编程思想。...原创 2018-09-02 23:49:49 · 203 阅读 · 0 评论 -
枚举类型、枚举名称、枚举值
先看一个枚举类:from enum import Enumclass Color(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4print(Color.GREEN.value) # 枚举值 取值 Color.GREEN.valueprint(Color.GREEN.name) # 枚举名称print(Co...原创 2018-08-23 23:29:50 · 11464 阅读 · 0 评论 -
普通类和枚举类
在python中,表述 yellow = 1,green = 2有很多种做法#定义全局变量yellow = 1green = 2# 字典类型a = {'yellow': 1, 'green': 2}# 普通类class TypeDiamond(): yellow = 1 green = 2这样的普通类相对于枚举类来说是有缺点的: 缺点·: ...原创 2018-08-23 22:37:41 · 368 阅读 · 0 评论 -
Python 正则学习五之数量词
数量词什么叫数量词?首先来看一个例子有这样一个字符串a = 'python 1234php567java' 把字符串a里面所有的这样一些python、java、php 一些单词给匹配出来。 首先我们会想到用字符集,看代码import rea = 'python 1234php567java'r = re.findall('[a-z]', a)print(r)------...原创 2018-08-16 21:34:11 · 551 阅读 · 0 评论 -
Python正则十一之re.sub正则替换
re模块中的sub可以进行字符替换 先看一个例子,把lan字符串中的C#替换成C++import relan = 'PythonC#JavaC#PHPC#'r = re.sub('C#','C++',lan)print(r)-----------------------------------输出: PythonC++JavaC++PHPC++++++++++++++++++++...原创 2018-08-19 12:04:07 · 453 阅读 · 0 评论 -
Python正则十之匹配模式参数
r = re.findall()还有第三个参数,叫做匹配模式参数,是可选的。比如忽略大小写,多行模式等,1.re.I 忽略大小写 2.re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境 3.re.M 多行模式 4.re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符) 5.re.U 表示特殊字符集 \w, \W,...原创 2018-08-19 11:24:18 · 436 阅读 · 0 评论 -
Python正则九之组
Python正则里有组的概念,一个括号对应一组,用括号括起来一系列字符,那这些字符就是一组,里面的字符是且的关系。例:#判断a字符串中是否包含3个pythonimport rea = 'PythonJavaPHPPythonPythonPython'r = re.findall('(Python){3}', a)print(r)---------------------------...原创 2018-08-19 10:47:00 · 151 阅读 · 0 评论 -
Python正则八之边界匹配
先看一个例子验证 a字符串的长度是否在4到8位之间 首先想到是用字符集来进行匹配import rea = '10001'r = re.findall('\d{4,8}',a)print(r)-----------------------------输出:['10001']这样确实可以匹配到a字符串,但是如果a字符串的长度是大于8位的呢import rea =...原创 2018-08-18 22:31:40 · 1159 阅读 · 0 评论 -
Python 正则学习四之概括字符集
概括字符集有很多,下面就列出比较常用的: \d匹配一个数字字符,等价于[0-9]import rea = 'Pyth3 o 9n'r = re.findall('\d', a)print(r)---------------------------------------------输出:['3', '9']\D匹配一个非数字字符,等价于[^0-9]import r...原创 2018-08-15 23:43:52 · 370 阅读 · 0 评论 -
Python 正则学习三之字符集
现在有这样一个需求有这样一个s字符串 s = 'abc, acc, adc, aec, afc, ahc' s字符串中有以逗号分开的每组字符串,为了方便表述,将每组字符串暂时称为单词,现在就要提取其中单词的中间一个字母是c或是f的单词,关键是或 所以就要有一个抽象,能概括c或f,就有了字符集的概念了。import res = 'abc, acc, adc, aec, afc, ah...原创 2018-08-15 22:11:53 · 473 阅读 · 0 评论 -
Python正则七之简洁数量词
现在比较常用的简洁数量词有 *、+、?* 的作用是匹配*号前面的字符0次或者无限多次 注意观察 a字符串中第一个单词pytho(python后面少了一个n),第二个单词是正常的python,第三个pythonn(python)后面多了一个n。import rea = 'pytho0python1pythonn2'r = re.findall('python{1,2}*',...原创 2018-08-18 00:19:26 · 408 阅读 · 0 评论 -
Python 正则学习二之有意义的正则
第一节讲到findall第一个参数用一个常量字符串来写的话,是无意义的,这一节来学习下比较有意义的正则表达式。提取a字符串中所有的数字:import rea = 'C1C++2Java#3PHP0Python'r = re.findall('\d', a)print(r)---------------------------输出:['1','2','3','0']注:\d 匹...原创 2018-08-14 23:38:38 · 151 阅读 · 0 评论 -
Python 正则学习六之正则贪婪与非贪婪
正则表达式数量词是有贪婪和非贪婪之分的默认情况下,python正则表达式倾向于贪婪的匹配方式如果把一个数量词限定在一个区间之内,python就倾向于尽可能多的取这个区间最大的值这里规定是3到6,它匹配到3个的时候呢,它并不会以为这个表达式是成立的,它还会继续往后去寻找,一直到某一个字符不满足它的条件(不在数量词的区间之内或者匹配的字符不满足字符集的条件)时,它才会停止import ...原创 2018-08-16 21:57:27 · 333 阅读 · 0 评论 -
Python正则十二之把函数作为参数传递
先看一个例子: 对字符串s = 'A8C421Z321'的替换,找出这个字符串中所有的数字,然后这个数字凡是大于等于6的,那么就把这些数字统一替换成9,而小于6的字符串的数字全部替换成0。import res = 'A8C421Z321'def convert(value): matched = value.group() #拿到具体的数字 if int(matche...原创 2018-08-19 23:41:51 · 730 阅读 · 0 评论 -
Python枚举小结-限制类型
现在有一个枚举类from enum import Enumclass Color(Enum): YELLOW = 1 GREEN = 'str' BLACK = 3 RED = 4 要想这个Color枚举类中的枚举类型的值必须是数字,就可以继承IntEnum枚举类from enum import IntEnum,uniqueclass...原创 2018-08-26 21:55:58 · 972 阅读 · 0 评论 -
Python枚举
用枚举来表示 1 绿 2 黄 3 红 4 黑 需要引入Enum模块 所有的枚举类型都是Enum的子类 比写1,2,3,4,5可读性是强很多的。枚举的标识名字最好用大写来表示from enum import Enumclass Color(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = ...原创 2018-08-23 22:31:58 · 155 阅读 · 0 评论 -
Python正则十四之group 分组
先看一个例子: 将s='life is short,i use python'字符串中返回life和python之间的一系列字符import res = 'life is short,i use python'r = re.search('life(.*)python',s)print(r.group())------------------------------------...原创 2018-08-20 23:54:19 · 774 阅读 · 0 评论 -
Python正则十三之search与match函数
Python的re模块中还有两个函数: match 匹配的特征是从字符串的开始去匹配 search 搜索整个字符串,直到它找到第一个满足正则表达式的结果,然后就将这个匹配的结果给返回回来...原创 2018-08-20 20:42:30 · 1424 阅读 · 0 评论 -
Python闭包注意问题
先看一个例子: 定义了一个函数f1,然后f1的内部定义了一个局部的变量a = 10,然后定义了一个函数f2,f2的内部对a重新赋值,重新赋值之后在f2的内部打印了a的值,f2定义完了之后,然又回到f1的内部,打印a的值,接着又在f1的内部调用一下f2,最后又打印了a的值,最后在整个的f1外部,模块中整体的调用f1def f1(): a = 10 def f2(): ...原创 2018-08-28 00:17:29 · 841 阅读 · 0 评论