《Python编程 从入门到实践》读书笔记

说在开头:这是我学习Python过程中的读书笔记,内容不全,会边学习边补充。如果文中有说法错误的地方,欢迎大佬指正~

1.常用快捷键:

  • 批量注释:Alt+3 把所有要注释的内容用鼠标选中,然后Alt+3,效果是出现两个##
  • 去掉注释:Alt+4
  • 在shell里,上一条命令:Alt+P
  • 下一条命令:Alt+N

2.良好的编程习惯:

  • 在 + - / * = == != || && 这些运算符左右加一个空格
  • 函数中,在给形参指定默认值时,等号两边不要有空格;在函数调用传递实参时,等号两边也不要留空格。

3.程序员需遵守的格式约定:

  • (1)每级缩进使用4个空格。(在程序中混用Tab制表符和空格可能导致极难解决的问题,但大多数编辑器都能将制表符转换为空格)
  • (2)每行不超过80字符。
  • (3)用空格将程序的不同部分分开,提高可读性。

第2章 变量和简单数据类型

1.Python始终记录的是变量的最新值。

2.变量命名规则:

  • 变量名可以包含字母、数字和下划线,数字不能作为开头;不能包含空格。
  • 不能使用Python库里的函数名和关键字作为变量名。
  • 应该使变量名简洁而具有描述性,最好避免使用小写字母l和大写字母O,容易与数字1、0混淆。

3.字符串必须由引号括起来,单双不限。反过来,由引号引起来的就是字符串。

4.修改字符串的大小写:

  • title():单词首字母大写
  • upper():字符串全改为大写
  • lower():字符串全改为小写

5.合并(拼接)字符串:

  • 用“+”进行拼接,是按纯文本的方式,即把等号前后的内容拼接起来:
    在这里插入图片描述
  • 但要注意类型,类型不同会报错:
    在这里插入图片描述
  • 78是整型,“78”才是字符串,所以修改为:
    在这里插入图片描述
  • 那如果真的想做加法怎么办呢? 强制转换类型,两个int用+号就是做加法:
    在这里插入图片描述
  • 如果不清楚类型,可以用type()查看:
    在这里插入图片描述

6.制表符和换行符:
“\n”、“\t”:一个是换行、一个是水平制表符(其实就是空四格,在Python里没有C语言里的花括号{},全是靠缩进来区分,所以缩进很重要!)。
而且它们是转义字符,只能在print里用,而且必须加引号!↓
在这里插入图片描述

7.删除空白:
需要理解“空白很重要”的含义,即搞清楚为什么需要删除空白,我目前知道的两点原因:1.占据内存空间;2.空白很有可能隐藏信息,是安全隐患。

  • strip():删除两端空格
  • lstrip():删除开头空格
  • rstrip():删末尾空格

8.避免想要输出引号导致的语法报错,我的建议是当你需要输出单引号是,两端就用双引号;需要输出双引号时,两端就用单引号。

9.数字:

  • 整数运算中,两个乘号表示乘方运算。
  • 浮点数:带小数点的数就是浮点数。
  • 操作类型不同的值时,需要强制类型转换:str()、int()。

第3章 列表简介

1.定义:列表是一系列按特定顺序排列的元素的组成(元素之间不一定有联系)。

  • 命名习惯:采用表示复数的名字,如names。
  • 书写格式:用“[]”表示列表,用“,”隔开元素。
  • 例子中的列表元素是字符串,既可以用双引号也可以用单引号。
    我习惯用双引号括字符串,因为C语言里有严格区分:双引号括字符串,单引号括字符(char型数据)。
  • 索引是从0开始的。[0]是第一个元素,[1]是第二个元素。
  • 但是负数索引是从[-1]开始的,[-1]就是倒数第一个元素,[-2]就是倒数第二个元素。

2.修改列表元素:

  • 指定列表名和要修改的元素索引,再指定新值。注意:第三个元素的索引是[2]!
    在这里插入图片描述
  • 元素=索引+值:
    在这里插入图片描述

3.列表中增加元素:

  • 1.append()方法是在列表末尾添加元素。
  • 列表名.append(添加的元素的值)
    在这里插入图片描述
  • append一次只能添加一个元素,需要添加多个元素就得多用几次append,并且是按顺序:
    在这里插入图片描述
    在这里插入图片描述
  • 2.insert()方法是在列表任何位置添加新元素。
  • 列表名.insert(索引,添加的元素的值)
    在这里插入图片描述

