python中包和模块的区别,Python中的实参有哪些类型-如何使用-

  python中包和模块的区别,Python中的实参有哪些类型?如何使用?

  第一条。泡菜是什么?1.泡菜2的优缺点。pickle和JSON 3的区别。pickle 2的应用总结。pickle的使用技巧1.pickle界面2。泡菜示例的结论

  1.泡菜是什么?

  泡菜名词在英语中的意思是泡菜,动词是腌渍。我觉得酸洗完的东西放在文件夹里,用的时候读一读,洗一洗对使用的理解就可以了。

  Python的pickle模块是basic数据序列化和反序列化

  对象的序列化可以将对象保存到磁盘,然后根据需要导入它们。您可以对任何对象执行序列化操作。

  pickling是将Python对象层次转换成字节流的过程。

  unpickling是将二进制文件或类字节对象中的字节流返回到对象层次结构的反向操作。

  1.1 .泡菜的优缺点1。优势:

  Pickle提供了一个简单的持久化函数。将对象作为文件添加到存放在磁盘上

  通过pickle模块的序列化操作,可以将程序正在执行的对象的信息保存到一个文件中。永久存储

  在python中,所有几乎所有的数据类型(列表、字典、集合、类等。)可以用pickle连载。

  没有外部标准强加的限制,比如JSON或者XDR(不能代表指针共享。

  默认情况下,pickle数据格式由相对紧凑的二进制表示。如果需要最佳大小属性,可以有效地压缩数据。

  pickle是表示极其庞大的Python类型的复杂情况可以通过实现一个特定的对象API来解决。)。

  通过反序列化pickle模块,可以从文件中创建程序上次保存的对象。

  2.缺点:

  Pickle模块只适用于python,必须在仅限于传输的两端都是python的情况尽可能匹配两端版本。

  Pickled Python对象不能在非Python程序中重建。

  泡菜序列化数据,可读性差,一般人都认不出来。

  2.2.pickle和JSON的区别。1.JSON是一种文本序列化格式,大部分时间用utf-8编码,但是输出unicode文本。Pickle是一种二进制序列化格式。

  2.JSON可以理解,pickle不行。

  3.JSON具有互操作性,广泛应用于Python生态系统之外,而pickle是Python所固有的。

  默认情况下,JSON只表示Python嵌入式子集,不能表示自定义类

  和JSON模块细节。

  3.pickle的应用总结了本地序列化的情况,应用不多。一般来说,很多APP场景都是网络,数据序列化后通过网络转发到远程节点。只要远程服务器上的服务接收数据并对其进行反序列化,就可以使用该服务。

  但是,请注意,远端接受端在反序列化时需要相应的数据类型。否则,将会报告一个错误。特别是,自定义类必须远程存在。

  目前大多数项目都需要通过网络向其他节点传输数据,而不是独立的或者单服务器的。因此,需要大量的序列化和反序列化。

  但是,python程序也可以使用pickle来解决序列化和反序列化。

  Pickle不适合跨平台、跨语言、跨协议。需要XML/JSON/protocol buffer等常用协议。

  每个协议都有自己的负载,使用不同的场景。二元运算不一定适用于所有的场景

  然而,协议越基本,需要的二进制传输就越多。

  二。泡菜1的用法。pickle接口pickle包主要提供了两个函数,一个是把对象转换成字节流,也就是串行化,另一个是字节流。

  这些函数分为仅转换为字节流的分支和转换为字节流并保存在文件中的分支。

  所以pickle软件包主要有四个界面,如下图所示。

  基本界面:

  Pickle.dump(obj,file [,protocol])注意:

  Obj——序列化对象。将对象obj保存到文件中。

  File——File表示保存的反串行化,file需要write()接口,file是()w)打开的文件或

  StringIO对象,或者任何可以实现write()接口的对象。

  Protocol——序列化模式,默认为0(ASCII协议,表示以文本的形式进行序列化)。

  protocol的值也可以是1和2(1和2表示序列化的以二进制的形式。其中,1是老式的二进制协议;2是新的二进制协议)。

  1.转储(对象,文件对象):串行化并保存到文件。转储的文件对象要求是可写的。

  2.加载(文件对象):从文件读数据并恢复出对象。load函数从file对象中读取一个对象,返回值是该对象。

  A=range (10) a [0,1,2,3,4,5,6,7,8,9] FD=open (tmp,受伤的大象, wb) fdopen file tmp,受伤的大象,mode WB at0x 00000000277 FD)FD . close()fd2=open( tmp,受伤的大象, rb) a2=pickle.load (fd2) a2 [0,1,2,3,4,5,6,7,8,9] 3,dumps

  4.loads(字节流):从字节流中恢复对象。输入应该是dumps()的返回值。

  注意,不要随意构造字节流,因为仅串行化

  a=range(10) a[0,1,2,3,4,5,6,7,8,9]s=pickle . dumps(a)s (lp0 \ nI0 \ nai 1 \ nai 2 \ nai 3 \ nai 4 \ nai 5 \ nai 6 \ nai 7 \ nai 8 \ nai 9 \ Na。type str b=pickle . loads b[0,1,2,3,4,5,6,7,8,9] 2。pickle实例用这个对象,你可以打开文件作为读:

  X=pickle.load(file)注意:从文件中读取一个字符串,并将其重构为原始的python对象。

  序列化时,并不是所有的字节流都能被解析出来,而不是内存地址。

  只是序列化了整个序列对象:具有read()和readline()接口的类文件对象。

  示例:

  一个字典A={name: Tom , age: 18}用pickle.dump存储在本地文件中,存储数据的结构是file

  而普通file.write写010到59000的文件。读取时,pickle.load返回字典,file.read返回字符串

  代码如下:

  Import pickle={name: Tom , age: 18} with open (text.txt , WB) as file: pickle.dump (a,file) with open (text.txt , rb) as file2: b=pickle。

  得到的B的类型是dictionary,B和A是等价的。

  也就是说,pickle可以将字典、列表等结构化数据保存到本地文件,读取返回的字典字典、列表等结构化数据。

  字符串

  让我们再看一下还是,看看反序列化的输出是否也是一个字典:

  Zip()可以将两个iterable对象中对应的元素一一打包成而file.write、file.read存取的对象是字符串。,然后返回这些元组的列表。

  Dict()创建一个字典。可以传入元组列表来创建一个字典,也可以通过zip然后使用zip创建字典得到元组列表。

  from pickle import * d=dict(zip( MySQL ,range(5))s=dumps(d)# serialize print(s)# output print(loads(s))# deserialize并输出运行结果如下,也是字典:

  结论就是Python的pickle模块的所有细节!希望对大家有帮助。如果你有任何问题,请给我留言,我会尽快回复你。非常感谢你对CSDN的支持!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: