| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 2021-10-26 -> 正文阅读 |
|
[Python知识库]2021-10-26 |
前言总结 对于新手来说: 本书: 提示: 因为:不成熟的抽象和过早的优化一样,都会坏事。 第一部分 Python的数据模型 data model 第一部分 序幕 第1章 Python数据模型 Python最好的品质之一是一致性: 当你使用Python工作一会儿后,就会开始理解Python语言,并能正确猜测出对你来说全新的语言特征。 面向对象程序员会对 len(collection)而不是collection.len( )的写法感到不适 这种设计方法是python风格代码的关键: 这种设计思想完全体现在Python的数据模型上 数据模型其实是对Python框架的描述,它规范了这门语言自身构建模块的接口 这些模块包括但不限于: 序列、迭代器、函数、类和上下文管理器。 在数据模型框架之下写程序,会需要大量实现框架本身需要调用的方法 这些特殊方法名能让你自己的对象实现和支持以下的语言构架,并与之交互: 迭代 1.0数据模型基础 '对象’是python中对数据的抽象,python程序中的所有数据都是由对象或对象之间的关系来表示
1.1 一摞Python风格的纸牌 通过实现__getitem__和__len__这两个特殊方法展示其强大
现在已经可以体会到通过实现特殊方法来利用Python数据模型的两个好处 作为你的类的用户,他们不必去记住标准操作的各式名称 可以更加方便地利用Python的标准库,比如random.choice函数,从而不用重复造轮子 特殊方法的存在是为了被Python解释器调用的,你自己并不需要调用它们 len(deck)=deck.len() 通过内置的函数(例如len、iter、str,等等) 1.2.1 模拟数值类型 实现一个向量数据类型,使用下面这些特殊方法 repr、abs、add__和__mul
1.2.2 字符串表示形式
1.2.3 算术运算符 通过__add__和__mul__ 中缀运算符的基本原则就是不改变操作对象,而是产出一个新的值 1.3 特殊方法一览 ‘’’ ‘’’ 1.4为什么len不是普通方法?
背后的原因是CPython会直接从一个C结构体里读取对象的长度,完全不会调用任何方法。 换句话说,len之所以不是一个普通方法,是为了让Python自带的数据结构可以走后门, 但是多亏了它是特殊方法,我们也可以把len用于自定义数据类型。 也印证了“Python之禅”中的另外一句话:“不能让特例特殊到开始破坏既定规则
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 23:37:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |