Python 基本数据类型#

Python 内置了一些基本数据类型,极大的方便描述的任务。

Python 中带有关键字的结构,用于表达特定的语义,被称为 语句

本节主要探讨 表达式语句赋值语句

Python 的 表达式 表示那些可以被求值的对象。换句话说,一个表达式就是表达元素例如字面值、名称、属性访问、运算符或调用,它们最终都会返回一个值。本文主要介绍 Python 基本数据类型所代表的表达式。

赋值语句用于将名称(重)绑定到特定值,以及修改属性或可变对象的成员项:

标识符(或者标识符列表)= 表达式

此时的标识符一般被称为 变量

标识符#

标识符 (也称为 名称)是由特定的 Unicode 字符(包含英文、汉字等,且英文字母区分大小写)、(十进制)数字和下划线组成,但不能以数字作为开头。

示例:

长度 = 100 # 单位 m
宽度 = 400 # 单位 m
面积 = 长度 * 宽度 # 单位 m^2
面积
40000

可以看出:标识符大大地简化了表达丰富语义的过程。

警告

如果变量未定义(即,未赋值),使用该变量会提示错误(在 Python 中被称为 “异常”):

小马
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[2], line 1
----> 1 小马

NameError: name '小马' is not defined

数字#

数字字面值与运算符 +(正号,一般被省略)、-(负号) 组成了数学中的数字(名称为 numbers.Number)。按照数域范围分为:整型(名称为 numbers.Integral 表示)、分数型(名称为 numbers.Rational)、浮点型(名称为 numbers.Real 表示)以及复数型(名称为 numbers.Complex 表示)。整型、分数型、浮点型以及复数型支持数学运算。

数学运算#

Python 提供有基本的数学运算:

  1. +(加法)、-(减法)、*(乘法)、/(除法)、//(向下取整除法)、%(求余)、**(乘方);

  2. 使用 () 分组表达式,用于改变运算的优先级。

可看一些例子(以整数为例):

27 + 49 # 整数加法
76
100 - 1 # 整数减法
99
45 * 3 # 整数乘法
135
75 / 6 # 整数除法
12.5
75 / 15 # 除法返回的值总是浮点数
5.0
(3 + 7) * 5 # 使用 () 分组表达式
50
50 // 5, 53 // 5, 57 // 5 # 向下取整
(10, 10, 11)
73 % 9 # 求取余数
1
2 ** 10 # 乘方
1024

复数#

看看 Python 是如何表达 复数 的。

7j # 纯虚数字面量
3 + 5j # 复数字面量
(3+5j)

复数的运算:

# 定义复数变量
a = 3 + 4j 
b = 7 + 1j
a + b, a - b, a * b, a / b, a ** b
((10+5j),
 (-4+3j),
 (17+31j),
 (0.49999999999999994+0.5j),
 (-7542.58226836217+29973.54852192689j))

对象的属性、方法以及函数#

由于 Python 一切皆是对象,故而每个对象都可能绑定了一些属性(通过 . 获取其值)、方法 以及 函数

比如,复数 \(z\) 有一些属性值:

z = 6 + 8j

z.real # 复数的实部
6.0
z.imag # 复数的虚部
8.0

方法 可以理解为对象自有的行为,一般带有 (参数列表) 调用其行为。比如,复数 \(z\) 有一个求取共轭复数的方法

a.conjugate()
(3-4j)

Python 内置了许多函数用于处理对象。函数 可以理解为通用的行为,一般带有 (参数列表) 调用其行为。

比如,求取复数 \(z\) 的模:

abs(z)
10.0

序列#

本次仅仅讨论几个常用的序列:字符串(不可变)、元组(不可变)和列表(可变)。

字符串#

Python 使用 字符串 记录对象的“语义”信息。字符串通常使用双引号、单引号等表示。如:

晓明 = '小马'
say = "小马,说 '你好!'"

字符串可以使用函数 print() 显示信息:

print(晓明)
小马
print(say)
小马,说 '你好!'

可能会有一些特殊字符,需要 \ 进行转义:

ss = '你好\n世界'
ss # 直接显示,则换行符 `\n` 没有被转义
'你好\n世界'
# 使用 print 显示转义
print(ss)
你好
世界

还有一种情况,你不想将一些转义符号转义,可以使用原始字符串 r"..." 模式:

st = r'你好\n世界'
print(st) # 转义被忽略
你好\n世界

其实原始字符串,等同于将 \ “逃逸”:

st
'你好\\n世界'

有时,想要在字符串中嵌入变量,可以使用 f"...{变量}"(被称为 格式字符串,此类字符串是 表达式,而不是常量):

h = 160 # 身高
小小 = f"小小的身高是 {h}"
print(小小)
小小的身高是 160

字符串的运算#

字符串也支持一些特殊的运算。比如,拼接:

'A' 'a'
'Aa'
'A' + 'a'
'Aa'
'A' * 5
'AAAAA'

如果字符串很长很长,可以使用如下方法拼接(以空白符分隔的多个相邻字符串或字节串字面值,可用不同引号标注,等同于合并操作):

('a'
'b'
'c')
'abc'

还有一种特殊的字符串,叫做文档字符串,使用 '''...''' 表示:

a = '''iter
djkf 
fkd
'''

print(a)
iter
djkf 
fkd

可以看出,字符串是自动换行的。此类字符串常用于注释代码块。

列表 & 元组#

使用 [...] 包裹的 Python 类型称为 列表;使用 (...) 包裹的 Python 类型称为 元组。不同项使用 , 隔开。

例如:

四季 = ('春', '夏', '秋', '冬') # 元组
猫屋 = ['小猫1', '小猫2'] # 列表
print(四季)
print(猫屋)
('春', '夏', '秋', '冬')
['小猫1', '小猫2']

提示

元组的定义真正起作用的是 ,

2, 4, 's' # 这也是元组
(2, 4, 's')

集合#

集合

此类对象表示由不重复且不可变对象组成的无序且有限的集合。因此它们不能通过下标来索引。但是它们可被迭代,也可用内置函数 len() 返回集合中的项数。集合常见的用处是快速成员检测,去除序列中的重复项,以及进行交、并、差和对称差等数学运算。

集合分为两类:

例如:

字母集 = {'a', 'w', 'a', 'e', 'r'} 
# 等价于 字母集 = set('a', 'w', 'a', 'e', 'r')
字母集
{'a', 'e', 'r', 'w'}

可以看到,已经自动去除重复项。

字典#

Python 使用字典表示对象之间的关系。表示方法有:

  1. {key: value, key1: value2, ...} 键值对的形式

  2. dict(key=value, key1=value2)

例如:

字母表 = {
    'a': 'A',
    'b': 'B'
}

字母表2 = dict(a='A', b='B')

字母表
{'a': 'A', 'b': 'B'}

对象的编号与类型#

一个 Python 对象的编号和类型是唯一的,可以分别使用 id()type 获取其值。

比如:

h = 450 # 高度
地址 = id(h) # 获取标识符 h 的所在地址,即编号
地址
140352357391088
类型 = type(h) # h 的类型是整数 int
类型
int