返回顶部
首页 > 资讯 > 后端开发 > Python >学习廖雪峰Python3教程的pytho
  • 892
分享到

学习廖雪峰Python3教程的pytho

教程廖雪峰pytho 2023-01-31 07:01:25 892人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

    我们把变量从内存中变成可存储或传输的过程称之为序列化,在python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。    序列化之后,就可以把

    我们把变量从内存中变成可存储或传输的过程称之为序列化,在python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。

    序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。

    序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。

    Python提供了pickle模块来实现序列化。

    import pickle

    d = {"name":"Alice","age":22,"score":88}

    pickle.dumps(d)

    pickle.dumps()方法可以把任意的对象序列化成一个bytes,然后这个bytes就可以写入文件,也可以用pickle.dump()方法直接把对象序列化后写入一个文件对象

    with open("dump.txt","wb") as f:

          pickle.dump(d,f)

    同样我们把对象从磁盘读到内存时,可以先把内容读到一个bytes,然后用pickle.loads()方法反序列化出对象,也可以用pickle.load()方法从一个文件对象中直接反序列化出对象。

    with open("dump.txt","rb")as f:

          d = pickle.load(f)

          print(d)

    Pickle的问题和所有其他编程语言特有的序列化问题一样,就是它只能用于Python,并且可能不同版本的Python彼此都不兼容,因此,只能用Pickle保存那些不重要的数据,不能成功地反序列化也没关系。

=====================================正文=================================================

    如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为jsON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在WEB页面中读取,非常方便。

    Python内置的json模块提供了非常完善的Python对象到JSON格式的转换。

    import json

    d = {"name":"Bob","age":22,"score":88}

    json.dumps(d)

    json.dumps()方法返回了str,就是标准的JSON。类似的,dump()方法可以直接把JSON写入一个文件对象

    with open("json.txt","w",encoding="utf-8") as f:

          json.dump(d,f)

    同样要把JSON反序列化为Python对象,用loads或对应的load方法,前者把JSON的字符串反序列化,后者从文件对象中读取字符串并反序列化

    with open("json.txt","r")as f:

          d = json.load(f)

         print(d)

    由于JSON标准规定JSON编码是UTF-8,所以我们总是能正确地在Python的str与JSON的字符串之间转换。

==========================JSON进阶=============================

