1. Python 是一个解释性、编译性、互动性和面向对象的脚本语言
2. python标识符:
第一个字符必须是字母表中字母或下划线 _ 。
标识符的其他的部分由字母、数字和下划线组成。
标识符对大小写敏感。
Python 3 中,可以用中文作为变量名,非 ASCII 标识符也是允许的
3. 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码
4. python保留字:保留字即关键字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字
>>> import keyword >>> keyword.kwlist ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
5. 注释:
Python中单行注释以 # 开头
多行注释可以用多个 # 号,还有 ''' 和 """
6. 行与缩进
python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {}
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数
语句缩进数的空格数不一致,会导致运行错误
7. 多行语句
Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠 \ 来实现多行语句
total = item_one + \
item_two + \
item_three
str1 = "1111 \
2222 \
3333"
在 [], {}, 或 () 中的多行语句,不需要使用反斜杠 \
8. 数字类型:python中数字有四种类型:整数、布尔型、浮点数和复数。
int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
bool (布尔), 如 True。
float (浮点数), 如 1.23、3E-2
complex (复数), 如 1 + 2j、 1.1 + 2.2j
9.字符串类型:
Python 中单引号 ' 和双引号 " 使用完全相同。
使用三引号(''' 或 """)可以指定一个多行字符串。
转义符 \。
反斜杠可以用来转义,使用 r 可以让反斜杠不发生转义。 如 r"this is a line with \n" 则 \n 会显示,并不是换行。
按字面意义级联字符串,如 "this " "is " "string" 会被自动转换为 this is string。
字符串可以用 + 运算符连接在一起,用 * 运算符重复。
Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
Python 中的字符串不能改变。
Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
字符串的截取的语法格式如下:变量[头下标:尾下标:步长]
10. 空行
函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
空行与代码缩进不同,空行并不是 Python 语法的一部分。书写时不插入空行,Python 解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
空行也是程序代码的一部分。
11. 等待用户输入: input("\n\n按下 enter 键后退出。")
12. 同一行显示多条语句:Python 可以在同一行中使用多条语句,语句之间使用分号 ; 分割
13. 多个二语句构成代码组
缩进相同的一组语句构成一个代码块,我们称之代码组。
像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。
将首行及后面的代码组称为一个子句(clause)。
14. print输出: print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=""
15. import 与 from...import
在 python 用 import 或者 from...import 来导入相应的模块。
将整个模块(somemodule)导入,格式为: import somemodule
从某个模块中导入某个函数,格式为: from somemodule import somefunction
从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入,格式为: from somemodule import *
16.命令行参数:很多程序可以执行一些操作来查看一些基本信息,Python可以使用-h参数查看各参数帮助信息
17. python3数据类型:
Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
等号(=)用来给变量赋值。
等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。
多个变量赋值:Python允许你同时为多个变量赋值 a = b = c = 1 a, b, c = 1, 2, "runoob"
标准数据类型: Number(数字)String(字符串)List(列表)Tuple(元组)Set(集合)Dictionary(字典)
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
18. Number(数字):
Python3 支持 int、float、bool、complex(复数)。
在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
内置的 type() 函数可以用来查询变量所指的对象类型。
还可以用 isinstance 来判断
isinstance 和 type 的区别在于:
type()不会认为子类是一种父类类型。
isinstance()会认为子类是一种父类类型。
Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回 True,但可以通过 is 来判断类型。
在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。
issubclass(bool, int) is True is False 变量指定一个值时,对象就会被创建;也可以使用del语句删除一些对象引用;通过使用del语句删除单个或多个对象 del var1 del var1 var2 数字运算: 1、Python可以同时为多个变量赋值,如a, b = 1, 2。 2、一个变量可以通过赋值指向不同类型的对象。 3、数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数(当除数和被除数都为整数时,// 得到的并不一定是整数类型的数,它与分母分子的数据类型有关系)。 4、在混合计算时,Python会把整型转换成为浮点数。 5. Python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型 6. 在交互模式中,最后被输出的表达式结果被赋值给变量 _ , _ 变量应被用户视为只读变量 数值类型转化: int(x) 将x转换为一个整数。 float(x) 将x转换到一个浮点数。 complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。 complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。 数学函数:
随机数函数:
三角函数:
数学常量:
19. string 字符串
Python中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符
字符串的截取的语法格式:变量[头下标:尾下标:步长] 。 索引值以 0 为开始值,-1 为从末尾的开始位置。字符串更新可以截取字符串的一部分并与其他字段拼接
加号 + 是字符串的连接符, 星号 * 表示复制当前字符串,与之结合的数字为复制的次数
Python 使用反斜杠 \ 转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串
反斜杠(\)可以作为续行符,表示下一行是上一行的延续。也可以使用 """...""" 或者 '''...''' 跨越多行
Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用
与 C 字符串不同的是,Python 字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm'会导致错误
字符串内建函数:
序号 | 方法及描述 |
---|---|
1 |
capitalize() |
2 |
center(width, fillchar) 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 |
3 |
count(str, beg= 0,end=len(string)) 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
4 |
bytes.decode(encoding="utf-8", errors="strict") Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 |
5 |
encode(encoding='UTF-8',errors='strict') 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace' |
6 |
endswith(suffix, beg=0, end=len(string)) |
7 |
expandtabs(tabsize=8) 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 |
8 |
find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
9 |
index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在字符串中会报一个异常。 |
10 |
isalnum() 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
11 |
isalpha() 如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False |
12 |
isdigit() 如果字符串只包含数字则返回 True 否则返回 False.. |
13 |
islower() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
14 |
isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False |
15 |
isspace() 如果字符串中只包含空白,则返回 True,否则返回 False. |
16 |
istitle() 如果字符串是标题化的(见 title())则返回 True,否则返回 False |
17 |
isupper() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
18 |
join(seq) 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
19 |
len(string) 返回字符串长度 |
20 |
ljust(width[, fillchar]) 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
21 |
lower() 转换字符串中所有大写字符为小写. |
22 |
lstrip() 截掉字符串左边的空格或指定字符。 |
23 |
maketrans() 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
24 |
max(str) 返回字符串 str 中最大的字母。 |
25 |
min(str) 返回字符串 str 中最小的字母。 |
26 |
replace(old, new [, max]) 把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。 |
27 |
rfind(str, beg=0,end=len(string)) 类似于 find()函数,不过是从右边开始查找. |
28 |
rindex( str, beg=0, end=len(string)) 类似于 index(),不过是从右边开始. |
29 |
rjust(width,[, fillchar]) 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
30 |
rstrip() 删除字符串末尾的空格或指定字符。 |
31 |
split(str="", num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 |
32 |
splitlines([keepends]) 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
33 |
startswith(substr, beg=0,end=len(string)) 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
34 |
strip([chars]) 在字符串上执行 lstrip()和 rstrip() |
35 |
swapcase() 将字符串中大写转换为小写,小写转换为大写 |
36 |
title() 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
37 |
translate(table, deletechars="") 根据 table 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
38 |
upper() 转换字符串中的小写字母为大写 |
39 |
zfill (width) 返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
40 |
isdecimal() 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |
20. 列表
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。列表的数据项不需要具有相同的类型,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
列表是写在方括号 [] 之间、用逗号分隔开的元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
列表截取的语法格式:变量[头下标:尾下标], 索引值以 0 为开始值,-1 为从末尾的开始位置。
加号 + 是列表连接运算符,星号 * 是重复操作
与Python字符串不一样的是,列表中的元素是可以改变的
List 内置了有很多方法,例如 append()、pop() 等等
Python 列表截取可以接收第三个参数,参数作用是截取的步长, 如果第三个参数为负数表示逆向读取
列表都可以进行的操作包括索引,切片,加,乘,检查成员。
Python 已经内置确定序列的长度以及确定最大和最小的元素的方法
访问列表中的值: 与字符串的索引一样,列表索引从 0 开始,第二个索引是 1,索引也可以从尾部开始,最后一个元素的索引为 -1,往前一位为 -2,使用下标索引来访问列表中的值,同样你也可以使用方括号 [] 的形式截取字符
更新列表:对列表的数据项进行修改或更新,也可以使用 append() 方法来添加列表项
删除列表:使用 del 语句来删除列表的的元素
列表脚本操作符:列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
嵌套列表:使用嵌套列表即在列表里创建其它列表
列表比较:引入 operator 模块的 eq 方法; operator.eq(a,b)
Python列表函数&方法:
21. Tuple(元组):
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。
元组中的元素类型也可以不相同
元组与字符串类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。也可以进行截取。 可以把字符串看作一种特殊的元组
虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。
构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:tup1 = () # 空元组 tup2 = (20,) # 一个元素,需要在元素后添加逗号
元组也可以使用+操作符进行拼接
元组中只包含一个元素时,需要在元素后面添加逗号 , ,否则括号会被当作运算符使用
元组与字符串类似,下标索引从 0 开始,可以进行截取,组合等
元组可以使用下标索引来访问元组中的值
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组 del tup
元组运算符: 与字符串一样,元组之间可以使用 + 号和 * 号进行运算。 这就意味着他们可以组合和复制,运算后会生成一个新的元组
元组也是一个序列,可以访问元组中的指定位置的元素,也可以截取索引中的一段元素
元组内置函数:
关于元组是不可变的:所谓元组的不可变指的是元组所指向的内存中的内容不可变。 重新赋值的元组 ,绑定到新的对象了,不是修改了原来的对象
22.Set(集合)
集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。
基本功能是进行成员关系测试和删除重复元素。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:parame = {value01,value02,...} 或者 set(value)
a - b # 集合a中包含而集合b中不包含的元素
a | b # 集合a或b中包含的所有元素
a & b # 集合a和b中都包含了的元素
a ^ b # 不同时包含于a和b的元素
集合内置方法:
23. Dictionary(字典)
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是另一种可变容器模型,且可存储任意类型对象。
字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
字典的关键字必须为不可变类型,且不能重复。键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
构造函数 dict() 可以直接从键值对序列中构建字典 dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)]) dict(Runoob=1, Google=2, Taobao=3)
dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict。
字典类型也有一些内置的函数,例如 clear()、keys()、values() 等
创建空字典使用 { } dict()
访问字典值:把相应的键放入到方括号中, 如果用字典里没有的键访问数据,会输出错误
修改字典: 向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对
删除字典元素: 能删单一的元素也能清空字典,清空只需一项操作。 显式删除一个字典用del命令 del tinydict['Name'] del tinydict tinydict.clear() 但这会引发一个异常,因为用执行 del 操作后字典不再存在
字典键的特性:
字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行
两个重要的点需要记住:1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
字典内置函数&方法:
24. Python数据类型转换
Python 数据类型转换可以分为两种:
隐式类型转换 - 自动完成
(对两种不同类型的数据进行运算,较低数据类型(整数)就会转换为较高数据类型(浮点数)以避免数据丢失;整型和字符串类型运算结果会报错,输出 TypeError。 Python 在这种情况下无法使用隐式转换)
显式类型转换 - 需要使用类型函数来转换
25.Python 推导式
Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。
Python 支持各种数据结构的推导式:
列表(list)推导式
[表达式 for 变量 in 列表] [out_exp_res for out_exp in input_list] 或者 [表达式 for 变量 in 列表 if 条件] [out_exp_res for out_exp in input_list if condition]
字典(dict)推导式
{ key_expr: value_expr for value in collection } 或 { key_expr: value_expr for value in collection if condition }
集合(set)推导式
{ expression for item in Sequence } 或 { expression for item in Sequence if conditional }
元组(tuple)推导式
(expression for item in Sequence ) 或 (expression for item in Sequence if conditional )
元组推导式和列表推导式的用法也完全相同,只是元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是中括号 [],另外元组推导式返回的结果是一个生成器对象。
26. Python3 运算符
Python 语言支持以下类型的运算符: 算术运算符 比较关系运算符 赋值运算符 逻辑运算符 位运算符 成员运算符 身份运算符 运算符优先级
算术运算符:+ - * / % ** //
比较关系运算符:== != > < >= <=
赋值运算符: = += -= *= /= %= **= //= :=
位运算符: & | ^ ~ << >>
逻辑运算符: and (布尔"与" - 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值。) 10 and 20 ===20
or(布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。) 10 or 20 === 10
not(布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。) not (10 and 20) === False
成员运算符: in not in
身份运算符:
is ( is 是判断两个标识符是不是引用自一个对象) x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not (is not 是判断两个标识符是不是引用自不同对象) x is not y , 类似 id(x) != id(y)。如果引用的不是同一个对象则返回结果 True,否则返回 False。
id() 函数用于获取对象内存地址
is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。
运算符优先级:
以下表格列出了从最高到最低优先级的所有运算符, 相同单元格内的运算符具有相同优先级。 相同单元格内的运算符从左至右分组(除了幂运算是从右至左分组)
and 比 or 拥有更高优先级:
Python3 已不支持 <> 运算符,可以使用 != 代替
27.