4.从列表中删除元素:

  • del 列表名[索引]
  • 列表名.pop() 括号内有索引即为具体位置,无索引则默认删除列表末尾元素
  • 列表名.remove(需要删除的元素的值)
    在这里插入图片描述

5.组织列表:

  • 1.永久排序:sort()方法
  • 列表名.sort(),倒序为:列表名.sort(reverse=True)
  • 2.临时排序:sorted()函数
  • print(sorted(列表名)),倒序为:sorted(列表名,reverse=True)
  • 3.倒着打印列表:reverse()方法(也是永久性排序)
  • 列表名.reverse()

6.确定列表长度:

  • len()函数:len(列表名)

第4章 操作列表

1.用for循环遍历列表:

for 变量 in 列表:
	循环语句
  • 注意:(1)for语句后面有冒号,是告诉Python,下面是循环的第一行。
  • (2)Python是根据缩进来判断代码行与上一行代码的关系。

2.创建数字列表:

  • (1)range函数:range(1,5) #输出1~4,前闭后开
    range(1,5,2) #第三个值是步长:输出1 3
  • (2)可以用list()函数将range()的结果直接转化为列表:list(range(1,5))
  • (3)在Python中两个乘号表示乘方运算。

3.对数字列表执行统计计算:

  • min(列表名) #找数字列表中的最小值
  • max(列表名) #找数字列表中的最大值
  • sum(列表名) #对数字列表求和

4.列表解析:

  • 列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。
  • 当非常熟练的创建常规列表后,再考虑创建列表解析。

5.切片:

  • 列表名[0:3] #输出第0、1、2个元素
  • 列表名[:4] #输出第0、1、2、3个元素
  • 列表名[2:] #输出从第2个元素到最后一个
  • 列表名[-3:] #输出倒数3个元素

6.复制列表:

  • 列表1 = 列表2[:] #这样复制出来的两个列表互不影响
  • 列表1 = 列表2 #这样复制出来的两个列表会互相影响

7.元组:

  • (1)元组和列表的区别:列表使用方括号,元组使用圆括号;
    列表是可修改的,元组不可修改。
  • (2)元组的元素不能修改,但是可以给储存元组的变量赋值。

第5章 if语句

1.在Python中检查是否相等时区分大小写,两个大小写不同的值会被视为不相等。

  • 不想区别大小写时,可以通过.upper()和.lower()来处理条件

2.检查条件:

  • (1)与:and
  • (2)或:or
  • (3)非:!=

3.if后面可以检查特定值是否在列表中:

  • (1)关键字:in
if user in username:
	代码块

  • (2)关键字:not in
if psw not in password:
	代码块

4.如果只想执行一个代码块,就使用if-elif-else结构;如果要运行多个代码块,就使用一系列独立的if语句。

5.确定列表是不是空的:

if 数组名:   #数组中至少包含一个元素时,返回true,执行代码块1
	代码块1
else:        #数组为空时,返回false,执行代码块2
	代码块2

第6章 字典

1.字典是用放在花括号{}中的一系列键-值对表示。


字典名 = {‘键’:’值’,’键’:’值’}

2.操作:

  • (1)访问字典中的值:
字典名[‘键’]
  • (2)修改值:
字典名[‘键’] = 新值
  • (3)添加键值对:
字典名[‘键’] = 值
  • (4)删除键值对:(用del语句永久删除)
del 字典名[‘键’]

3.使用字典来存储用户提供的数据或者编写能自动生成大量键值对的代码时,通常需要先定义一个空字典。

字典名 = {}

字典名[‘键’] = 值
字典名[‘键’] = 值

4.需要使用多行来定义字典时,再输入左花括号后按回车键,再在下一行缩进四个空格,指定第一个键值对并在它后面加一个逗号,此后你再次按回车键时,文本编辑器将自动缩进后续键值对,且缩进量与第一个键值对相同,在最后一个键值对的后面加上逗号,然后在下一行输入右括号。
在这里插入图片描述
较长的print语句分成多行:
在这里插入图片描述
5.遍历:
遍历字典时,键值对的返回顺序与存储顺序不同,Python不关心键值对的存储顺序,只跟踪键值之间的关联关系。

  • (1)遍历键值对:
    方法items():返回一个键值对列表。
