摘要:python一些入门基础总结
前言:这几天着手学爬虫,前4天把python基础过一遍,这篇文章是python入门基础的总结
变量和简单数据类型
用引号括起的都是字符串,单引号和双引号都可以
1 | name = "ada lovelace" |
title()首字母大写
1 | print(name.title()) |
upper()全部大写
1 | print(name.upper()) |
lower()全部小写
1 | name = "ABCD" |
合并(拼接)字符串
1 | first_name = 'ada' |
\t制表符,\n换行
1 | print("\tpython".title()) |
rstrip()删除字符串末尾多余的空白
1 | favorite_language = ' hello python ' |
lstrip()删除字符串开头多余的空白
1 | print(favorite_language.lstrip()) |
strip()删除字符串两端的空白
1 | print(favorite_language.strip()) |
python使用两个乘号表示乘方运算
1 | print(3 ** 2) |
python支持运算次序,可以使用括号来修改运算次序
1 | print(2 + 3 * 4) |
str()将非字符串表示成字符串
1 | age = 23 |
python2.7中:,计算整数结果时,采取的方式不是四舍五入,而是将小数部分直接删除。
1 | print(3/2) |
在Python 2中,若要避免这种情况,务必确保至少有一个操作数为浮点数,这样结果也将为浮点数
1 | print(3.0/2) |
注释
1 |
|
Python之禅
1 |
|
列表
特性
- 列表由一系列按特定顺序排列的元素组成。
- 其中的元素之间可以没有任何关系。
- 索引从0 而不是1 开始。
- 通过将索引指定为-1,可让Python返回最后一个列表元素。
1 | arr = ['a',8,'c','d'] |
修改、添加和删除元素
修改列表元素
通过列表下标修改元素
1 |
|
在列表中添加元素
1、在列表末尾添加元素
使用方法append()将元素添加到了列表末尾
1 |
|
2、在列表中插入元素
使用方法insert()可在列表的任何位置添加新元素。
1 |
|
从列表中删除元素
1、使用del语句删除元素
如果知道要删除的元素在列表中的位置,可使用del语句。
1 |
|
2、使用方法pop()删除元素
方法pop()可删除列表末尾的元素,并让你能够接着使用它。术语弹出(pop)源自这样的类
比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。
1 |
|
3、弹出列表中任何位置处的元素
实际上,可以使用pop()来删除列表中任何位置的元素,只需在括号中指定要删除的元素
的索引即可。
1 |
|
如果你不确定该使用del语句还是pop()方法,下面是一个简单的判断标准:如果你要从列表
中删除一个元素,且不再以任何方式使用它,就使用del语句;如果你要在删除元素后还能继续
使用它,就使用方法pop()。
4、根据值删除元素
如果你只知道要删除的元素的值,可使用方法remove()。
1 |
|
注意:方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要
使用循环来判断是否删除了所有这样的值。
组织列表
1、使用方法sort()对列表进行永久性排序
方法sort()是永久性地修改了列表元素的排列顺序,再也无法恢复到原来的排列顺序。
1 |
|
还可以按与字母顺序相反的顺序排列列表元素,为此,只需向sort()方法传递参数
reverse=True。下面的示例将汽车列表按与字母顺序相反的顺序排列:
1 |
|
2、使用函数sorted()对列表进行临时排序
要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()。函数
sorted()让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。
1 |
|
3、倒着打印列表
要反转列表元素的排列顺序,可使用方法reverse()。
1 |
|
4、确定列表的长度
使用函数len()可快速获悉列表的长度。
1 |
|
操作列表
遍历整个列表
1 |
|
创建数值列表
1、使用函数range()
Python函数range()让你能够轻松地生成一系列的数字。例如,可以像下面这样使用函数
range()来打印一系列的数字:
1 |
|
2、使用range()创建数字列表
要创建数字列表,可使用函数list()将range()的结果直接转换为列表。如果将range()作为list()的参数,输出将为一个数字列表。
1 |
|
3、对数字列表执行简单的统计计算
1 |
|
4、列表解析
1 |
|
4、列表解析(切片)
要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range()一样,Python在到达你指定的第二个索引前面的元素后停止。要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0、1和2的元素。
1 |
|
5、遍历切片
如果要遍历列表的部分元素,可在for循环中使用切片。
1 |
|
6、复制列表
要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。
这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。
1 |
|
元组
Python将不能修改的值称为不可变的,而不可变的列表被称为元组。
定义元组
元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来
访问其元素,就像访问列表元素一样。
1 |
|
遍历元组中的所有值
像列表一样,也可以使用for循环来遍历元组中的所有值:
1 |
|
修改元组变量
虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述矩形的尺
寸,可重新定义整个元组:
1 |
|
if语句
简单示例:
1 |
|
检查多个条件
使用and检查多个条件,如果每个测试都通过了,整个表达式就为True;如果至少有一个测试没有通过,整个表达式就为False。
关键字or也能够让你检查多个条件,但只要至少有一个条件满足,就能通过整个测试。
1 |
|
检查特定值是否包含在列表中
要判断特定的值是否已包含在列表中,可使用关键字in。
1 |
|
检查特定值是否不包含在列表中
有些时候,确定特定的值未包含在列表中很重要;在这种情况下,可使用关键字not in。
1 |
|
if-elif-else 结构
1 |
|
测试多个条件
1 |
|
字典
在Python中,字典是一系列键—值对。每个键都与一个值相关联,你可以使用键来访问与之相关联的值,可将任何Python对象用作字典中的值。
在Python中,字典用放在花括号{}中的一系列键—值对表示,如示例所示:
1 |
|
1、添加键值对
1 |
|
2、修改字典中的值
1 |
|
3、删除键—值对
对于字典中不再需要的信息,可使用del语句将相应的键—值对彻底删除。使用del语句时,必须指定字典名和要删除的键。
1 |
|
4、遍历字典
遍历所有的键—值对
方法items()它返回一个键—值对列表。
1 |
|
遍历字典中的所有键
方法keys()它返回一个键
1 |
|
按顺序遍历字典中的所有键
1 |
|
遍历字典中的所有值
使用方法values(),它返回一个值列表,而不包含任何键。
1 |
|
用户输入和while循环
函数input()
函数input()让程序暂停运行,等待用户输入一些文本。获取用户输入后,Python将其存储在
一个变量中,以方便你使用。input()将输入解读为字符串。
1 |
|
函数int()
使用函数int(),它让Python将输入视为数值。函数int()将数字的字符串表示转换为数值表示。
1 |
|
求模运算符
求模运算符(%),它将两个数相除并返回余数。
1 |
|
使用while 循环
1 |
|
函数
定义函数
1 |
|
形参和实参
在函数greet_user()的定义中,变量username是一个形参——函数完成其工作所需的一项信息。在代码greet_user(‘jesse’)中,值’jesse’是一个实参。实参是调用函数时传递给函数的信息。我们调用函数时,将要让函数使用的信息放在括号内。在greet_user(‘jesse’)中,将实参’jesse’传递给了函数greet_user(),这个值被存储在形参username中。
位置实参
你调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的一个形参。为此,
最简单的关联方式是基于实参的顺序。这种关联方式被称为位置实参。
- 调用函数多次
- 位置实参的顺序很重要
1 |
|
关键字实参
关键字实参是传递给函数的名称—值对。你直接在实参中将名称和值关联起来了,因此向函数传递实参时不会混淆(不会得到名为Hamster的harry这样的结果)。关键字实参让你无需考虑函数调用中的实参顺序,还清楚地指出了函数调用中各个值的用途。
1 |
|
默认值
编写函数时,可给每个形参指定默认值。在调用函数中给形参提供了实参时,Python将使用指定的实参值;否则,将使用形参的默认值。因此,给形参指定默认值后,可在函数调用中省略相应的实参。使用默认值可简化函数调用,还可清楚地指出函数的典型用法。
1 |
|
返回值
在函数中,可使用return语句将值返回到调用函数的代码行。
1 |
|
让实参变成可选的
1 |
|
返回字典
函数可返回任何类型的值,包括列表和字典等较复杂的数据结构。
1 |
|
传递列表
1 |
|
禁止函数修改列表
可向函数传递列表的副本而不是原件;这样函数所做的任何修改都只影响副本,而丝毫不影响原件。要将列表的副本传递给函数,可以像下面这样做:
1 |
|
传递任意数量的实参
1 |
|
结合使用位置实参和任意数量实参
如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。
1 |
|
使用任意数量的关键字实参
1 |
|
将函数存储在模块中
导入整个模块
import语句允许在当前运行的程序文件中使用模块中的代码。
1 |
|
导入特定的函数
1 |
|
使用as 给函数指定别名
1 |
|
使用as 给模块指定别名
1 |
|
导入模块中的所有函数
1 |
|
类
1 |
|
方法__init__()是一个特殊的方法,每当你根据Dog类创建新实例时,Python都会自动运行它。在这个方法的名称中,开头和末尾各有两个下划线,这是一种约定,旨在避免Python默认方法与普通方法发生名称冲突。我们将方法__init__()定义成了包含三个形参:self、name和age。在这个方法的定义中,形参self必不可少,还必须位于其他形参的前面。为何必须在方法定义中包含形参self呢?因为Python调用这个__init__()方法来创建Dog实例时,将自动传入实参self。每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
继承
一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
1 |
|
创建子类时,父类必须包含在当前文件中,且位于子类前面。我们定义了子类ElectricCar。定义子类时,必须在括号内指定父类的名称。方法__init__()接受创建Car实例所需的信息。super()是一个特殊函数,帮助Python将父类和子类关联起来。这行代码让Python调用ElectricCar的父类的方法__init__(),让ElectricCar实例包含父类的所有属性。父类也称为超类(superclass),名称super因此而得名。
导入类
1 |
|
顺序字典
要创建字典并记录其中的键—值对的添加顺序,可使用模块collections中的OrderedDict类。OrderedDict实例的行为几乎与字典相同,区别只在于记录了键—值对的添加顺序。
1 |
|
文件和异常
从文件中读取数据
1 |
|
逐行读取
1 |
|
写入文件
打开文件时,可指定读取模式(’r’)、写入模式(’w’)、附加模式(’a’)或让你能够读取和写入文件的模式(’r+’)。如果你省略了模式实参,Python将以默认的只读模式打开文件。
1 |
|
写入多行
函数write()不会在你写入的文本末尾添加换行符,因此如果你写入多行时没有指定换行符,文件看起来可能不是你希望的那样。
1 |
|
附加到文件
如果你要给文件添加内容,而不是覆盖原有的内容,可以附加模式打开文件。你以附加模式打开文件时,Python不会在返回文件对象前清空文件,而你写入到文件的行都将添加到文件末尾。如果指定的文件不存在,Python将为你创建一个空文件。
1 |
|
异常
异常是使用try-except代码块处理的。try-except代码块让Python执行指定的操作,同时告诉Python发生异常时怎么办。使用了try-except代码块时,即便出现异常,程序也将继续运行:显示你编写的友好的错误消息,而不是令用户迷惑的traceback。
使用try-except代码块
1 |
|
else 代码块
try-except-else代码块的工作原理大致如下:Python尝试执行try代码块中的代码;只有可能引发异常的代码才需要放在try语句中。有时候,有一些仅在try代码块成功执行时才需要运行的代码;这些代码应放在else代码块中。except代码块告诉Python,如果它尝试运行try代码块中的代码时引发了指定的异常,该怎么办。
1 |
|
处理FileNotFoundError 异常
使用文件时,一种常见的问题是找不到文件:你要查找的文件可能在其他地方、文件名可能不正确或者这个文件根本就不存在。对于所有这些情形,都可使用try-except代码块以直观的方式进行处理。
1 |
|
分析文本
1 |
|
存储数据
使用json.dump()和json.load()
1 |
|
- 本文作者: th3ee9ine
- 本文链接: https://www.blog.ajie39.top/2021/05/05/python基础/
- 版权声明: 本博客所有文章除特别声明外,均采用 LICENSE 下的许可协议。转载请注明出处!