哈尔滨网站建设方案策划怎么生成网站地图

web/2025/9/25 23:36:23/文章来源:
哈尔滨网站建设方案策划,怎么生成网站地图,建立企业网站的好处,wordpress打开页面很慢《流畅的Python》笔记。本篇是Python进阶篇的开始。本篇主要是对Python特殊方法的概述。1. 前言 数据模型其实是对Python框架的描述#xff0c;它规范了这门语言自身构件模块的接口#xff0c;这些模块包括但不限于序列、迭代器、函数、类和上下文管理器。不管在哪种框架下写… 《流畅的Python》笔记。本篇是Python进阶篇的开始。本篇主要是对Python特殊方法的概述。 1. 前言 数据模型其实是对Python框架的描述它规范了这门语言自身构件模块的接口这些模块包括但不限于序列、迭代器、函数、类和上下文管理器。不管在哪种框架下写程序都会花费大量时间去实现那些会被框架本身调用的方法Python也不例外。Python解释器碰到特殊句法时会使用特殊方法去激活一些基本的对象操作这些特殊方法的名字以两个下划线开头以两个下划线结尾所以特殊方法也叫双下方法 dunder method这些特殊方法名能让自己编写的对象实现和支持以下的语言构架并与之交互 迭代、集合类、属性访问、运算符重载、函数和方法的调用、对象的创建和销毁、字符串表示形式和格式化、管理上下文即with块。 下面通过一些例子来介绍常用的特殊方法。 2. Python风格纸牌 首先介绍两个特殊方法__getitem__和__len__这两个特殊方法。以下代码创建了一个纸牌类 import collectionsCard collections.namedtuple(Card, [rank, suit])class FrenchDeck:ranks [str(n) for n in range(2, 11)] list(JQKA)# 黑桃红桃方块梅花suits spades diamonds clubs hearts.split()def __init__(self):# 嵌套循环self._cards [Card(rank, suit) for suit in self.suits for rank in self.ranks]def __len__(self):return len(self._cards)def __getitem__(self, position):return self._cards[position] namedtuple即命名元组类似于C/C中的struct定义如下 collections.namedtuple(typename, field_names, verboseFalse, renameFalse) 第一个参数是元组名第二个是该元组中含的属性名第三个参数表示在构建该命名元组之前先打印出该命名元组的结构如果在控制台输入第3行代码并置verbose为True的话会输出该命名元组的内部结构实际上它是一个继承自tuple的类由于输出过长请大家自行实验如果该命名元组的元素名中有Python关键字则需要置第四个参数为True这些与关键字重名的元素名会被特殊处理。 用命名元组创建一个不带方法的对象十分简单 from chapter20 import Card, FrenchDeckbeer_card Card(7, diamonds)beer_card Card(rank7, suitdiamonds) 由于FrenchDeck实现了__getitem__方法所以可以像操作List或Tuple一样操作FrenchDeck比如随机访问切片 deck FrenchDeck()len(deck) 52deck[0] Card(rank2, suitspades)deck[-1] Card(rankA, suithearts)from random import choicechoice(deck) Card(rank4, suitclubs)choice(deck) Card(rankJ, suitclubs)deck[:3] [Card(rank2, suitspades), Card(rank3, suitspades), Card(rank4, suitspades)]deck[12::13] [Card(rankA, suitspades), Card(rankA, suitdiamonds), Card(rankA, suitclubs), Card(rankA, suithearts)] 由于实现了该方法FrenchDeck还是个可迭代对象即可以用for循环对其访问也可以反向访问reversed: for card in deck:... print(card)Card(rank2, suitspades) Card(rank3, suitspades) Card(rank4, suitspades) -- snip -- Card(rankQ, suithearts) Card(rankK, suithearts) Card(rankA, suithearts) 迭代通常是隐式的譬如说一个集合类型没有实现__contains__方法那么in运算符就会按顺序做一次迭代搜索调用__getitem__于是in运算符可以用在FrenchDeck上 Card(2, spades) in deck True 如果对上述deck变量调用sorted函数Python将按ASCII码进行排序但这并不是扑克牌的正确排序所以下面我们自定义排序方法 suit_values dict(spades3, hearts2, diamonds1, clubs0)def spades_high(card):rank_value FrenchDeck.ranks.index(card.rank)return rank_value * len(suit_values) suit_values[card.suit]for card in sorted(deck, keyspades_high):print(card) 此时输出的结果就是先按点数排序再按花色排序。 3. 如何使用特殊方法 需要明确一点特殊方法的存在是为了给Python解释器调用到作为程序员并不需要调用他们也即是说没有my_object.__len__()这种写法而应该是len(my_object)。说到__len__方法如果是Python内置类型CPython会抄个近路该方法实际上会直接返回PyVarObject里的ob_size属性而PyVarObject是表示内存中长度可变的内痔对象的C语言结构体。 很多时候特殊方法的调用是隐式的比如for i in x:这个语句背后其实用的是iter(x)而这个函数的背后则是x.__iter__()方法当然前提是这个方法在x中被实现如果没被实现则会调用__getitem__方法。 直接调用这个值比调用一个方法快很多。直接调用特殊方法的频率应该远远低于你去实现它们的次数。 通过内置的函数例如leniterstr等来使用特殊方法是最好的选择。这些内置函数不仅会调用特殊方法通常还提供额外的好处而且对于内置的类来说它们的速度更快。 还有一点值得注意不要想当然地随意添加特殊方法比如__foo__之类的因为虽然现在这个名字没有被Python内部使用以后就不一定了。 3.1 自定义向量Vector 使用5个特殊方法实现Vector的字符串输出取绝对值如果是复数则是取模返回布尔值加法和数乘等运算 from math import hypotclass Vector:def __init__(self, x0, y0):self.x xself.y ydef __repr__(self):return Vector(%r, %r) % (self.x, self.y)def __abs__(self):return hypot(self.x, self.y)# 在Python中只有0NULL才是False其余均为Truedef __bool__(self):# 更简单的写法是# return bool(self.x or self.y)return bool(abs(self))# 实现加法运算符重载def __add__(self, other):return Vector(self.x other.x, self.y other.y)# 实现乘法运算符重载这里是数乘且还没有实现交换律需要实现__rmul__方法def __mul__(self, scalar):return Vector(self.x * scalar, self.y * scalar) Python有一个内置函数叫做repr。该函数通过特殊方法__repr__来得到一个对象的字符串表示形式如果没有该特殊方法当我们在控制台打印一个向量对象时得到的字符串可能是Vector object at 0x10e00070 # 代码 v1 Vector(2, 4) v2 Vector(2, 1) print(v1 v2) print(abs(v1)) print(v1 * 3)# 结果 Vector(4, 5) 4.47213595499958 Vector(6, 12) __repr__与__str__的区别与联系前者方便我们调试和记录日志后者则是给终端用户看的。后者是在str()函数被使用或者是在print函数打印一个对象的时候才被调用它返回的字符串对终端用户友好。如果只想实现这两个特殊方法中的一个__repr__是更好的选择因为如果一个对象没有__str__函数Python又需要调用它时解释器会用__repr__代替。 上述Vector类实现了__bool__方法它可用于需要布尔值的上下文中if, while, and, or, not等。默认情况下我们自己定义的类的实例总被认为是True除非重写了这个类的__bool__或__len__方法。bool(x)的背后是调用x.__bool__()如果不存在__bool__方法那么bool(x)会尝试调用x.__len__()如果该方法返回0则bool返回False否则返回True。 3.2 为什么len不是普通方法 “实用胜于纯粹”Python之禅里的一句话。len之所以不是一个普通方法是为了让Python自带的数据结构可以走后门abs也是同理。但多亏了它是特殊方法我们也可以把len用于自定义数据类型。这种处理方式在保持内置类型的效率和保证语言的一致性之间找到了一个平衡点也印证了“Python之禅”中的另一句话“不能让特例特殊到考试破坏既定规则”。 4. 总结 通过实现特殊方法自定义数据类型可以表现得跟内置类型一样从而让我们写出更具Python风格Pythonic的代码。后面的内容将围绕更多的特殊方法展开。 迎大家关注我的微信公众号代码港 个人网站 www.vpointer.net ~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81875.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何让百度快速收录网站toom舆情监测软件

