流畅的Python第九章总结

本文介绍了Python中迭代器协议的实现方式,如何通过__iter__和__next__方法使对象变得可迭代;讨论了不同格式化输出的方法,包括format()函数及str.format()方法,并演示了如何利用这些方法进行精确的格式控制;最后,文章还探讨了Python中的私有属性概念及其实际应用。

流程的Python

第九章总结

  1. __ iter __把实例变成可迭代实例。
  2. print()调用__str__而非__repr__方法。
  3. ==的特殊方法为__eq__。
  4. 两个装饰器

@classmethod装饰函数,指明为类方法,而非实例方法。
@staticmethod装饰器,指明为静态方法,即普通方法。只是恰好在类中,而非模块中,不是很有用,如果不想与类交互,直接在模块中定义就好了。

  1. 格式化显示

format()和str.format()

>>> brl = 1/2.43
>>> brl
0.4115226337448559
>>> format(brl, '0.4f')
'0.4115'
>>> '{rate:0.2f}'.format(rate = brl)
'0.41'

https://blog.youkuaiyun.com/xyx_x/article/details/90202813
具体使用看上一个链接。

格式化输出是可扩展的,每个类可以自行定义__format__函数。如datatime模块中的类,

>>> from datetime import datetime
>>> now = datetime.now()
>>> format(now, '%H:%M:%S')
'12:19:24'
>>> "It's now {:%H:%M:%S}".format(now)
"It's now 12:19:24"

如果类中没有定义__format__函数,则会返回str(object)。

  1. Python的私有属性和受保护的属性

Python没有private,但是可以将属性前加两个下划线,这样属性会被存在实例的__dict__属性中,而此时的名称变为_类名__属性名。但是这样不好,如果知道这种机制,同样可以改写这个属性。所以尽量不要用。Python程序员有个约定,在需要private的属性名前加一个下划线,Python解释器不会对这个属性做任何特殊处理。

  1. 覆盖类属性

当实例使用类属性时,如self.类属性,此时获得的就是类属性的值,但是如果改写这个实例的类属性,不会改变原来的类属性,只是改变这个实例的类属性。如果想要修改原来的类属性,需要使用类.类属性来改写。这个类属性子类可以继承。

<think>好的,用户现在需要查找头歌Python教程第九章作业的答案,特别是第五关的饼图绘制题目。首先,我需要回顾用户提供的引用内容。引用[2]中提到了第九章作业第五关的具体要求:使用给定的labels和sizes数据绘制饼图,并突出显示Python部分0.1。用户之前可能已经得到了相关提示,现在需要更详细的解答。 接下来,我需要确保回答符合系统指令,比如正确使用LaTeX格式,生成相关问题,并且结构清晰。用户的问题是关于Python作业的,所以重点应放在代码实现和步骤解释上。同时,要参考用户提供的引用,尤其是引用[2]中的数据和题目要求。 我应该先分析题目要求:绘制饼图,突出Python部分。数据已经给出,需要用到matplotlib库。代码部分需要展示如何导入库、处理数据、绘制饼图并设置突出显示。另外,要确保代码格式正确,使用代码块,并解释关键步骤,比如explode参数的设置,autopct添加百分比标签,以及图表标题和显示。 同时,要注意用户可能的疑问点,比如如何安装matplotlib、如何调整图表样式等,但根据问题描述,用户可能只需要直接的答案。不过,生成的相关问题可以包括这些扩展内容,比如如何调整样式、保存图表等,帮助用户深入学习。 最后,检查LaTeX格式是否正确,虽然这个问题可能不涉及数学公式,但如果有提到数值计算的地方,需要用$...$包裹。例如,百分比数据可以用$16.2\%$表示,但根据示例,可能不需要。确认代码正确,特别是explode列表的构造和绘图参数的设置。确保引用标识正确添加,引用[2]对应题目要求的数据和格式。 总结回答步骤:问题分析、代码实现、代码解释、相关问题。确保回答清晰,解决用户的核心需求,即完成作业题目的代码和解释,并生成相关问题帮助进一步学习。</think>关于头歌Python教程第九章作业第五关的饼图绘制题解,根据题目要求需要实现以下功能: ```python import matplotlib.pyplot as plt labels = ['C语言', 'Python', 'Java', 'C++语言', 'C#', 'VB.net', 'Javascript', 'PHP', 'Other'] sizes = [16.2, 12.1, 11.7, 7.6, 4.7, 4.0, 2.0, 1.8, 39.9] explode = [0, 0.1, 0, 0, 0, 0, 0, 0, 0] # 仅突出Python plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', startangle=90) plt.axis('equal') # 确保饼图正圆形 plt.title("程序设计语言热度分布") plt.show() ``` **关键实现步骤解析**: 1. 使用`explode`参数控制突出显示,将对应Python的偏移量设为$0.1$ 2. `autopct='%1.1f%%'`实现百分比标签显示 3. `startangle=90`设置起始角度为90度 4. `plt.axis('equal')`保证饼图比例正确[^2]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值