for key,value in 字典名.items():
  • (2)遍历键:
    方法keys():返回一个键列表。
for key in 字典名.keys():
  • (3)遍历值:
    方法values():返回一个值列表。
for value in 字典名.values():
  • (4)按顺序遍历 :
    函数sorted():对返回的键进行排序。

6.嵌套:

  • (1)将字典嵌套在列表中。
  • (2)在字典中嵌套列表。当一个键对应多个值时,可以将多个值存储在列表中。
  • (3)在字典中存储字典。
    在这里插入图片描述

第7章 用户输入和while循环

1.函数input()让程序暂停运行,等待用户输入一些文本,获取用户输入后,Python将其存储在一个变量中,以方便后续使用。

  • Message = input(“请输入:”)

2.提示超过一行时,可以创建多行字符串。使用运算符+=在存储在变量1中的字符串末尾附加一个字符串。

变量1 = “这句话太长了,一排打不下”
变量1 += “所以使用+=在后面再接一串”

Message = input(变量1)

3.input获取的内以str的形式存储,如果输入21想作为数字使用而不是字符串,就需要int()转换类型。

4.求模运算符%:

  • 偶数能够被2整除,因此对于一个数和2执行求模运算的结果为零,那么这个数就是偶数,否则就是奇数。
  • Number % 2 == 0

5.标志:

  • 在很多条件都满足才能继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态,这个变量就被称为标志。
  • 让程序在标识为true时继续运行,并且任何事件导致标志的值为false时,让程序停止运行。
  • 这样在while语句中就只需要检查一个条件:标志的当前值是否为true。

6.break和continue:

  • Break语句不再执行剩余的代码,直接退出循环。
  • continue语句是退出本次循环,返回到循环开头,并根据条件测试结果决定是否继续执行循环。

第8章 函数

1.定义函数:

def 函数名():
	函数体

2.形参和实参:
在这里插入图片描述
在给形参指定默认值时,等号两边不要有空格;在函数调用传递实参时,等号两边也不要留空格。

3.位置实参:
在这里插入图片描述

4.关键字实参:
在这里插入图片描述

  • (1)关键字实参的顺序无关紧要,因为Python知道各值应该存储到那个形参中。
  • (2)但是使用关键字实参时,一定要准确的使用函数定义中的形参名。

5.默认值:

  • (1)在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参,让Python依然能够正确的解读位置实参。
    在这里插入图片描述
  • (2)当显示的提供实参时,Python会忽略默认值。
    在这里插入图片描述

6.让实参变成可选的:

  • (1)给可选的参数指定一个默认值,并将其放置形参列表末尾。
  • (2)Python将非空字符串解读为True。
    在这里插入图片描述

7.返回字典:
在这里插入图片描述
8.传递任意数量的实参:
(1)预先不知道函数需要接收多少个实参时,可以定义一个带星号的形参。

  • 形参名*toppings中星号的作用是,让Python创建一个名为toppings的空元组,并将所有接收到的值都封装在这个元组中。
    在这里插入图片描述

(2)结合使用位置实参和任意数量实参:

  • 如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的实参放在最后。Python先匹配位置实参和关键字实参,再将剩下的实参都收集到最后一个形参中。

(3)使用任意数量的关键字实参:

  • 形参**user_info中的两个星号是让Python创建一个名为user_info的空字典,并将所有接收到的名称-值对都封装在这个字典中。
    在这里插入图片描述

9.将函数存储在模块中:
(1)导入整个模块

  • 只需要编写一条import语句并在其中指定模块名,就可在程序中使用该模块中的所有函数。
  • import module_name
  • 用句点分隔模块名和函数名:
  • module_name.function_name()
    在这里插入图片描述

(2)导入特定的函数

  • from module_name import function_name
  • 可以导入任意数量的函数,用逗号分隔函数名:
  • from module_name import function_0,function_1,function_2
  • 在调用函数时无需使用句点:
    在这里插入图片描述

(3)使用as给函数指定别名

  • 如果要导入的函数的名称,可能与程序中现有的名称冲突或者函数的名称太长,可指定简短而独一无二的别名。
  • from module_name import function_name as fn
    在这里插入图片描述

