(二) Python运算符、变量、基本数据类型
✅ 在学习python基本数据类型之前,先来了解一下python运算符。
一、python运算符
1. 算数运算符
运算符 | 含义 | 举例 |
---|---|---|
+ | 加。整数的加(减)法都是精确的,浮点数的加减法可能出现精度损失。 | 1 + 2 == 3 |
- | 减。整数的减(加)法都是精确的,浮点数的加减法可能出现精度损失。 | 0.1+0.2 == 0.30000000000000004 |
* | 乘。 | 3 * 4 == 0 |
/ | 除。不同于C/CPP/Java等编程语言,python的 / 是精确计算的。 |
9 / 2 == 4.5 |
// | 取整除。取整除的结果是向下取整,比除法结果小。 | -9 // 2 == -5 |
% | 取余。a % b 取模运算的定义:a % b = a - n * b,n 为不大于 a / b 的最大整数。(与C/Java等不一样) |
-10 % 3 == 2 |
** | 幂运算。x ** y 表示 x 的 y 次方 x^y^ |
2 ** 10 表示 2 的 10 次方。(1024) |
2. 赋值运算符
运算符 | 含义 | 说明 |
---|---|---|
= | 赋值运算 | a = 2 |
+= | 加法赋值运算 | a += b 等价于 a = a + b 。 |
-= | 减法赋值运算 | a -= b 等价于 a = a - b 。 |
*= | 乘法赋值运算 | a *= b 等价于 a = a * b 。 |
/= | 除法赋值运算 | a /= b 等价于 a = a / b 。 |
//= | 取整除赋值运算 | a //= b 等价于 a = a // b 。 |
%= | 取余赋值运算 | a %= b 等价于 a = a % b 。 |
**= | 幂赋值运算 | a **= b 等价于 a = a ** b 。 |
3. 比较运算符
运算符 | 含义 | 说明 |
---|---|---|
== | 相等 | 若a与b相等,则 a == b 返回 True |
!= | 不等 | 若a与b不等,则 a != b 返回 False |
> | 大于 | 若a>b,则 a > b 返回 True |
>= | 大于等于 | 若a>=b,则 a >= b 返回 True |
< | 小于 | 若a<=b,则 a <= b 返回 True |
<= | 小于等于 | 若a<=b,则 a <= b 返回 True |
4. 逻辑运算符
运算符 | 描述 | 说明 |
---|---|---|
and | 逻辑且 | x and y :若x的逻辑值(❓)为False,则返回x,否则返回y的计算值。 |
or | 逻辑或 | x or y :若x的逻辑值为True,则返回x,否则返回y的计算值。 |
not | 逻辑非 | x not y : |
❗ 注意:逻辑运算的结果都是 x 或者 y的值。
❓ 这里的逻辑值是指经过计算后(如果要计算的话)得出的值,是否等价于
False
或者True
。0
、''
、False
等价于False
;非零数值,非空字符,True
等价于True
。 例如:(2 - 2)
的逻辑值等价于False
,' '
的逻辑值为True
。
5. 成员运算符
运算符 | 描述 | 举例 |
---|---|---|
in | 如果在指定的序列中找到一个变量的值,则返回True ,否则返回False |
0 in [1,2,3] 返回 False |
not in | 如果在指定序列中找不到变量的值,则返回True ,否则返回False 。 |
'a' not in ['b','c',''d] 返回 True |
✅ 这里的指定序列可以是列表、元组、集合。
6. 三目运算符
6.1 语法:exp1 if condition else exp2
6.2 含义:exp1
和 exp2
是两个表达式(或直接量),condition
是条件判断式。若 condition
成立则执行 exp1
并将计算值作为三木运算的返回值,否则是 exp2
。
6.3 举例
# 输出最大值
x = 23
y = 28
print(x if x > y else y)
6.4 嵌套
# 输出 a,b,c 三数之中最大值
print((a if (a > b) else b) if (( a if (a > b) else b) > c) else c)
# 更有可读性的
t = a if a > b else b
print(t if t > c else c)
7. 身份运算符
✅ 身份运算符用于比较两个对象的存储单元.
运算符 | 描述 | 举例 |
---|---|---|
is | is 是判断两个标识符是不是引用自一个对象 | x is y , 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True ,否则返回 False |
not is | is not 是判断两个标识符是不是引用自不同对象。 |
x is not y , 类似 id(a) != id(b) 。如果引用的不是同一个对象则返回结果 True ,否则返回 False |
❓ id() 函数用于获取对象内存地址。
❗ python里面没有类似C/CPP/Java的自增(减)运算符,
i++
和i--
都是错误语法。
8. 位运算符
以下例子中,
a == 0011 1100
,b == 0000 1101
运算符 | 描述 | 举例 | ||
---|---|---|---|---|
& |
按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | a & b 输出结果 12 ,二进制解释: 0000 1100 |
||
` | ` | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1 | `a | b输出结果 61 ,二进制解释: 0011 1101` |
^ |
按位异或运算符:当两对应的二进位相异时,结果为1 | a ^ b 输出结果 49 ,二进制解释: 0011 0001 |
||
~ |
按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1 | ~a 输出结果 -61 ,二进制解释:1100 0011 ,在一个有符号二进制数的补码形式。 |
||
<< |
左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
||
>> |
右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
9. 赋值运算符 :=
赋值运算符又称为海象运算符。
暂未更新
10. 运算符优先级
运算符 | 描述 | |
---|---|---|
** |
指数 | |
~ + - |
按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) | |
* / % // |
乘,除,取模和取整除 | |
+ - |
加法减法 | |
>> << |
右移,左移运算符 | |
& |
位 与 | |
` | `^ |
位或、异或 |
<= < > >= |
比较运算符 | |
== != |
等于运算符 | |
= %= /= //= -= += *= **= |
赋值运算符 | |
is is not |
身份运算符 | |
in not in |
成员运算符 | |
not and or |
逻辑运算符 |
二、变量
Python 中的变量不需要声明,直接给变量赋值,就创建了一个变量。
num = 10
Python 变量取名规则:
- 变量由数字、字母(在Python3中,不局限于英文字母,还可以是中文字符等能用 UTF-8 表示的多种语言的字符)、下划线(
_
)组成,且必须以字母、下划线_
开头; - 不能是关键字,但可以包括关键字;
- 不能包含空格;
- 一般而言,变量名全都小写,单词之间用下划线分割。
三、基本数据类型
✅ type(x) 函数返回x的数据类型,可使用 type() 判断数据类型; ✅ Python 有 6 种基本数据类型:
- 不可变的数据类型 数值(Numbers),字符串(String),元组(Tuple),不可变集合(Frozenset)
- 可变数据类型 列表(List),字典(Dictionary),可变集合(Set)
1.Number(数字)
1.1 int 整型
python可以处理任意大小的整数(即理论取值范围[-∞,+∞]
),整数的加减乘除计算都是精确的。有时候数较大的时候,为了提高可读性可以以 _
来分隔:10_000_000_000
。
除了十进制,int型还有二进制(0b111
)、八进制(0o123
)、十六进制(0x123
)等,需要用前缀标识,分别是 0b
、0o
、0x
。同样可以用下划线 _
表示。
1.2 float 浮点型
浮点数即小数,浮点数的计算可能会有四舍五入的误差。浮点数可以用 科学计数法 表示,且浮点数的小数点的位置可以变化,因此称为浮点数。例如,1234.567
可以表示为 1.234567e3
或者 12.34567e2
。
正因为浮点数可能存在这样的尾数偏差,所以在比较浮点数的时候,需要使用 round()
函数进行辅助。
round(x, d)
x: 需要四舍五入的数字 d: 四舍五入摄入的小数位数,默认是 0
print(round(0.1 + 0.2, 10) == 0.3)
# True
1.3 complex 复数
complex
型是python内置的数字类型,使用 a + bj
或 a + bJ
的形式表示。a
是复数的实部,b
是复数的虚部。complex
型的计算遵循数学的复数计算法则。
z.real
返回复数的实部,z.imag
返回复数的虚部。
1.4 bool 布尔值
布尔值只有两种值:True
和 False
。
逻辑值为 False
# 0, '', [], {}, (), None
字符串是单引号 ''
或双引号 ""
包裹起来的。但有多个需要换行的地方的时候,用 \n
写在一行可读性不好,可以使用 '''...'''
来表述多行输出。
print('''green
yellow
blue''')
3.List(列表)
3.1 List(列表)用方括号 []
括起来,python中使用最频繁的数据类型。列表中的元素类型可以是多种数据类型,还可以包括列表,即嵌套列表。和字符串类似,列表也可以被索引和截取。和字符串不同的是,列表属于可改变的数据类型。
3.2 列表的索引和截取与字符串的类似,参考上文。
4.Tuple(元组)
Tuple(元组)用圆括号 ()
括起来,与列表类似,也可以进行所以和截取,不同的是元组不可改变。
元组与字符串类似,也可以被索引和截取,参考上文。
5.Dictionary(字典)
5.1 Dictionary(字典)用花括号 {}
括起来,是一个无序的键值对 key:value
是python常用的一个可变内置数据类型。其中,key
必须是不可变数据类型,且在一个字典中,每个 key
都是唯一的。
6.Set(集合)
集合(set)使用 {}
括起来,是一个无序的不重复元素序列,构成集合的事物或对象称作元素或是成员。基本功能是进行成员关系测试和删除重复元素。使用 print()
输出,则会乱序输出,过滤重复元素。