插入排序(Insertion Sort)是一种简单直观的排序算法,它的工作原理是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增加1的有序表。以下是插入排序算法的基本步骤: 从第一个元素开始,该元…

笨鸟网站开发怎么创建网站域名

MongoDB 官网下载地址:https://www.mongodb.com/try/download/community MongoDB 是一款非常热门的 NoSQL 面向文档的数据库管理系统, 分为 企业版收费版 和 社区免费版。MongoDB 使用 BSON 对象来存储,与 JSON 格式类型的 "键 - 值&quo…

手机微信网站绿化工程属于建设工程吗

Docker使用记录(一) 简单介绍Docker安装Docker 常用命令Docker 可视化Docker 使用GPU可视化rviz、gazebo 在进行ROS项目开发时,如果只有一台Windows电脑,我们可以考虑使用WSL或Docker来搭建ROS环境。在尝试了两种方式后&#xff0…

酒泉哪家公司可以做网站低调与华丽wordpress下载

目录 一、常见的压缩包的扩展名 二、常见的压缩和解压指令 1、tar 2、tar gzip(.tar.gz) (或 .tgz) 3、tar bzip2(.tar.bz2) 4、zip 5、gzip 6、bzip2 7、xz 8、rar 9、7z 三、安装解压工具 一、常见的压缩包的扩展…

上海中小企业网站wordpress导出媒体

最近在学Pygame,花一段时间做了一个异常简陋版的"打砖块". 这次重点说一下困扰我比较长时间的碰撞检测(个人太菜..). 按照网上教程比较普遍的方法(也可能是我没看见别的),碰撞检测依次计算移动物体与被碰撞物体各个边之间坐标是否相交.例如下列代码,检测小球与窗口的…

学校网站建设背景做php门户网站那个系统好