(4)使用as给模块指定别名

  • 通过给模块指定简单的别名,能更轻松的调用模块中的函数。简化模块名是为了更专注的描述函数名。因为函数名能更明确的指出函数的功能,对于代码而言比模块名更重要。
  • import module_name as mn
    在这里插入图片描述

(5)导入模块中的所有函数

  • from module_name import *
  • 由于导入了每个函数,所以在调用函数时不需要使用句点。但是最好不要采用这种导入方法,因为如果模块中的函数名与项目中使用的相冲突时,会发生意想不到的结果。

第9章 类

1.类:
在Python中,首字母大写的名称指的是类。这个类定义中的括号是空的,因为我们要从空白创建这个类。

2.方法:
(1)类中的函数称为方法。
(2)init()是一个特殊的方法。在方法名称中,开头结尾各有两个下划线,这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突。init_应该是两个,即__init__,否则会报错:

(3)在_init_()方法的定义中,形参self必不可少,还必须位于其他形参前面。
(4)创建实例时,只需要给self后面的形参提供值。
(5)init()方法中定义的变量都需要用句点表示法带上前缀self。
(6)“self.name”这样可以通过实例访问的变量称为属性。
(7)传参示意:
在这里插入图片描述
(8)Python调用_init_()方法创建类时,将自动传入实参self。每个与类相关联的方法都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。

3.实例:
(1)“my_dog”就是实例。类构造出来的内容,需要拿个东西装着,这个东西就是实例。将参数willie和6传入类Dog中进行构造,得到的内容存放在实例my_dog中。
(my_dog是变量名,用它来存储实例。)
在这里插入图片描述
(2)我们通常认为首字母大写的名称指的是类,而小写的名称指的是根据类创建的实例。

4.访问属性:
(1)要访问实例的属性,可使用句点表示法。
(2)在这里Python先找到实例my_dog,再查找与这个实例相关联的属性age。在Dog类中引用这个属性时,使用的是self.age。
在这里插入图片描述
5.调用方法;
在这里插入图片描述
6.给属性指定默认值:
可以在方法__init__()中指定初始值,且不需要包含为它提供初始值的形参。
在这里插入图片描述
7.修改属性的值:
(1)直接修改属性的值:用句点表示法通过实例直接访问并设置它。
在这里插入图片描述
(2)通过方法修改属性的值:
在这里插入图片描述
6.继承:
(1)一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。

(2)定义子类时,必须在括号内指定父类的名称。
在这里插入图片描述
(3)super()是一个特殊的函数,帮助Python将父类和子类关联起来。
父类也称超类(superclass),名称super因此而得名。
在这里插入图片描述
7.给子类定义属性和方法:
在这里插入图片描述
8.重写父类的方法:
对于父类的方法,只要它不符合子类模拟的实物的行为,都可对其进行重写。即在子类中定义一个与需要重写的父类方法同名的方法。
在这里插入图片描述
9.导入类
Python允许你将类存储在模块中,然后在主程序中导入所需的模块。

(1)导入单个类:
创建一个只包含Car类的模块(即将Car类存为car.py)。
每一个模块都应该编写一个模块级文档字符串,对该模块的内容进行简要的描述。
在这里插入图片描述
创建另一个文件my_car.py,在其中导入Car类:
在这里插入图片描述
import语句让Python打开模块car,并导入其中的Car类。

(2)一个模块中存储多个类:
在这里插入图片描述
(3)从一个模块导入多个类时,用逗号分隔各个类:
在这里插入图片描述
(4)导入整个模块:
在这里插入图片描述
(5)在一个模块中导入另一个模块:
在这里插入图片描述
10.Python标准库
(1)Python标准库是一组模块,安装的Python都包含它。
(2)标准库中的模块collections,其中的一个类OrderedDict:
字典让你能够将信息关联起来,但它们不能记录你添加键值对的顺序,要创建字典并记录其中的键值对的添加顺序可使用模块collections中的一个类,OrderedDict。
在这里插入图片描述
11.类的编码习惯:
(1)类名应采用驼峰命名法,即将类名中的每个单词的首字母都大写,而不使用下划线。
(2)实例名和模块名都采用小写格式,并在单词之间加上下划线。
(3)在类中可使用一个空格来分隔方法,而在模块中可以使用两个空格来分隔类。

  • 15
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值