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了

posted @ 2021-01-31 22:09  ag6  阅读(113)  评论(0)    收藏  举报