helm 制作应用的离线安装包 1、安装helm 到helm下载对应的压缩包:https://github.com/helm/helm/releases 解压,将helm文件cp到/usr/local/bin/ 文件夹下,查看helm版本;不同的k8s对应不同的helm版本,下载时留心注意…

中国建设银行网站的社保板块在哪广州海珠区是市中心吗

文章目录 导读概念符号表IOB标记概率无向图模型MRF的因子分解团与最大团有向图模型 条件随机场线性链条件随机场 特征函数对数线性模型参数化形式简化形式矩阵形式 概率计算 导读 条件随机场是给定一组输入随机变量的条件下另一组输出随机变量的条件概率分布模型,其…

宁夏电力建设工程公司外部网站哈尔滨网站域名归那里管

最近全权负责了一个前后端分离的web项目,前端使用create-react-app[1], 后端使用golang做的api服务。npx create-react-app my-app cd my-app npm start歘歘歘,就搭建了一个react前端项目。前端老鸟都知道npm start或yarn start以开发模式启动react App&…

dedecms 网站地图模板做竞品分析的网站

目录 前言 一、链表的分类 二、双向循环链表 2.1 开辟新的节点 2.2 链表初始化 2.3 打印链表 2.4 链表的尾插 2.5 链表的头插 2.6 链表的尾删 2.7 链表的头删 2.8 查找链表 2.9 在pos位置之后插入数据 2.10 删除pos位置的数据 三、完整代码实现 四、顺序表和双向…

网站建设不挣钱浏览器下载WordPress文件

1.错误复现 2.解决办法 2.1去https://github.com/Esri/resource-proxy 网站下载代理配置文件,我下载的是最新的1.1.2版本,这里根据后台服务器配置情况不同有三种配置文件,此次我用到的是DotNet和Java. 2.2 DotNet配置 2.2.1 对proxy文件增加…

宁波建站模板系统企业网站建设免备案

CSAPP学习 前言 一门经典的计组课程,我却到了大四才学。 anyway,何时都不会晚。 博主参考的教程:本电子书信息 - 深入理解计算机系统(CSAPP) (gitbook.io),非常感谢作者的整理。 诚然去看英文版可以学…

网站app开发费用网站建设网络推广方案

水果店微信小程序:新鲜生活,触手可及 在这个快节奏的时代,我们都在追求更高效、更便捷的生活方式。而微信小程序,正是这样一个让生活变得更加轻松便捷的神奇工具。今天,我要向大家介绍的,就是一家独具匠心…

厦门网站快速排名优化开平网站建设

简介hexo —— 简单、快速、强大的Node.js静态博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 特性风一般的速度Hexo基于Node.js,支持多进程,几百篇文章…

购物商城网站开发腾讯云获取WordPress密码

写在前面在MySQL数据库中,索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点,索引就是为了提高数据查询的效率。今天我们来聊聊在MySQL索引优化中两种常见的方式,索引覆盖和索引下推索引覆盖要了解索引覆…

赤壁网站设计php做网站时间代码

声明 本文仅供学习参考,如有侵权可私信本人删除,请勿用于其他途径,违者后果自负! 如果觉得文章对你有所帮助,可以给博主点击关注和收藏哦! 前言 目标网站:aHR0cHM6Ly9tZGZnaGcuNXhwb2lqaHRm…

host域名主机服务商商务企业网站模板瑞安网站开发

文章目录数据转换——transform()方法数据应用——apply()方法数据转换——transform()方法 使用aggregate()方法进行聚合运算已经在上一篇博客中详细阐述,我们知道aggregate()方法返回的数据集的形状(shape)与被分组的数据集的形状是不同的…

如何将网址提交到一些权重比较高的网站wordpress 去除评论框

注解是什么? 注解可以理解成注释、标记、标签的意思,用来标记类、方法等。就相当于现实生活中的一些事物,上边贴一个标签或者写一些注释性文字来描述它可以用来做什么、怎么用、何时用等信息。Java中的注解也是一样的,用来表示被标…

广告设计就业方向和前景南昌网站建设方案优化

文章目录1. 逻辑回归二分类2. 垃圾邮件过滤2.1 性能指标2.2 准确率2.3 精准率、召回率2.4 F1值2.5 ROC、AUC3. 网格搜索调参4. 多类别分类5. 多标签分类5.1 多标签分类性能指标本文为 scikit-learn机器学习(第2版)学习笔记逻辑回归常用于分类任务 1. 逻…

seo网站设计团购网站案例

鲸参谋监测的京东平台9月份空气净化器市场销售数据已出炉! 9月份,空气净化器的销售同比上年增长。根据鲸参谋平台的数据显示,今年9月,京东平台空气净化器的销量将近15万,同比增长约1%;销售额将近2亿元&…

政务公开网站建设整改方案手机在网上怎么创建自己的网站

问题: 级数敛散性和积分敛散性的区别联系是什么?学习的目的是什么?最重要的目的是什么? 主要内容。 部分和 s ∑ i 1 n u i s \sum_{i1}^{n} u _{i} si1∑n​ui​ 注意:部分和不是数列的一部分之和,…