python(基础篇杂记 1~11章)
面向过程、面向对象
2.2
message = "Hello Python world!"
print(message)
2.2.1
·变量名只能包含字母、数字、下划线,不能包含空格
·名称错误通常两种情况:忘记给它赋值,输入变量名时拼写错误
2.3
字符串string就是一系列字符。在python中,用引号括起的都是字符串(单、双引号)
2.3.1
name = "ada lovelace"
print(name.title())
low(),转换为小写
3.1.2
索引从0而不是1开始
3.2.2
append(),在列表末尾添加元素
insert(),在列表钟插入元素
3.2.3
del(),删除元素
pop(),删除元素,可接下来使用它的值
remove(),不知道值所处的位置,只知道元素的值。删除元素,可接着使用它的值,
只删除第一个指定的值,如果需要删除的值在列表中出现多次,需要使用循环来判断是否删除所有。
3.3.1
sort(),对列表永久性排序,字母顺序
sort(reverse=True),字母顺序反序
3.3.2
sorted(),对列表临时排序
sorted(reverse=True),字母顺序反序
3.3.3
reverse(),列表顺序反序,永久性
3.3.4
len(),列表的长度
4.1.2
在for循环中,想包含多少行代码都可以。
每个缩进的代码行都是循环的一部分,且将针对列表中的每个值都执行一次。
换行符"\n"
4.2.1
IndentationError: expected an indented block
4.2.3
IndentationError: unexpected indent
4.3.1
range(),生成一系列的数字
函数range()让Python从你指定的第一个值开始数,并在到达你指定的第二个值后停止
使用range()时,如果输出不符合预期,请尝试将指定的值加1或减1。
4.3.2
list(),创建列表
两个星号(**)表示乘方运算
4.3.3
min(), max(), sum(),
4.3.4
列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。
squares = [value**2 for value in range(1,11)]
4.4.1
切片 print(players[0:3])
如果你没有指定第一个索引,Python将自动从列表开头开始:print(players[:4])
要让切片终止于列表末尾,也可使用类似的语法,print(players[2:])
4.4.3
falafel,carrot cake,cannoli
4.5
Python将不能修改的值称为不可变的,而不可变的列表被称为元组。tuple
虽然不能修改元组的元素,但可以给存储元组的变量赋值
相比于列表,元组是更简单的数据结构。如果需要存储的一组值在程序的整个生命周期内都
不变,可使用元组。
4.6.1
Python改进提案(Python Enhancement Proposal,PEP)
https://python.org/dev/peps/pep-0008/
4.6.2
PEP 8建议每级缩进都使用四个空格
4.6.3
很多Python程序员都建议每行不超过80字符
PEP 8还建议注释的行长都不超过72字符
5.2
每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试
5.2.2
在Python中检查是否相等时区分大小写
>>> car = 'Audi'
>>> car.lower() == 'audi'
True
5.2.3
要判断两个值是否不等,可结合使用惊叹号和等号(!=),其中的惊叹号表示不,在很多编
程语言中都如此。
anchovies小银鱼
5.2.5
使用and检查多个条件
使用or检查多个条件
5.2.6
要判断特定的值是否已包含在列表中,可使用关键字in
5.2.7
还有些时候,确定特定的值未包含在列表中很重要;在这种情况下,可使用关键字not in。
5.3.2
if-else
5.3.3
if-elif-else
5.3.5
else是一条包罗万象的语句,只要不满足任何if或elif中的条件测试,其中的代码就会执行,
这可能会引入无效甚至恶意的数据。如果知道最终要测试的条件,应考虑使用一个elif代码块来
代替else代码块。这样,你就可以肯定,仅当满足相应的条件时,你的代码才会执行。
5.3.6
总之,如果你只想执行一个代码块,就使用if-elif-else结构;如果要运行多个代码块,就
使用一系列独立的if语句。
plain
5.5
在条件测试的格式设置方面,PEP 8提供的唯一
建议是,在诸如==、>=和<=等比较运算符两边各添加一个空格
6.1
alien
6.2
在Python中,字典是一系列键—值对。
与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对
象用作字典中的值。
在Python中,字典用放在花括号{}中的一系列键—值对表示
键—值对是两个相关联的值。指定键时,Python将返回与之相关联的值。
键和值之间用冒号分隔,而键—值对之间用逗号分隔。
在字典中,你想存储多少个键—值对都可以。
6.2.1
要获取与键相关联的值,可依次指定字典名和放在方括号内的键
6.2.5
使用del语句时, 必须指定字典名和要删除的键。
6.3.1
for key, value in user_0.items():
键-值-字典
~书上看了
7.1
input(),程序等待用户输入,并在用户按回车键后继续运行
7.1.2
使用函数input()时,Python将用户输入解读为字符串
int()
7.1.3
处理数值信息时,求模运算符(%)是一个很有用的工具,它将两个数相除并返回余数
求模运算符不会指出一个数是另一个数的多少倍,而只指出余数是多少
even_or_odd,偶数奇数
7.1.4
如果你使用的是Python 2.7,应使用函数raw_input()来提示用户输入。这个函数与Python 3
中的input()一样,也将输入解读为字符串。
7.2.1
current_number += 1(代码current_number = current_number +1的简写)
7.2.3 使用标志
可让程序在标志为True时继续运行,并在任何事件导致标志的值为False时让程序停止运行
7.2.4 使用 break 退出循环
7.2.5 在循环中使用continue
要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue语句,它不像break语句那样不再执行余下的代码并退出整个循环。
7.2.6 避免无限循环
如果程序陷入无限循环,可按Ctrl + C,也可关闭显示程序输出的终端窗口。
有些编辑器(如Sublime Text)内嵌了输出窗口,这可能导致难以结束无限循环,因此不得不关闭编辑器来结束无限循环。
7.3
for循环是一种遍历列表的有效方式,但在for循环中不应修改列表,否则将导致Python难以跟踪其中的元素。要在遍历列表的同时对其进行修改,可使用while循环。
7.3.3
polling
8.1
定义函数 def greet_user():
文档字符串(docstring)文档字符串用三引号括起,Python使用它们来生成有关程序中函数的文档。
8.1.2
在函数greet_user()的定义中,变量username是一个形参——函数完成其工作所需的一项信息。在代码greet_user('jesse')中,值'jesse'是一个实参。实参是调用函数时传递给函数的信息。
~8.5.1,数据丢失了,没保存到。
8.6 将函数存储在模块中
mport语句允许在当前运行的程序文件中使用模块中的代码。
8.6.1
要让函数是可导入的,得先创建模块。模块是扩展名为.py的文件,包含要导入到程序中的代码。
要调用被导入的模块中的函数,可指定导入的模块的名称pizza和函数名make_pizza(),并用句点分隔它们
8.6.2 导入特定的函数
你还可以导入模块中的特定函数,这种导入方法的语法如下:
from module_name import function_name
通过用逗号分隔函数名,可根据需要从模块中导入任意数量的函数
若使用这种语法,调用函数时就无需使用句点。由于我们在import语句中显式地导入了函数make_pizza(),因此调用它时只需指定其名称。
8.6.3 使用as 给函数指定别名
8.6.5 导入模块中的所有函数
使用星号(*)运算符可让Python导入模块中的所有函数:
8.7
编写函数时,需要牢记几个细节。应给函数指定描述性名称,且只在其中使用小写字母和下划线
如果程序或模块包含多个函数,可使用两个空行将相邻的函数分开,这样将更容易知道前一个函数在什么地方结束,下一个函数从什么地方开始。
所有的import语句都应放在文件开头,唯一例外的情形是,在文件开头使用了注释来描述整个程序。
9.1创建和使用类
使用类几乎可以模拟任何东西。
9.1.1
init 初始化
根据约定,在Python中,首字母大写的名称指的是类。这个类定义中的括号是空的,因为我们要从空白创建这个类
方法__init__(),类中的函数称为方法
像这样可通过实例访问的变量称为属性。
9.2
odometer里程表
mileage 里程数
9.3
编写类时,并非总是要从空白开始。如果你要编写的类是另一个现成类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定自己的属性和方法。
9.3.1 子类
super()是一个特殊函数,帮助Python将父类和子类关联起来
9.4.4
语法module_name.class_name
9.5 py标准库
要创建字典并记录其中的键—值对的添加顺序,可使用模块collections中的OrderedDict类。OrderedDict实例的行为几乎与字典相同,区别只在于记录了键—值对的添加顺序。
9.6 类编码风格
类名应采用驼峰命名法,即将类名中的每个单词的首字母都大写,而不使用下划线。实例名和模块名都采用小写格式,并在单词之间加上下划线。
在类中,可使用一个空行来分隔方法;而在模块中,可使用两个空行来分隔类。
10.1.1
也可从本书的配套网站(https://www.nostarch.com/pythoncrashcourse/)下载该文件
函数open()接受一个参数:要打开的文件的名称
关键字with在不再需要访问文件后将其关闭
方法read()
,Python方法rstrip()删除(剥除)字符串末尾的空白
10.1.2
相对文件路径
在Linux和OS X中,你可以这样编写代码:with open('text_files/filename.txt') as file_object:
这行代码让Python到文件夹python_work下的文件夹text_files中去查找指定的.txt文件。在Windows系统中,在文件路径中使用反斜杠(\)而不是斜杠(/):with open('text_files\filename.txt') as file_object:
绝对路径通常比相对路径更长,因此将其存储在一个变量中,再将该变量传递给open()会有所帮助。在Linux和OS X中,绝对路径类似于下面这样:
file_path = '/home/ehmatthes/other_files/text_files/filename.txt'
with open(file_path) as file_object:
而在Windows系统中,它们类似于下面这样:
file_path = 'C:\Users\ehmatthes\other_files\text_files\filename.txt'
with open(file_path) as file_object:
10.1.5
读取文本文件时,Python将其中的所有文本都解读为字符串。如果你读取的是数字,并要将其作为数值使用,就必须使用函数int()将其转换为整数,或使用函数float()将其转换为浮点数。
10.2.1 写入空文件
打开文件时,可指定读取模式('r')、写入模式('w')、附加模式('a')或让你能够读取和写入文件的模式('r+')。如果你省略了模式实参,Python将以默认的只读模式打开文件。
如果你要写入的文件不存在,函数open()将自动创建它。然而,以写入('w')模式打开文件时千万要小心,因为如果指定的文件已经存在,Python将在返回文件对象前清空该文件。
Python只能将字符串写入文本文件。要将数值数据存储到文本文件中,必须先使用函数str()将其转换为字符串格式。
10.2.3 附加到文件
如果你要给文件添加内容,而不是覆盖原有的内容,可以附加模式打开文件。你以附加模式打开文件时,Python不会在返回文件对象前清空文件,而你写入到文件的行都将添加到文件末尾。如果指定的文件不存在,Python将为你创建一个空文件。
10.3
异常是使用try-except代码块处理的
10.3.1 ZeroDivisionError
10.3.2 try-except 代码块
10.3.4try-except-else代码块
10.3.5 FileNotFoundError
directory
10.3.6
本节使用的文本来自项目Gutenberg(http://gutenberg.org/)
方法split()以空格为分隔符将字符串分拆成多个部分,并将这些部分都存储到一个列表中
10.3.8
Python有一个pass语句,可在代码块中使用它来让Python什么都不要做
10.4
一种简单的方式是使用模块json来存储数据
JSON(JavaScript Object Notation)格式最初是为JavaScript开发的,但随后成了一种常见格式,被包括Python在内的众多语言采用。
10.4.1
函数json.dump()接受两个实参:要存储的数据以及可用于存储数据的文件对象
json.load()
10.4.3
你经常会遇到这样的情况:代码能够正确地运行,但可做进一步的改进——将代码划分为一系列完成具体工作的函数。这样的过程被称为重构。重构让代码更清晰、更易于理解、更容易扩展
11.1.1
Python标准库中的模块unittest提供了代码测试工具
11.1.2
使用了unittest类最有用的功能之一:一个断言方法
调用unittest的方法assertEqual()
11.2.1 各种断言方法
11.2.2
AnonymousSurvey类
11.2.4
unittest.TestCase类包含方法setUp()
运行测试用例时,每完成一个单元测试,Python都打印一个字符:测试通过时打印一个句点;测试引发错误时打印一个E;测试导致断言失败时打印一个F。
第一 part over了

浙公网安备 33010602011771号