前言:
Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建;
在 Python 中,变量就是变量,它没有类型,我们所说的”类型”是变量所指的内存中对象的类型
Python 变量类型
(1)变量存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间
(2)基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中
(3)因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符
变量赋值
(1)Python 中的变量赋值不需要类型声明
(2)每个变量在内存中创建,都包括变量的标识,名称和数据这些信息
(3)每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建
(4)等号=用来给变量赋值
(5)等号=运算符左边是一个变量名,等号=运算符右边是存储在变量中的值
1 | counter = 100 |
输出结果:
1 | 整数:100 |
多个变量赋值
(1)Python允许你同时为多个变量赋值,例如:创建一个整型对象,值为1,三个变量被分配到相同的内存空间上
1 | > a = b = c = 1 |
(2)多个对象指定多个变量,例如:两个整型对象1和2分别分配给变量a和b,字符串对象john分配给变量c
1 | > a, b, c = 1, 2, "john" |
标准数据类型
(1)Python3定义了*六个标准数据类型,用于存储各种类型的数据:
- Numbers(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合) # Python3以下版本无此数据类型
- Dictionary(字典)
(2)
- 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)
- 有序:列表list、字典dict(python3.6之后)、Tuple(元组)、Number(数字)、String(字符串)
- 无序:字典dict(python3.6之前)、集合set
Number(数字)
(1)Python3支持int、float、bool、complex(复数)
(2)在Python3里,只有一种整数类型int,表示为长整型,没有python2中的Long
(3)像大多数语言一样,数值类型的赋值和计算都是很直观的
(4)内置的type()函数可以用来查询变量所指的对象类型
1 | >>> a, b, c, d = 20, 5.5, True, 4+3j |
(5)此外还可以用isinstance来判断类型
1 | >>> a,b = 111,'111' |
(6)isinstance和type的区别在于:
type()不会认为子类是一种父类类型。isinstance()会认为子类是一种父类类型1
2
3
4
5
6
7
8
9
10
11
12
13
14class A:
pass
class B(A):
pass
isinstance(A(), A)
True
type(A()) == A
True
isinstance(B(), A)
True
type(B()) == A
False
注意:在
Python2中是没有布尔型的,它用数字0表示False,用1表示True。到Python3中,把True和False定义成关键字了,但它们的值还是1和0,它们可以和数字相加
(7)使用del语句删除一些对象引用,del语句的语法是:
1 | del var1[,var2[,var3[....,varN]]] # del语语法 |
数值运算
1 | >>> 5 + 4 # 加法 |
- Python可以同时为多个变量赋值,如a, b = 1, 2
- 一个变量可以通过赋值指向不同类型的对象
- 数值的除法包含两个运算符
/返回一个浮点数,//返回一个整数 - 在混合计算时,Python会把整型转换成为浮点数
数值类型实例
| int | float | complex |
|---|---|---|
| 10 | 0.0 | 3.14j |
| 100 | 15.20 | 45.j |
| -786 | -21.9 | 9.322e-36j |
| 080 | 32.3e+18 | .876j |
| -0490 | -90. | -.6545+0J |
| -0x260 | -32.54e100 | 3e+26J |
| 0x69 | 70.2E-12 | 4.53e-7j |
Python还支持复数,复数由实数部分和虚数部分构成,可以用
a + bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点型
数学函数
1 | import math |
String(字符串)
(1)Python中的字符串用单引号'或双引号"括起来,同时使用反斜杠\转义特殊字符
(2)索引值以0为开始值,-1为从末尾的开始位置
(3)加号+是字符串的连接符,星号*表示复制当前字符串,与之结合的数字为复制的次数
(4)Python使用反斜杠\转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个r,表示原始字符串
1 | >str = 'Runoob' |
(5)Python没有单独的字符类型,一个字符就是长度为1的字符串
(6)Python字符串不能被改变,向一个索引位置赋值,比如word[0]='m'会导致错误
1 | >>> word = 'Python' |
Python字符串格式化
(1)Python支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符%s的字符串中
1 | >>>print ("我叫 %s 今年 %d 岁!" % ('小明', 10)) |
(2)Python字符串格式化符号
| int | float |
|---|---|
| %c | 格式化字符及其ASCII码 |
| %d | 格式化字符串 |
| %d | 格式化整数 |
| %u | 格式化无符号整型 |
| %o | 格式化无符号八进制数 |
| %x | 格式化无符号十六进制数 |
| %X | 格式化无符号十六进制数(大写) |
| %f | 格式化浮点数字,可指定小数点后的精度 |
| %e | 用科学计数法格式化浮点数 |
| %E | 作用同%e,用科学计数法格式化浮点数 |
| %g | %f和%e的简写 |
| %G | %f 和 %E 的简写 |
| %p | 用十六进制数格式化变量的地址 |
f-string
(1)f-string是python3.6之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法,之前我们习惯用百分号(%)
(2)f-string格式化字符串以f开头,后面跟着字符串,字符串中的表达式用大括号{}包起来,它会将变量或表达式计算后的值替换进去,实例如下
1 | > name = 'Runoob' |
(3)用了f-string方式显得更简单,不用再去判断使用%s,还是%d
(4)在Python 3.8的版本中可以使用 = 符号来拼接运算表达式与结果
1 | > x = 1 |
字符串内建函数
1 |
|
List(列表)
(1)List(列表)是Python中使用最频繁的数据类型,列表可以完成大多数集合类的数据结构实现
(2)列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)
(3)列表是写在方括号[]之间、用逗号分隔开的元素列表
(4)和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表
(5)加号+是列表连接运算符,星号*是重复操作
1 | >list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ] |
(6)与Python字符串不一样的是,列表中的元素是可以改变的
1 | > a = [1, 2, 3, 4, 5, 6] |
(7)List内置了有很多方法,例如append()、pop()等等,这在后面会讲到
- List写在方括号之间,元素用逗号隔开
- 和字符串一样,list可以被索引和切片
- List可以使用+操作符进行拼接
- List中的元素是可以改变的
(8)Python列表截取可以接收第三个参数,参数作用是截取的步长,以下实例在索引1到索引4的位置并设置为步长为`2(间隔一个位置)来截取字符串
(9)如果第三个参数为负数表示逆向读取,以下实例用于翻转字符串
1 | def reverseWords(input): |
输出结果为:
1 | ['I', 'like', 'runoob'] |
Python列表函数&方法
1 | # Python 列表 |
Tuple(元组)
(1)元组(tuple)与列表类似,不同之处在于元组的元素不能修改
(2)元组写在小括号()里,元素之间用逗号隔开
(3)元组中的元素类型也可以不相同
(4)元组与字符串类似,可以被索引且下标索引从0开始,-1为从末尾开始的位置,也可以进行截取(字符串可以看作一种特殊的元组)
1 | > tup = (1, 2, 3, 4, 5, 6) |
(5)tuple的元素不可改变,但它可以包含可变的对象,比如list列表
(6)构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则
1 | tup1 = () # 空元组 |
(7)string、list和tuple都属于sequence(序列)
- 与字符串一样,元组的元素不能修改
- 元组也可以被索引和切片,方法一样
- 注意构造包含 0 或 1 个元素的元组的特殊语法规则
- 元组也可以使用+操作符进行拼接
元组运算符与内置函数
1 | # 元组与列表类似,不同之处在于元组的元素不能修改 |
Set(集合)
(1)集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员
(2)基本功能是进行成员关系测试和删除重复元素
(3)可以使用大括号{ }或者set()函数创建集合,注意:创建一个空集合必须用set()而不是{ },因为{ }是用来创建一个空字典
1 | sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu', 'Google'} |
输出结果为:
1 | {'Taobao', 'Google', 'Facebook', 'Runoob', 'Zhihu', 'Baidu'} |
集合的基本操作
1 | # 集合(set)是一个无序的不重复元素序列 |
集合的内置方法
1 | # 创建集合 |
Dictionary(字典)
(1)字典(dictionary)是Python中另一个非常有用的内置数据类型
(2)列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取
(3)字典是一种映射类型,字典用{ }标识,它是一个无序的键(key):值(value)的集合
(4)键(key)必须使用不可变类型,在同一个字典中,键(key)必须是唯一的
1 | dict = {} |
输出结果为:
1 | 1 - 菜鸟教程 |
(5)构造函数dict()可以直接从键值对序列中构建字典如下:
1 | > dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)]) |
(6)字典类型也有一些内置的函数,例如clear()、keys()、values()等
- 字典是一种映射类型,它的元素是键值对
- 字典的关键字必须为不可变类型,且不能重复
- 创建空字典使用
{ }
字典运算符与内置函数
1 | # 字典是另一种可变容器模型,且可存储任意类型对象 |
直接赋值、浅拷贝和深度拷贝解析

Python数据类型转换
(1)
(2)
函数 | 描述
-- | :--: int(x [,base]) | 将 x 转换为一个整数(x为字符串或数字,base为进制数,默认十进制)
float(x) | 将 x 转换到一个浮点数(x为整数或字符串)
complex(real [,imag]) | 创建一个复数(real为int, long, float或字符串,imag为int, long, float)
str(x) | 将对象 x 转换为字符串(x为object对象)
repr(x) | 将对象 x 转换为表达式字符串(x为object对象)
eval(str) | 用来计算在字符串中的有效Python字符串表达式,并返回一个对象
tuple(s) | 将序列 s 转换为一个元组(s为要转换为元组的可迭代序列)
list(s) | 将序列 s 转换为一个列表(s为要转换为列表的元组或字符串)
set(s) | 转换为可变集合(s为要转换为元组的可迭代序列)
dict(d) | 创建一个字典,d 必须是一个(key, value)元组序列
frozenset(s) | 转换为不可变集合(s为可迭代序列,比如列表、字典、元组等等)
chr(x) | 将一个整数转换为一个字符(x可以是10进制也可以是16进制的形式的整数,范围在0~255之内)
ord(x) | 将一个字符转换为它的整数值(x为字符,返回对应的ASCII数值,或者Unicode数值)
hex(x) | 将一个整数转换为一个十六进制字符串(x为10进制整数)
oct(x) | 将一个整数转换为一个八进制字符串(x为整数)
函数具体用法可参考:Python 内置函数
Python运算符优先级
(1)
(2)
运算符 | 描述
– | :–:
** | 指数 (最高优先级)
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
- / % // | 乘,除,求余数和取整除
- | 加法减法
<< | 右移,左移运算符
& | 位 ‘AND’
^ | | 位运算符
<= < > >= | 比较运算符
== != | 等于运算符
= %= /= //= -= += = *= | 赋值运算符
is is not | 身份运算符
in not in | 成员运算符
not and or | 逻辑运算符
- | 加法减法