内容正文:
第2章 Python语言基础
2.1 基本数据类型
2.2 变量
2.3 运算符与表达式
2.4 输入与输出
2.5 内置函数
2.6 常用模块
2.2 变量
2.1.1关键字(keyword)和标识符
1. 关键字:也称保留字,是程序语言中被赋予特定含义的一些单词,不能用于自定义的变量名。
and as assert async await break
class continue def del elif else
except False finally for from global
if import in is lambda None
nonlocal not or pass raise return
True try while with yield
使用help()函数查看Python关键字: help('keywords')
if=5 # 错误, if 是关键字, 不能用于定义变量
print=5 # 语法上可行,print不是关键字,但最好不要这样定义,因为会覆盖原有的输出函数print
2.2 变量
2. 标识符:表示变量、函数、类、模块及对象的名字。
标识符需要满足如下规定:
(1)标识符可以包含字母、数字及下划线(_),但必须以非数字字符开始;
(2)标识符区分大小写,长度没有限制;
(3)保留关键字不能用作标识符。
下面是Python中合法的标识符:
student、_num、a1、姓名
下面是非法标识符:
2count、a-b、for、my name、high@
2.2 变量
2.2.2变量
用标识符命名的存储单元称为变量,变量用于存储数据,通过标识符可获取变量的值。赋值语句格式为: 变量名 = 表达式值
In:age = 18
In:age
Out:18
In:age = 20 # 变量值发生改变
In:print(age)
20
注意:在IPython交互窗口中,只输入变量名 或 print(变量名) 均可显示变量内容,但在.py源程序中如需输出,必须用print(变量名)。
【例】变量赋值及改变变量的值
2.2 变量
【例】改变变量的数据类型
In: age = 18
In: type(age) # 初始是整型
Out: int
In: age = '18岁' # 变量的数据类型改变
In: print(age)
18岁
In:type(age) # 字符串类型
Out:str
【例】变量在使用前需要先赋值
In: num1 = 10
In: num2 = num1 # num1必须先有值,才能赋值给num2
同时给多个变量赋值,可写为 a, b, c = 10, 20, 30
交换两个变量的值, 可写为 a, b = b, a
2.3 运算符与表达式
2.3.1 运算符
按运算功能区分,运算符有下面几类:
算术运算符:-(求负)、+、-、*、/、//、%、**
关系运算符:==、!=、>、>=、<、<=
逻辑运算符:not、and、or
赋值运算符:=、+=、-=、*=、/=、%=、**=、//=
位运算符:&、|、^、~、<<、>>
成员运算符:in、not in
身份运算符:is、is not
2.3 运算符与表达式
1. 算术运算符
运算符 功能 示例
- 求负数运算 -a
+ 加运算 a + b
- 减运算 a - b
* 乘运算 a * b
/ 除运算 a / b
// 整除运算 a // b
% 求余(取模)运算 a % b
** 幂(指数)运算 a ** b
2.3 运算符与表达式
【例】算术运算符的应用
In: x = 13; y = 4
In: -x
Out: -13
In: x + y
Out: 17
In: x * y
Out: 52
In: x / y
Out: 3.25
In: 365 // 7 # 整除运算,计算一年有多少个星期
Out: 52
In: 365 % 7 # 求余运算
Out: 1
In: x ** y # 幂(指数)运算, 等同于 pow(x, y)
Out: 28561
2.3 运算符与表达式
2. 关系运算符
关系运算符用于比较两个值的大小,运算结果为逻辑型的值True或False。
运算符 功能 示例
== 等于 a == b
!= 不等于 a != b
> 大于 a > b
>= 大于等于 a >= b
< 小于 a < b
<= 小于等于 a <= b
关系运算符示例
x = 2; y = 3
x == y
Out: False
x != y
Out: True
x > y
Out: False
x <= y
Out: True
9
2.3 运算符与表达式
3. 逻辑运算符
逻辑运算是操作数和运算结果都是逻辑值的运算。
运算符 功能 示例
not 逻辑非 not x
and 逻辑与 x and y
or 逻辑或 x or y
逻辑非:真变假,假变真
逻辑与:x和y必须都为真,结果才为真
逻辑或:x或y有一个为真,结果就为真
关系运算符示例
x = True
y = False
not x
Out: False
not y
Out: True
x and y
Out: False
x or y
Out: True
10
2.3 运算符与表达式
4. 赋值运算符
赋值运算符"=","="前再加上其他运算符构成扩展赋值运算符。例如 a += 5等价于a = a+5。Python没有++运算符。
运算符 功能 示例
= 赋值 b=a
+= 加法赋值运算符 b += a 等效于 b = b + a
-= 减法赋值运算符 b -= a 等效于 b = b - a
*= 乘法赋值运算符 b *= a 等效于 b = b * a
/= 除法赋值运算符 b /= a 等效于 b = b / a
//= 整除赋值运算符 b //= a 等效于 b = b // a
%= 求余赋值运算符 b %= a 等效于 b = b % a
赋值运算符示例
(1)“+=”运算符
a , b = 10, 20
b += a
b
Out: 30
(2)“*=”运算符
a, b = 10, 20
b *= a
b
Out: 200
11
2.3 运算符与表达式
5. 位运算符
位运算符是将操作数视为二进制数并按位进行运算,多用于外部设备控制或需要按位处理的情况(例如图像处理)。
运算符 功能 示例
~ 按位取反运算符 ~ a
& 按位与运算符 a & b
| 按位或运算符 a | b
^ 按位异或运算符 a ^ b
>> 右移位运算符 a >> b
<< 左移位运算符 a << b
python使用位运算符较少,此处不举例介绍了。
12
2.3 运算符与表达式
6. 成员运算符
成员运算符(in)用于测试某个变量是否为某个容器对象中的数据成员,返回True或False。这里的容器主要指字符串、列表、元组或集合等。
运算符 功能 示例
in 包含于 a in b
not in 不包含 a not in b
'P' in 'Python' # True
'x' in 'Python' # False
in [2, 3, 4] # True
2 not in [2, 3, 4] # False
13
2.3 运算符与表达式
7. 身份运算符
身份运算符是判定两个变量所指向的存储区域是否相同的运算符,可用于辅助理解python的变量管理机制。
运算符 功能 示例
is 等同 a is b
is not 不等同 a is not b
x = 300
y = 300
print(x == y) # 输出True
print(id(x), id(y)) # 输出两个不同的内存地址, id()返回内存地址
print(x is y) # 输出False,说明x和y的内存地址不同
14
2.3 运算符与表达式
【例】身份运算符的应用
(1)“is”运算符
a = [1, 2]
b = a
id(a), id(b) # a, b指向同一内存区域
Out:(2465754443592, 2465754443592)
a is b # a, b等同,结果为True
Out: True
c = a.copy() # 通过a.copy(),a和c指向不同的内存区域
a is c
Out: False # a, c不等同, 结果为False
(2)“is not”运算符
a is not c
Out: True
2.3 运算符与表达式
2.3.2 表达式
表达式是将各种数据(包括值、变量和函数)通过运算符连接起来的式子,执行指定的运算并返回结果,如 "a + b" 和 "x > y"等。
表达式运算时按照运算符的优先级顺序从高到低进行。
算术运算符优先级高于关系运算符,关系运算符优先级高于逻辑运算符,逻辑运算符优先级高于赋值运算符。
2.3 运算符与表达式
表2.13 运算符优先级(从高到低)
运算符 描述
** 指数 (最高优先级)
~ ,- 按位翻转,求负数
*,/,%,// 乘、除、取模和整除
+,- 加法、减法
>>,<< 右移、左移运算符
& 按位与运算符
^,| 按位异或、或运算符
<=,<,>,>= 比较运算符
==,!= 等于、不等于运算符
=,+=,%=,-=,*=,/=,//=,**= 赋值运算符
is,is not 身份运算符
in,not in 成员运算符
not 逻辑非运算符
and 逻辑与运算符
or 逻辑或运算符
lambda Lambda表达式
2.3 运算符与表达式
2.3.3 数据类型转换
1. 自动转换
表达式运算时,如数据类型不一致,Python会检查表达式操作数是否可以转换成需要的类型,如果可以,则将操作数转换成需要的类型并运算,这种类型转换称为自动转换。
5 + 2 # 都为整数, 无需转换
5 + 2.1 # 会将5视为5.0, 自动转换为小数
5 + '2.1' # 报错 ,不能自动转换, 应写为 5 + float('2.1')
2.3 运算符与表达式
在数值型数据类型中,自动转换的规则是:
(1)整型数据可以自动在数据后面加上“.0”转换成浮点型数据。
5+2.1 # 5.0 + 2.1
(2)非复数数据可以自动在数据后面加上“0j”转换成复数。
5+ (2+3j) # 视为 (5+0j) + (2+3j)
2. 显式转换
Python中,整型可自动转浮点型,但反过来不行。如需将浮点型转成整型,需使用转换函数,这种转换称为显式转换。
例 5 + int(2.1) # int() 转为整型
2.3 运算符与表达式
表2.14 python常用类型转换函数
函数格式 描述
int(x [,base]) 将字符串和其他数值类型的数据转换成整型
float(x) 将字符串和其他数值类型转换成浮点数
complex(real,imag) 转复数, real是字符串或数字;image只能为数字,默认为0
str(x) 将数值转为字符串
repr(x) 返回一个对象的字符串格式
eval(str) 将str转换成表达式,返回表达式的运算结果
tuple(seq) 将seq转为元组,seq可为列表、集合或字典
list(seq) 将序列转变成一个列表,s可为元组、字典
set(seq) 将一个可迭代对象转变为集合
chr(x) 返回整数x对应的unicode字符
ord(ch) 返回字符ch对应的 ASCII 码或 Unicode码
hex(x) 把整数x转为十六进制字符串
oct(x) 把整数x转为八进制字符串
2.3 运算符与表达式
【例】数据类型转换的例子
(1)int转换函数
int(12.6), int('12'), int('12', base=16) # 按16进制转换
Out: (12, 12, 18)
ord('A') # 将字符'A'转换为ASCII编码
Out: 65
(2)转换成复数
a = 1; b = 2.3
complex(a, b)
Out: (1+2.3j)
(3)字符串转换为数值
eval('1.2 + 3.5')
Out: 4.7
float('3.5')
int('3.5') # 报错, int不能转小数字符串
$$