Python的dict对象可以直接序列化为JSON的{},不过很多时候,我们更喜欢用class表示对象,比如定义一个Student类,然后序列化

    class Student(object):

          def __init__(self,name,age,score):

                self.name = name

                self.age = age

                self.score = score

    s = Student("Bob",22,88)

    print(json.dumps(s))

    运行代码将会得到一个TypeError,原因是不是一个可序列化为JSON的对象

    我们仔细看看dumps方法的参数列表,可以发现,除了第一个必须的obj参数外,dumps方法还提供了一大堆的可选参数,其中default参数就是把任意一个对象变为可序列化为JSON的对象,只需要为Student类专门写一个转化函数,再把函数传进去即可。

    def student2dict(std):

          return {

                "name":std.name,

                "age":std.age,

                "score":std.score


    这样,Student实例首先被student2dict函数转化为dict,然后再被序列化为JSON

    print(json.dumps(s,default=student2dict))

    下次遇到别的类的实例同样也无法序列化为JSON,这个时候我们可以用class实例的__dict__属性把任意的class实例变为dict:

    print(json.dumps(s,default=lambda obj: obj.__dict__))

    因为通常class实例都有一个都有一个__dict__属性,它就是一个dict,用来储存实例变量,也有少数例外,比如定义了__slots__的class。

    如果我们要把JSON反序列化为一个Student对象实例,只要用json.loads()方法即可:

    json_str = '{"age": 20, "score": 88, "name": "Bob"}'

    print(json.loads(json_str))



    

    


--结束END--

本文标题: 学习廖雪峰Python3教程的pytho

本文链接: https://lsjlt.com/news/192147.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 学习廖雪峰Python3教程的pytho
        我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。    序列化之后,就可以把...
    99+
    2023-01-31
    教程 廖雪峰 pytho
  • 据廖雪峰python3教程----pyt
    循环要计算1+2+3,我们可以直接>>> 1+2+3 6要计算1+2+3+....+10,勉强也能写出来。但是,要计算1+2+3......+1000,直接写就有点难了。为了让据算计成千上万次的重复运算,我们就需要用到循环...
    99+
    2023-01-31
    教程 廖雪峰 pyt
  • 学习廖雪峰Python3教程之面向对象小
        面向对象编程(OOP)是程序设计的思想,OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。在Python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)的概...
    99+
    2023-01-31
    面向对象 教程 廖雪峰
  • Python爬虫如何让把廖雪峰的教程转换成PDF电子书
    今天就跟大家聊聊有关Python爬虫如何让把廖雪峰的教程转换成PDF电子书,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。写爬虫似乎没有比用 Python 更合适了,Python 社区...
    99+
    2023-06-17
  • 机器学习教程,Python3天快速入门机
    人工智能,现今已经是好多程序员都想学习的技能,毕竟人工智能这么火,对不对?你是否也想学习呢?今天就分享一个机器学习教程,Python3天快速入门机器学习! 该课程是机器学习的入门课程,主要介绍一些经典的传统机器学习算法,如分类算法:KNN算...
    99+
    2023-01-31
    入门 机器 快速
  • Python学习教程_Python学习路线:Python3里你不知道的秘密特性
    Python学习教程_Python学习路线:Python3里你不知道的秘密特性概述到2020年,Python2的官方维护期就要结束了,越来越多的Python项目从Python2切换到了Python3。其实在实际工作中,很多伙伴都还是在用Py...
    99+
    2023-06-02
  • MyBatis学习教程之开发Dao的方法教程
    简介使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper接口开发方法。下面话不多说,来一起看看详细的介绍:主要概念介绍:MyBatis中进行Dao开发时候有几个重要的类,它们是SqlSessionFactoryB...
    99+
    2023-05-31
    mybatis dao开发
  • Swift中的协议(protocol)学习教程
    一、引言 协议约定了一些属性与方法,其作用类似Java中的抽象类,Swift中类型通过遵守协议来实现一些约定的属性和方法。Swift中的协议使用protocol关键字来声明。Swift中的协议还有一个十分有...
    99+
    2022-06-04
    协议 教程 Swift
  • Pycharm学习教程(7)虚拟机VM的配置教程
    设想这样一种情况,你在一个平台上操作你的工程,但你希望在另外一个平台上完善并运行它,这就是为什么Pycharm做了很多工作来支持远程调试。   在虚拟机上运行一个工程主要包含以下步骤:   (1)定义一个虚...
    99+
    2022-06-04
    教程 虚拟机 Pycharm
  • Python中的Descriptor描述符学习教程
    Descriptor是什么?简而言之,Descriptor是用来定制访问类或实例的成员的一种协议。额。。好吧,一句话是说不清楚的。下面先介绍一下Python中成员变量的定义和使用。 我们知道,在Python...
    99+
    2022-06-04
    教程 Python Descriptor
  • Python学习教程(Python学习视频_Python学习路线):Day06 函数和模块的使用
    Python学习教程(Python学习视频_Python学习路线):函数和模块的使用在讲解本章节的内容之前,我们先来研究一道数学题,请说出下面的方程有多少组正整数解。事实上,上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案。想...
    99+
    2023-06-02
  • Redis中的动态字符串学习教程
    sds 的用途http://www.gimoo.net/t/1512/ Sds 在 Redis 中的主要作用有以下两个: 实现字符串对象(StringObject);http://www.gimoo.net...
    99+
    2022-06-04
    字符串 教程 动态
  • Python中shutil模块的学习笔记教程
    介绍 shutil 名字来源于 shell utilities,有学习或了解过Linux的人应该都对 shell 不陌生,可以借此来记忆模块的名称。该模块拥有许多文件(夹)操作的功能,包括复制、移动、重命名...
    99+
    2022-06-04
    学习笔记 模块 教程
  • Android的HTTP类库Volley入门学习教程
    1. 什么是Volley 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据。Android系统中...
    99+
    2022-06-06
    HTTP 学习 volley 教程 Android
  • python学习之plot函数的使用教程
    在python环境中,若要绘制图形,一定离不开plot函数 那么,如何使用呢? 首先,你需要导入plot函数: import matplotlib.pyplot as plt ...
    99+
    2024-04-02
  • Python爬虫学习之requests的使用教程
    目录requests库简介requests库安装1、pip命令安装2、下载代码进行安装requests库的使用发送请求get请求抓取二进制数据post请求POST请求的文件上传利用r...
    99+
    2024-04-02
  • Go语言结构体Gorange的学习教程
    目录正文Go Range正文 在前一篇博客我们学习了 Go 数组,其要求所有元素为同一数据类型,如果希望存储不同类型的数据,就要用到结构体相关知识。 结构体的定义:存储相同或不同类型...
    99+
    2024-04-02
  • Python100天学习教程:中间件的应用
    实现登录验证我们继续来完善投票应用。在上一个章节中,我们在用户登录成功后通过session保留了用户信息,接下来我们可以应用做一些调整,要求在为老师投票时必须要先登录,登录过的用户可以投票,否则就将用户引导到登录页面,为此我们可以这样修改视...
    99+
    2023-06-02
  • Python编程中的for循环语句学习教程
    Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。 语法: for循环的语法格式如下: for iterating_var in sequence: statements(...
    99+
    2022-06-04
    语句 教程 Python
  • Python学习教程(附Python学习路线图):Pandas中第二好用的函数
    本次的Python学习教程是关于Python数据分析实战基础相关内容,本文主要讲的是Pandas中第二好用的函数——谦虚的apply。为什么说第二好用呢?那第一呢?秉承这谦虚使人进步,骄傲使人落后的品质,apply选择做一个谦虚又优雅的函数...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作