首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 数据模型

最近阅读一本专门讲述 Python 语言特性书(本文部分内容来自 Fluent Python 这本书),书中提到了数据模型这个词,数据模型是不是我们经常说数据类型?...如果你带着其他编程语言经历来使用 Python ,你可能为 len(object) 而不是object.len() 而感到好奇, Java 语言中常常使用 object.len() 这种方法取得对象长度...迭代 集合类 属性访问 运算符重载 函数和方法调用 对象创建和销毁 字符串表示形式和格式化 上下文管理器 二、实现自己序列类 数据模型提供了使用 Python 语言特性来构建对象 API ,那么我们尝试着实现自己序列类...这种处理方式保持内置类型效率和保证语言一致性之间找到了一个平衡点,也印证了“ Python 之 ”另外一句话:“不能让特例特殊到开始破坏既定规则。”...Python 特殊方法还有很多,这里主要讲述还是数据模型,希望大家可以理解 Python 语言设计哲学,以及思考如何写出更 Pythonic 代码

87520

Python3笔试实际操作基础1.md

如果需要在一个字符串嵌入一个双引号,正确做法是? 你有两个选择:可以利用反斜杠(\)对双引号转义:\”,或者用单引号引起这个字符串。例如:’ I l”o”ve fishc.com ‘。... Python 或 IDLE ,输入 dir(__builtins__) 可以看到 Python 提供内置方法列表一共73个,当前版本 Python 3.7.2 (tags/v3.7.2:9a3ffc0492...缩进是 Python 灵魂,缩进严格要求使得 Python 代码显得非常精简并且有层次; 如果在正确位置输入冒号“:”,IDLE 会自动将下一行缩进!...可以将两个字符串“相加”在一起,如:’I’ + ‘Love’ + ‘FishC’ 会得到 ‘ILoveFishC’, Python 里,这种做法叫做拼接字符串。 以下哪个变量命名不正确?...为什么? (A) MM_520 (B) _MM520_ (C) 520_MM (D) _520_MM (C)选项不正确,因为 Python 变量名不能以数字开头。

62810
您找到你想要的搜索结果了吗?
是的
没有找到

1.Python3扩展知识之笔试操作总结(一)

如果需要在一个字符串嵌入一个双引号,正确做法是? 你有两个选择:可以利用反斜杠(\)对双引号转义:\”,或者用单引号引起这个字符串。例如:’ I l”o”ve fishc.com ‘。... Python 或 IDLE ,输入 dir(__builtins__) 可以看到 Python 提供内置方法列表一共73个,当前版本 Python 3.7.2 (tags/v3.7.2:9a3ffc0492...缩进是 Python 灵魂,缩进严格要求使得 Python 代码显得非常精简并且有层次; 如果在正确位置输入冒号“:”,IDLE 会自动将下一行缩进!...可以将两个字符串“相加”在一起,如:’I’ + ‘Love’ + ‘FishC’ 会得到 ‘ILoveFishC’, Python 里,这种做法叫做拼接字符串。 以下哪个变量命名不正确?...为什么? (A) MM_520 (B) _MM520_ (C) 520_MM (D) _520_MM (C)选项不正确,因为 Python 变量名不能以数字开头。

79910

len(x) 击败 x.len(),从内置函数看 Python 设计思想

举个例子,求字符串 x 长度Python 写法是 len(x) ,而且这种写法对列表、元组和字典等对象也同样适用,只需要传入对应参数即可。len() 函数是共用。...但是,有些语言并不是这样,例如在 Java 字符串类有一个求长度方法,其它类也有自己长度方法,它们无法共用。每次使用时,通过类或实例来调用。...我们可以简单地把公式 x*(a + b) 重写成 x*a + x*b ,但同样事,以原生面向对象方式实现,就比较笨拙。 当读到 len(x) 时,就 知道 这是求某对象长度。...想起《超强汇总:学习Python列表,只需这篇文章就够了》这篇文章,曾引述过 Guido 对“为什么索引从 0 开始 ”解释。其最重要原因,也正是 0-based 索引最优雅易懂。...所以,想说,len(x) 击败 x.len(),这还体现了 Python 对世界本质洞察 。 求某个对象长度,这种操作独立于对象之外而存在,并不是该对象内部所有的一种属性或功能。

50720

27 个问题,告诉你Python为什么这么设计

它列举了 27 个设计及历史问题,其中有些问题曾经分享过,例如为什么使用显式 self、浮点数问题、len(x) 而非 x.len() 等等。大部分回答很简略精要,适合在空闲之余翻阅。...目录 为什么Python使用缩进来分组语句? 为什么简单算术运算得到奇怪结果? 为什么浮点计算不准确? 为什么Python字符串是不可变为什么方法定义和调用显式使用“self”?...为什么不能在表达式赋值? 为什么Python对某些功能(例如list.index())使用方法来实现,而其他功能(例如len(List))使用函数实现?...(b) 当读到写有len(X)代码时,就知道它要求是某件东西长度。这告诉我们两件事:结果是一个整数,参数是某种容器。...如果在绑定到字符串名称上允许使用这些方法,则没有逻辑上理由使其文字上不可用。 第二个异议通常是这样:“实际上是告诉序列使用字符串常量将其成员连接在一起”。遗憾是并非如此。

6.6K11

python 之 函数

大家好,又见面了,是你们朋友全栈君。 什么是函数 引言 现在有这么个情况:假设我们pythonlen方法不可以使用了,而恰好你又要计算一个字符串长度你该怎么办呢?...但是如果又要计算另外一个字符串长度:‘welcome to python’, 于是你再次使用循环,代码就变成了这样: s1 = "hello world" length = 0 for i in s1...首先,之前只要我们执行len方法就可以直接拿到一个字符串长度了,现在为了实现相同功能我们把相同代码写了好多遍 —— 代码冗余 其次,之前我们只写两句话读起来也很简单,一看就知道这两句代码计算长度...,但是刚刚代码却不那么容易读懂 —— 可读性差 所以,我们就想能不能用一段代码,来实现相同功能,比如,咱们也写一个len()叫做my_len()可以代替len()方法,既解决了代码冗余,有让其可读性好...函数是具有某一特定功能代码集合体,当需要实现这一特定功能时候直接拿来用即可 函数能提高应用模块性,和代码重复利用率。你已经知道Python提供了许多内建函数,比如print(),len()等。

34660

len(x) 击败 x.len(),从内置函数看 Python 设计思想

本文以python对象方法还是通用属性函数调用方式选择为例阐明了代码设计艺术中小而美的精髓,欢迎品评。 ---- 内置函数是 Python 一大特色,用极简语法实现很多常用操作。...举个例子,求字符串 x 长度Python 写法是 len(x) ,而且这种写法对列表、元组和字典等对象也同样适用,只需要传入对应参数即可。len() 函数是共用。...但是,有些语言并不是这样,例如在 Java 字符串类有一个求长度方法,其它类也有自己长度方法,它们无法共用。每次使用时,通过类或实例来调用。...我们可以简单地把公式 x*(a + b) 重写成 x*a + x*b ,但同样事,以原生面向对象方式实现,就比较笨拙。 当读到 len(x) 时,就 知道 这是求某对象长度。...想起《超强汇总:学习Python列表,只需这篇文章就够了》这篇文章,曾引述过 Guido 对“为什么索引从 0 开始 ”解释。其最重要原因,也正是 0-based 索引最优雅易懂。

49430

Python——搞定烦人字符串编码

注意:以下讨论为Python2.x版本 在学习Python之前,就听说过Python版本圣战,最可怕是有的写Py3程序员觉得Py2是另一种语言....所以刚开始学习时候,索性把Python3...之后写爬虫过程还是选择使用了Python2.x来写,原因嘛,emmmmm,可能就是因为一些好用库或者框架示例代码也是用旧一点版本,所以为了效率,先用旧版本上手得了。...在学习Python2之前,还特意去比较了2和3区别,其中着重被提及就是字符串编码问题,于是乎在看旧版本文档时候很仔细去阅读了Python2字符串部分。...然而结局证明,仔细阅读之后还是too young too simple,在读取文件,处理参数,以及处理http链接过程,经常一运行,发生两个对于Python开发者熟悉不能再熟悉报错了。...所以我们处理字符串时候,要搞清楚我们处理str还是unicode,使用正确处理方法来处理。

75330

Python 告诉你什么是计时攻击

因为正确密码必然需要每一位都参与比较,这样,攻击者就统计不同长度输入所消耗时间,消耗时间最长,就是正确密码长度。...比如说穷举 1-30 长度密码,花费时间最长那个一定是正确密码长度,因此可以编写下面的代码来破解密码长度: import string import timeit import numpy as...,k 表示密码长度,本案例也就是 O(26*25), 电脑上 40 秒就破解了,是不是很神奇?...写代码还真是一点点都不能松懈啊。 其实,安全永远是高于性能,一个不安全系统,性能恐怕也没人敢用。 那字符串比较最安全办法是什么呢?...如果你不想被爆破出密码长度,可以将判断长度逻辑删除,然后补全字符串长度,让两个字符串长度始终相等即可。

82730

27 个问题,告诉你Python为什么这么设计?

它列举了 27 个设计及历史问题,其中有些问题曾经分享过,例如为什么使用显式 self、浮点数问题、len(x) 而非 x.len() 等等。大部分回答很简略精要,适合在空闲之余翻阅。...(b) 当读到写有len(X)代码时,就知道它要求是某件东西长度。这告诉我们两件事:结果是一个整数,参数是某种容器。...如果在绑定到字符串名称上允许使用这些方法,则没有逻辑上理由使其文字上不可用。 第二个异议通常是这样:“实际上是告诉序列使用字符串常量将其成员连接在一起”。遗憾是并非如此。...对于 ListWrapper ,只要包装器对象字典,包装列表就不能更改以避免异常。除非你准备好认真考虑需求以及不正确地满足这些需求后果,否则不要这样做。请留意。...例如, append() 方法将向一些内部列表末尾添加新元素;接口规范不能测试您 append() 实现是否能够正确执行此操作,但是测试套件检查这个属性是很简单

3.1K20

len(x) 击败 x.len(),从内置函数看 Python 设计思想

举个例子,求字符串 x 长度Python 写法是 len(x) ,而且这种写法对列表、元组和字典等对象也同样适用,只需要传入对应参数即可。len() 函数是共用。...但是,有些语言并不是这样,例如在 Java 字符串类有一个求长度方法,其它类也有自己长度方法,它们无法共用。每次使用时,通过类或实例来调用。...同样是求字符串长度Python 写法: saying = "Hello world!"...我们可以简单地把公式 x*(a + b) 重写成 x*a + x*b ,但同样事,以原生面向对象方式实现,就比较笨拙。 当读到 len(x) 时,就 知道 这是求某对象长度。...想起《超强汇总:学习Python列表,只需这篇文章就够了》这篇文章,曾引述过 Guido 对“为什么索引从 0 开始 ”解释。其最重要原因,也正是 0-based 索引最优雅易懂。

66430

len(x) 击败 x.len(),从内置函数看 Python 设计思想

举个例子,求字符串 x 长度Python 写法是 len(x) ,而且这种写法对列表、元组和字典等对象也同样适用,只需要传入对应参数即可。len() 函数是共用。...但是,有些语言并不是这样,例如在 Java 字符串类有一个求长度方法,其它类也有自己长度方法,它们无法共用。每次使用时,通过类或实例来调用。...同样是求字符串长度Python 写法: saying = "Hello world!"...我们可以简单地把公式 x*(a + b) 重写成 x*a + x*b ,但同样事,以原生面向对象方式实现,就比较笨拙。 当读到 len(x) 时,就 知道 这是求某对象长度。...想起《超强汇总:学习Python列表,只需这篇文章就够了》这篇文章,曾引述过 Guido 对“为什么索引从 0 开始 ”解释。其最重要原因,也正是 0-based 索引最优雅易懂。

56220

len(x) 击败 x.len(),从内置函数看 Python 设计思想

举个例子,求字符串 x 长度Python 写法是 len(x) ,而且这种写法对列表、元组和字典等对象也同样适用,只需要传入对应参数即可。len() 函数是共用。...但是,有些语言并不是这样,例如在 Java 字符串类有一个求长度方法,其它类也有自己长度方法,它们无法共用。每次使用时,通过类或实例来调用。...同样是求字符串长度Python 写法: saying = "Hello world!"...我们可以简单地把公式 x*(a + b) 重写成 x*a + x*b ,但同样事,以原生面向对象方式实现,就比较笨拙。 当读到 len(x) 时,就 知道 这是求某对象长度。...想起《超强汇总:学习Python列表,只需这篇文章就够了》这篇文章,曾引述过 Guido 对“为什么索引从 0 开始 ”解释。其最重要原因,也正是 0-based 索引最优雅易懂。

59120

len(x) 击败 x.len(),从内置函数看 Python 设计思想

举个例子,求字符串 x 长度Python 写法是 len(x) ,而且这种写法对列表、元组和字典等对象也同样适用,只需要传入对应参数即可。len() 函数是共用。...但是,有些语言并不是这样,例如在 Java 字符串类有一个求长度方法,其它类也有自己长度方法,它们无法共用。每次使用时,通过类或实例来调用。...同样是求字符串长度Python 写法: saying = "Hello world!"...我们可以简单地把公式 x*(a + b) 重写成 x*a + x*b ,但同样事,以原生面向对象方式实现,就比较笨拙。 当读到 len(x) 时,就 知道 这是求某对象长度。...想起《超强汇总:学习Python列表,只需这篇文章就够了》这篇文章,曾引述过 Guido 对“为什么索引从 0 开始 ”解释。其最重要原因,也正是 0-based 索引最优雅易懂。

81920

Python Print打印计时器功能

参考链接: Python | print()结束参数 1.倒计时  我们仔细看看print参数:print(value,sep=’ ‘,end=’\n’,file=sys.stdout,flush...=False)  这个value是我们要打印字符串,sep则是value之间间隔(我们可以print(“Hello”,“Python”)看到中间确实有一个空格间隔开了)  end是打印完成之后要打印事...,print默认结束时候打印一个\n,即换行(我们想要print不换行,只要把end参数换成’'即可)。 ...len得到字符串长度为什么要2呢?要知道,我们用字符串是中文,而1个中文字符 = 2个英文字符(占位),所以,如果字符串是英语,我们完全可以不2,但是中文字符就不同了。...(1)则是让程序暂停1秒  我们这样做就能每次print之后,\b帮我们把一行内字符都清光,这就是我们为什么要获得字符串长度原因啦,还有就是PythonIDLE无法识别\b字符,所以我们只能在控制台看到正确结果

1.9K20

干货 | 27 个问题,告诉你 Python 为什么如此设计?

” (b) 当读到写有 len(X)代码时,就知道它要求是某件东西长度。这告诉我们两件事:结果是一个整数,参数是某种容器。...如果在绑定到字符串名称上允许使用这些方法,则没有逻辑上理由使其文字上不可用。 第二个异议通常是这样:“实际上是告诉序列使用字符串常量将其成员连接在一起”。遗憾是并非如此。...Python lambda 表达式不能包含语句,因为 Python 语法框架不能处理嵌套在表达式内部语句。然而, Python ,这并不是一个严重问题。...对于 ListWrapper ,只要包装器对象字典,包装列表就不能更改以避免异常。除非你准备好认真考虑需求以及不正确地满足这些需求后果,否则不要这样做。请留意。 21....例如, append() 方法将向一些内部列表末尾添加新元素;接口规范不能测试您 append() 实现是否能够正确执行此操作,但是测试套件检查这个属性是很简单

2.6K20

Python官方二十七问,你知道个啥?

(b) 当读到写有 len(X)代码时,就知道它要求是某件东西长度。这告诉我们两件事:结果是一个整数,参数是某种容器。...如果在绑定到字符串名称上允许使用这些方法,则没有逻辑上理由使其文字上不可用。 第二个异议通常是这样:“实际上是告诉序列使用字符串常量将其成员连接在一起”。遗憾是并非如此。...Python lambda 表达式不能包含语句,因为 Python 语法框架不能处理嵌套在表达式内部语句。然而, Python ,这并不是一个严重问题。...对于 ListWrapper ,只要包装器对象字典,包装列表就不能更改以避免异常。除非你准备好认真考虑需求以及不正确地满足这些需求后果,否则不要这样做。请留意。 21....例如, append() 方法将向一些内部列表末尾添加新元素;接口规范不能测试您 append() 实现是否能够正确执行此操作,但是测试套件检查这个属性是很简单

2.5K20

干货 | 27 个问题,告诉你 Python 为什么如此设计?

” (b) 当读到写有 len(X)代码时,就知道它要求是某件东西长度。这告诉我们两件事:结果是一个整数,参数是某种容器。...如果在绑定到字符串名称上允许使用这些方法,则没有逻辑上理由使其文字上不可用。 第二个异议通常是这样:“实际上是告诉序列使用字符串常量将其成员连接在一起”。遗憾是并非如此。...Python lambda 表达式不能包含语句,因为 Python 语法框架不能处理嵌套在表达式内部语句。然而, Python ,这并不是一个严重问题。...对于 ListWrapper ,只要包装器对象字典,包装列表就不能更改以避免异常。除非你准备好认真考虑需求以及不正确地满足这些需求后果,否则不要这样做。请留意。 21....例如,append() 方法将向一些内部列表末尾添加新元素;接口规范不能测试您 append() 实现是否能够正确执行此操作,但是测试套件检查这个属性是很简单

2.7K10

Python 核心设计理念27个问题及解答

” (b) 当读到写有 len(X)代码时,就知道它要求是某件东西长度。这告诉我们两件事:结果是一个整数,参数是某种容器。...如果在绑定到字符串名称上允许使用这些方法,则没有逻辑上理由使其文字上不可用。 第二个异议通常是这样:“实际上是告诉序列使用字符串常量将其成员连接在一起”。遗憾是并非如此。...Python lambda 表达式不能包含语句,因为 Python 语法框架不能处理嵌套在表达式内部语句。然而, Python ,这并不是一个严重问题。...对于 ListWrapper ,只要包装器对象字典,包装列表就不能更改以避免异常。除非你准备好认真考虑需求以及不正确地满足这些需求后果,否则不要这样做。请留意。 21....例如, append() 方法将向一些内部列表末尾添加新元素;接口规范不能测试您 append() 实现是否能够正确执行此操作,但是测试套件检查这个属性是很简单

3.3K21

Python TCP Socket粘包和分包处理

概述 进行TCP Socket开发时,都需要处理数据包粘包和分包情况。本文详细讲解解决该问题步骤。使用语言是Python。...目前最常用协议标准是:消息头部(包头)+ 消息长度 + 消息正文 TCP为什么会分包 TCP是以段(Segment)为单位发送数据,建立TCP链接后,有一个最大消息长度(MSS)。...下面是自定义一个包头: 版本号(ver) 消息长度(bodySize) 指令(cmd) 版本号,消息长度,指令数据类型都是无符号32位整型变量,于是这个消息长度固定为4×3=12字节。...消息正文 消息正文数据格式可以使用Json格式,这里一般是用来存放独特信息数据。在下面代码使用{"hello","world"}数据来测试。...Python使用json模块来生成json数据 Python示例 下面使用Python代码展示如何处理TCP Socket粘包和分包。

4.6K10
领券