00:00
OK,你好,我是乐创,那我们今天来讲一下PYTHON3当中的一个pickle与Jason,好吧,那我们来看一下,就pick Jason,那在刚刚开始之前呢,我想来一点点不一样的东西啊,就是。为什么人与人之间的差距会这么这么的大呢?因为能力的不同,做到结果不同啊,但是世界上没有金手指啊,都是要稳扎稳打的,没有一招制敌啊,都是千锤百炼。所以呢,我们就需要那些真正厉害的人呢,每天都是在扎扎实实的蹲马步,练基本功。问问自己啊,呃,问问自己一些最基本的事情做到了没有啊,就像我正在做的这件事啊,录屏啊,或者说讲课,或者说写文章啊,这些基本的事情我做到了没有啊,我得问,我得问问我自己嘛,是不是要扎实一点啊,我们才能走的更远。
01:07
这是我们所说的什么?开头前言,好吧,我想做一些不一样的东西。好。那我们接下来来呃讲一下啊,就是说来个不正经的定义好吧,啊,先来个不正经的定义,那问题是会有的,就是说有些人啊,对于专业的晦涩难懂的定义呢,老是无法专心的阅读啊,那接下来我将要以一个特别简单的对话啊,那你来啊,快速了解啊,Jason和pick pick picko,它中间的一个区别以及它的用法,好吧,那有一个同学Alex来问我,用问一创就是我吗?他说Jason这是干什么用的,和pickle是有什么区别吗?嗯,我试着这么说啊,啊,Python这个人呢,如果要去出远门的话啊,那出远门的话,那就是要做各种各样的什么。
02:03
DB啊,就是数据库嘛,Database啊,数据库啊,就是高铁,后来呢,他买了辆小破车啊,小买了辆小破车啊,小破车,那这小破车呢,就是啊。Le p在做短途用途的交通工工具啊,就短程了啊,那就在近几年呢,打车软件火爆了,满街跑的都是滴滴啊,满街跑的时候滴滴,于是呢,他就下载了一个软件叫Jason模块啊,需要的时候呢,也要用下滴滴的Jason,后来呢,就越来越多人在用Jason了啊这滴滴了啊,我不知道这个答复呢,对你觉得怎么样啊,我觉得应该是讲的特别通俗易懂好吧,那对于这个文章啊,对应的文章呢,我也会放在视频的下方。所以如果你选择看文章的话呢,不要忘记去看文章啊,看视频的话不要忘记去看文章,因为这样结合起来会更好,好吧,然后呢,我们来看一下啊,就是说呃,我就不说非常专业的术语了,但是您应该已经知道了这两个库的小小关联。
03:13
啊,不过就单单这么讲肯定是不行的,那我们接下来正经定义一下好吧,我们来讲什么呢?啊,Jason库啊,什么是Jason啊,我来讲一个特别特别贴近实际的知识点啊,Jason他又叫做javascript object。Attention OK,这样是一种一个轻量级的数据交换格式啊,它的设计意图是干嘛的?他的设计意图是,呃,把所有事情呢,都是用设计的字符串来表示啊,设计的字符串来表示。用字串来表示,那这样呢,既方便我们在web,就是网络的网络上面去传播啊,传递啊,也方便我们进行阅读嘛,是不是。呃,相比一些bary的协议,Jason在当今互联网当中呢,是非常广泛的,也就是每一个用Python的程序员都应该要熟练掌握的一个知识点吧,我觉得那设想一个情景啊,就是说如果你要像交易场所,像交易场所。
04:14
啊,像交易场所啊,去购买一定数额的股票啊,那么你需要干嘛,你需要提交股票代码,买入方向就买入买出啊,订单的类型啊,市价限价啊,价格类型,如果是限价的话会怎样,然后数量啊等等这些东西啊,啊这些系列的参数,这类这些数据,那这些数据有什么特点呢?有些是字符串,是不是代码,是字符,字串还是数字都可以啊,还有可能是数字,也有可能是字不错,那它还有可能是什么整数,还有可能是价格嘛,是不是这样,这个浮点数是不是小数。还有整数,反正还有整数是不是,那我这张图片是不全的啊,那这样的话呢。
05:01
我们讲的各种数据类型,甚至还有布尔型变量,全部混在一起的话,你觉得方便吗?各种数据类型你又不是Excel啊,Exl还要区分,就是说还要区分,呃,你的这个什么东西啊,还要区分你的这个。啊啊,每一列每一列啊,就是说它可以设置它的一个属性,属性链接嘛,那我们的这个啊,在一般的数据交互当中呢,啊前蓝混在一起是不太好的,那像Python它也是混,不能混在一起吧,你不能说一个字符串和一个数字相加吧,因为它是一个强类型语言,它会报错的,好吧,OK,这是我我想跟你们说的啊,就是说我们为了方便解包,那应该怎么办呢?啊其实呢,我们要讲的Jason呢,正要解决这样的场景,你可以把它简单的理解为两两种的黑箱哈。啊,两种黑箱,第一种呢,就是输入这些杂七杂八的信息啊,比如啊Python的字典啊,输出一个字符串。
06:05
啊,就把字典转换成字符串,那么我们不是简单的用str来全转换好吧。然后呢,第二种呢,就是说输入这个字符串,可以输出包含原始信息的Python点。啊,就把字符串,然后它进行解解析,解析成Python字典,方便我们交互啊,直接用字典的方式去提取是不是很方便啊。然后呢,我们就来讲,就是说我们要去怎么去操作它,但是在在操作之前,我要跟你讲两个API啊,Jason肯定用Jason,那肯定是的啊,Python的字典啊,我们去转换成Jason的str,我们要用的是Jason dumps,然后Python字典传入进来啊,就是当参数传进来,然后呢,我们来看另一个呢,就是loads啊,Loads Jason loads,那Jason s tr,然后它就变成了Python的一些数据类型字典,好吧。那这类函数呢?他接受的是Python的基本数据类型,然后将其序列化为s ting stream。
07:03
那load这个函数呢?它接受一个合法的字符串,然后将其反序列化为一个Python的基本数据类型,好吧?那接下来我们来看一个实际的代码,那portization,然后呢,我们这里有个参数的字点,那我们这地方字典的话呢,我们可以用dump啊,把它变成一个字串,其实我这刚提示了一个up after Jason啊啊,我们来看它最后的一个就是类型是什么,你看我们可以看到我们format type。这个str是不是好form type,这str的话呢,我们把它填入到这个画括号里面,它是什么类型啊,我们可以看到啊,它的类型是str了,好这个参数呢,我们要把它放进去啊,把它放进去然后是什么。放进去这里面好吧,Str是它啊,它是它,然后我们又去看load,就是说把它又变成什么数据型,又把它变成一个什么,再减测它的类型啊,那它的类型是什么,这指示字点好吧。
08:02
那对于这样的代码,我觉得你们可以直接去敲一下,如果你们要复制的话呢,你们可以直接去我的公众号这篇文章下面直接复制也行,好吧,那我还是推荐你们去打一遍好吧。啊,在这里可以运行,我们看一下啊。OK,结果是一样的,好吧,那接下来我们还要看一个问题,就是说,呃。如果。就是说,如果。啊,这地方我还是要补充一个东西啊,就是说呃,你上面这个地方是不是很简单啊,肯定很简单吧,那不过还是那句话啊,啊,你一定要一定要记住加上错误处理,不然的话,你哪怕给一个Jason Rose发送一个非法字符的话,那这样的话呢,而你没有catch到那程序就崩溃,好吧,那举个特别简单的例子啊,就是你在用户注册的时候,你传入的非法自符创可以理解为你不符合设定的规则或程序无法识别,而类似于表情之类的,那这个时候呢,你的程序就直接崩溃运行是不是?那显然是不行的,我们的网站肯定是不能出现这样的问题。
09:05
待机了就完蛋了,是不是会损失很多钱的?老板也会找你喝茶好吧啊。那你还要写检讨之类的,那到这一步呢?我们有可能会想,如果我要输出啊字符串到文件当中,或者从文件当中读取Jason又该怎么办?呃,当然你可以可以用到之前跟你们说的一个with open啊,这些里面有right right啊,这样直接读取,读取成字符串,然后再进行啊,This编码也可以,但是不是有没有觉得多余啊,有点麻烦,那我就来讲,就是说Jason,它里面还有一个API,就是从内存到硬盘里面,从用Jason dump Python d,然后FP就是一个你的文件指针啊,存在哪里存在哪个文件里面。然后导入进来了,就很简单啊,JA load FP就好了。那这样我有一个代码啊,非常简单,我们可以来看一下啊,就是说你在开发一个第三方应用程序的时候,你可以通过Jason的啊将个人用户配置文件输出册文件当中,然后方便下一次呢再读取啊,那这也是我们普遍普遍呃在运用啊成熟的做法啊,比较比较成熟的一个做法,然后接下来我们来看,就是说呃,这个代码portson一样啊,然后这样一个字典。
10:25
然后with open保存成啊W写入码,然后。Fault OK。啊,因为今天没有吃早饭啊,起的比较早,然后呢,啊好像状态不太对,所以讲的语速比较快,然后呢,就是呃。反正就是应该是算是公众号第一次改革的一个啊,录屏方式啊,那我们之后会慢慢的录更录的更好,讲的更细好吧。恩,然后呢,我们来看一下,就是说我们直接就Jason。
11:02
我们都可以把这个是吧。第一个位置啊,字点我们要写在哪里呢?For描吧。那第二个就是读取吧,R读取,然后呢,我们读取的话,用个load导进来就自动解码了,好吧。然后序列化返修啊,那这样我们可以看到啊,我们可以看到format type这读取进来的参数的类型是什么呢?它的类型是D了啊,这样非常好,我们可以直接直接进行一个导入地方,直接进行字点操作,是不是还可以用get,是不是这样就非常方便了啊。测试的,那Jason是唯一的选择吗?啊,显然不是啊,它是一个轻量级的应用方应用啊,最方便的之一,那据我所知啊,在Google里面有一个类似的工具叫啊,Port port buffer啊,我也不知道单词不太会念啊,抱歉,当然Google已经完全开源这的工具了啊,你可以去了解这个方法,相比于Jason的话,它的优点是什么?它的优点是它呃生成了一个优化后的二进制文件啊,优化后的二进制文件啊。
12:07
然后呢,因为因此呢,它性能会更好,但与此同时呢,生成二进式序列是不能被我们直接阅读了嘛,它在里面等很多性能有要求的系统中呢,用的比较反而用的比较多,好吧,但家显然你们还没用到啊,人工智能好吧,那说完这次之后,我们就来说说。Pixel,好吧,Pickle pickle,那接下来呢,我们要讲讲序列号和反序列话,所以我要分享这两个定义。Pick这个模块呢,出现了一个Python对象的一个二进制的序列化和反序列化,我们来看一下内存到硬盘里面就是序列化,硬盘到内存里面就反序列化,好吧。那就是我们的定义,OK,那我们再来看,就是说他们俩的对比吧,它的对比是什么?是不是?那那我还要多说一句啊呃,在Python程序运行的一些字符串或列表,字典或甚至一些自定义函数的对象啊,需要持久化存储啊,记存储在字盘磁盘当中呢,防止啊,防止运行在内存当中啊,有可能会因为断电啊等数据丢失啊,那么pick模块就是实现了用用场,它可以将一种一些对象转换成一种可以传输的格式啊,那Python的pickle模块呢,实现了一个基本的序列化,阿法序列化。
13:26
二。讲的操作,那我们可以看一下他们的对比啊。啊是一个文本啊,序列化格式啊,它它输出的文本在尽管在大多数时候它会接着F-八编码,呃,然后呢,A pick呢,就是一个二进制的一个序列化格式,Jason就是说我们可以直接打开可以读的a pick它不行,它是BASE64的啊类类类比啊不是说它是啊类比类BASE64的一个不可读性,然后Jason呢,是互相操作的,在Python当中的系统广泛应用啊pickle和Python是pickle是Python专用的,所以有可能你的这文件格式有可能只能在Python里面用,而不能在。
14:10
呃,别的地方用啊。那我们可以看到import,然后我们这里字典,然后呢,我们去保存,我们可以直接保存成piic PI k啊,WB写入二进制SF,然后它其实你看domp啊路径,那你会发现啊,其实他们来的和和啊pick的一个API是很像的,好吧,那有加了S表,该你在运行当中的操作,没有加S你就要进行文件操作了,好吧。那这里就不讲了,这一下文章里面有讲,你们直接可以阅读就可以找到了,好吧,然后呢,我们来看就是port pick啊,这是D啊,这是D。这样一是就是说进行命行,它它就是输出出来一个二进制。Okay。那这就是我们今天要讲的一个什么。
15:01
一个是PYTHON3的一个和pick的一个讲解。打牌啦。
我来说两句