- 博客(55)
- 资源 (1)
- 收藏
- 关注
原创 小红书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
10370
26
原创 位运算符
是针对整数进行的二进制级别的运算。基本位运算符包括:按位与(&),按位或(|)、按位非(~)、按位异或(^)。按位运算符有如下基本运算规则:(只针对二进制的0和1这两个数据的基本位运算规则)。按位与(&)运算:0 & 1 结果为:00 & 0 结果为:01 & 0 结果为:01 & 1 结果为:1结论:只有两个都是1,按位与运算结果...
2019-02-28 23:36:58
348
原创 TP5 获取器更好的用法
TP5获取器的作用是对模型实例的(原始)数据做出自动处理。规范官方文档已经很明了了,贴上地址TP5获取器。假如数据库中定义的 status 有很多种状态,并且对应的msg并不是$status = [-1=>'删除',0=>'禁用',1=>'正常',2=>'待审核']; 这种简单格式,那该如何处理。使用枚举能更好的处理获取器。定义一个枚举类(它并不是一个非常标准的枚举...
2018-12-19 00:01:59
3304
原创 Python--枚举类型进阶
Python的枚举类型用好非常方便,当我们数据种存储的状态值(需要用数字来表示各种各样的状态),这种时候用到枚举类型能使得代码可读性高,让别人能看的懂,。先看定义的一个枚举类:from enum import Enumclass Nums(Enum): First = 1 Two = 2 Three = 3 Four = 4 @classmet...
2018-12-18 21:51:18
337
原创 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
637
原创 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
1634
原创 PHP-简单理解递归
我们知道,程序调用自身的编程技巧称为递归( recursion)。那么,该怎么去直接的理解它呢,一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、...
2018-11-23 22:25:54
65464
原创 将多个小字符串拼接成大字符串
有列表p = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’],如何将其中的每个元素给拼接起来。最容易想到的是,迭代列表使用‘+’拼接。但这样的话,假如有很多很多的字符串,就会造成严重的开销和浪费,这并不是一种推荐的做法。推荐的做法是使用str.join()方法,更加快速的拼接列表中所有字符串。内容太多,详情请看将多个小字符拼接成大字符串...
2018-10-16 22:59:17
1661
原创 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
30040
3
原创 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
4896
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
2956
原创 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
640
原创 Python--装饰器总结
装饰器最最主要的思想:从代码的稳定性来说:如果我们想对某一个被封装的单元,比如说是函数做出代码上的修改的话,我们可以不去改动这样一个具体的实现, 而是通过装饰器的这样一种形式来改变这个函数的行为。从代码的复用性角度来说:一个新增的功能也就是一个逻辑,把这个逻辑封装成一个装饰器,凡是需要这个功能的函数都可以使用装饰器来实现。一个函数可以有很多个装饰器。装饰器还是体现了AOP编程思想。...
2018-09-02 23:49:49
198
原创 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
437
原创 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
673
原创 Python---装饰器
Python的装饰器类似AOP编程思想。假如现有函数f1,现在有一个新需求,执行f1要打印出现在时间def f1(): print('hello world')f1()一般做法:直接在f1函数内部直接加一行代码,这样显然是不行的,这样违反了修改是封闭的,对扩展是开放的的原则。要是有几十上百的函数有这样一个需求,那岂不是要修改几十上百个函数的内部代码? 还有做法,定义另...
2018-09-01 22:39:25
138
原创 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
476
原创 Python----reduce
reduce在Python中是一个函数,使用它需要引入from functools import reduce用法:先看一个例子list_x = [1, 2, 3, 4, 5, 6, 7, 8]r = reduce(lambda x,y:x+y, list_x)print(r)----------------------输出:36上面这个例子的实现过程: 第一次计算...
2018-08-30 23:56:07
450
原创 Python--map结合lambda使用
因为lambda是匿名函数,map和lambda结合起来使用,代码更加简洁: 求列表list_x = [1, 2, 3, 4, 5, 6, 7, 8],每项的平方list_x = [1, 2, 3, 4, 5, 6, 7, 8]r = map(lambda x:x*x,list_x)print(list(r))------------------------------------...
2018-08-30 23:20:51
18973
5
原创 Python---map类
计算 list_num = [1,2,3,4,5,6,7,8] 列表中每个元素的平方值,并返回一个新的列表: 可以用map来简化:list_num = [1,2,3,4,5,6,7,8]def square(x): return x * xr = map(square,list_num)print(list(r))-----------------------...
2018-08-30 23:05:18
2632
原创 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
1936
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
173
原创 用闭包解决行走距离问题
假设起点从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
266
原创 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
836
原创 Python闭包
在一个函数中再定义一个函数:def curve_pre(): def curve(): pass return curve能否在外部直接用curve()来调用curve函数?答案是否定的,因为curve函数这样的一个作用域仅仅是作用在curve_pre函数内部的。要想调用curve()函数,可以用一个变量接收curve_pre函数,然后就可以调用了:d...
2018-08-27 22:33:53
189
原创 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
960
原创 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
5059
原创 Python枚举注意事项
1.枚举下面是不能有两个相同的标签的。2.两个标签的值一样的话,是代表的一种枚举类型,后面的标签是第一个标签的别名3 遍历枚举不会把别名给循环处理,要把别名也遍历出来就用枚举类的__menbers__属性 枚举下面是不能有两个相同的标签的。from enum import Enumclass Color(Enum): YELLOW = 1 YELLOW =...
2018-08-24 22:08:18
324
原创 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
3979
1
原创 枚举类型、枚举名称、枚举值
先看一个枚举类: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
11450
原创 普通类和枚举类
在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
362
原创 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
152
原创 JSON序列化
把Python的数据类型向json字符串转换的一个过程,称之为序列化。 并不单单指Python,还有其他的语言。json和python类型互相转换对应类型如下所示: JSON Pythonobject <-> dictarray <-> liststring <-> strnumber <-> int...
2018-08-22 23:32:02
175
原创 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
213
原创 什么是JSON
JavaScript Object Notation 的一个简写, JavaScript对象标记 JSON的本质是什么:是一种轻量级的数据交换格式 JSON是一种数据格式 字符串是JSON表现形式 符合JSON格式的字符串叫做JSON字符串json 易于阅读 json 易于解析 json 网络传输效率高 json可以 跨语言交换数据...
2018-08-21 23:36:31
256
原创 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
767
原创 Python正则十三之search与match函数
Python的re模块中还有两个函数: match 匹配的特征是从字符串的开始去匹配 search 搜索整个字符串,直到它找到第一个满足正则表达式的结果,然后就将这个匹配的结果给返回回来...
2018-08-20 20:42:30
1393
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人