【读书笔记】Python编程:从入门到实践-埃里克·马瑟斯,python基础体系巩固和常见场景练习

【概述】

书名:Python编程:从入门到实践

作者:埃里克·马瑟斯

日期:2021年09月01日

读书用时:1632页,100小时,27个笔记

【读书笔记】

◆ 第4章 操作列表

>> 

在第3章,你学习了如何创建简单的列表,还学习了如何操作列表元素。在本章中,你将学习如何遍历整个列表,这只需要几行代码,无论列表有多长。循环让你能够对列表的每个元素都采取一个或一系列相同的措施,从而高效地处理任何长度的列表,包括包含数千乃至数百万个元素的列表。

4.1 遍历整个列表

你经常需要遍历列表的所有元素,对每个元素执行相同的操作。例如,在游戏中,可能需要将每个界面元素平移相同的距离;对于包含数字的列表,可能需要对每个元素执行相同的统计运算;在网站中,可能需要显示文章列表中的每个标题。

◆ 第5章 if语句

>> 

编程时经常需要检查一系列条件,并据此决定采取什么措施。在Python中,if语句让你能够检查程序的当前状态,并据此采取相应的措施。

在本章中,你将学习条件测试,以检查感兴趣的任何条件。你将学习简单的if语句,以及创建一系列复杂的if语句来确定当前到底处于什么情形。接下来,你将把学到的知识应用于列表,以编写for循环,以一种方式处理列表中的大多数元素,并以另一种不同的方式处理包含特定值的元素。

◆ 第6章 字典

for name in favorite_languages.keys(),字典遍历,默认遍历keys值,所以可以不写.keys

>> 如果显式地使用方法keys()可让代码更容易理解,你可以选择这样做,但如果你愿意,也可省略它。

去重函数set(listname)

>> for language in set(favorite_languages.values()): ❶
 print(language.title())

◆ 第7章 用户输入和while循环

>> 

大多数程序都旨在解决最终用户的问题,为此通常需要从用户那里获取一些信息。例如,假设有人要判断自己是否到了投票的年龄,要编写回答这个问题的程序,就需要知道用户的年龄,这样才能给出答案。因此,这种程序需要让用户输入其年龄,再将其与投票年龄进行比较,以判断用户是否到了投票的年龄,再给出结果。

在本章中,你将学习如何接受用户输入,让程序能够对其进行处理。在程序需要一个名字时,你需要提示用户输入该名字;程序需要一个名单时,你需要提示用户输入一系列名字。

字符串a+=字符串b,字符串可以通过“+”号直接连接

>> prompt = "If you tell us who you are, we can personalize the messages you see."
prompt+= "\nWhat is your first name? "

标志,就是函数外部定义变量初始值true,while判断变量值true则执行程序,内部如果接收到quit命令,就把外部变量改为false,从而结束while循环。

>> 在要求很多条件都满足才继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态。这个变量被称为标志,充当了程序的交通信号灯。

◆ 第8章 函数

定义函数时变量为行参;实际调用时,变量值为实参,还扩展为:位置形参、关键字形参、默认形参、可变形参数

>> 在函数greet_user()的定义中,变量username是一个形参——函数完成其工作所需的一项信息。在代码greet_user('jesse')中,值'jesse'是一个实参。

>> 如果我们发现需要对打印代码进行修改,只需修改这些代码一次,就能影响所有调用该函数的地方;与必须分别修改程序的多个地方相比,这种修改的效率更高。

这个程序还演示了这样一种理念,即每个函数都应只负责一项具体的工作。第一个函数打印每个设计,而第二个显示打印好的模型;这优于使用一个函数来完成两项工作。编写函数时,如果你发现它执行的任务太多,请尝试将这些代码划分到两个函数中。别忘了,总是可以在一个函数中调用另一个函数,这有助于将复杂的任务划分成一系列的步骤。

8.4.2 禁止函数修改列表

有时候,需要禁止函数修改列表。例如,假设像前一个示例那样,你有一个未打印的设计列表,并编写了一个将这些设计移到打印好的模型列表中的函数。

浅复制,创建副本listname[:],不改变原有列表的数据

>> 切片表示法[:]创建列表的副本。

位置实参+关键字实参+可变实参+默认实参

>> Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。

**args,接收键:值对的空字典

>> 形参**user_info中的两个星号让Python创建一个名为user_info的空字典,并将收到的所有名称—值对都封装到这个字典中。

谨慎使用from xx import *,因为一旦导入文件中包含当前文件的同名文件,函数就会被覆盖引发报错

>> 然而,使用并非自己编写的大型模块时,最好不要采用这种导入方法:如果模块中有函数的名称与你的项目中使用的名称相同,可能导致意想不到的结果

函数名:下划线+小写字母,见名知意。函数第一行,三引号介绍函数作用

>> 每个函数都应包含简要地阐述其功能的注释,该注释应紧跟在函数定义后面,并采用文档字符串格式。

>> 建议代码行的长度不要超过79字符,

>> 如果程序或模块包含多个函数,可使用两个空行将相邻的函数分开,

◆ 第9章 类

>> 

面向对象编程是最有效的软件编写方法之一。在面向对象编程中,你编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。编写类时,你定义一大类对象都有的通用行为。基于类创建对象时,每个对象都自动具备这种通用行为,然后可根据需要赋予每个对象独特的个性。使用面向对象编程可模拟现实情景,其逼真程度达到了令你惊讶的地步。

根据类来创建对象被称为实例化,这让你能够使用类的实例。在本章中,你将编写一些类并创建其实例。你将指定可在实例中存储什么信息,定义可对这些实例执行哪些操作。

基于父类创建对象,叫做对象的继承,可以通用其静态属性,也叫类的实例化。

>> 基于类创建对象时,每个对象都自动具备这种通用行为,然后可根据需要赋予每个对象独特的个性。

class Dog():类名首字母必须大写

def __init__():静态方法,子类可直接调用,注意是双下划线

self.name = name

def eat():共有方法,子类可复用。

>> __init__()

类中的函数称为方法

每当继承父类创建子类,子类自动运行父类的静态属性和方法。

>> ❸处的方法__init__()是一个特殊的方法,每当你根据Dog类创建新实例时,Python都会自动运行它。

__init__双下划线,避免自动默认运行的方法名的冲突。

>> 在这个方法的名称中,开头和末尾各有两个下划线,这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突。

父类第一个形参(self),是为了让子类调用默认方法时,让属性本身能随意访问类中的实力和方法,我的理解是copy,把dna复制给自己的儿子。

>> 每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。

self.name,以self开头的所有变量,可以供类中所有方法调用,也可以供类中所有实例访问。

>> ❹处定义的两个变量都有前缀self。以self为前缀的变量都可供类中的所有方法使用,我们还可以通过类的任何实例来访问这些变量。self.name = name

>> 在Python 2.7中创建类时,需要做细微的修改——在括号内包含单词object

给一个父类创建多个相同名称的实例,依旧会出现多个实例,不会相互覆盖。

>> 就算我们给第二条小狗指定同样的名字和年龄,Python依然会根据Dog类创建另一个实例。

父类的静态属性内容里如果定义了有默认值的变量,类名后的括号内就不需要写形参了。

>> 如果你对某个属性这样做了,就无需包含为它提供初始值的形参

>> 9.3 继承

编写类时,并非总是要从空白开始。如果你要编写的类是另一个现成类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。

9.3.1 子类的方法__init__()

创建子类的实例时,Python首先需要完成的任务是给父类的所有属性赋值。为此,子类的方法__init__()需要父类施以援手。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值