(二) 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 或者 True0''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 含义:exp1exp2 是两个表达式(或直接量),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 变量取名规则:

  1. 变量由数字、字母(在Python3中,不局限于英文字母,还可以是中文字符等能用 UTF-8 表示的多种语言的字符)、下划线(_)组成,且必须以字母、下划线 _ 开头;
  2. 不能是关键字,但可以包括关键字;
  3. 不能包含空格;
  4. 一般而言,变量名全都小写,单词之间用下划线分割。

三、基本数据类型

✅ 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)等,需要用前缀标识,分别是 0b0o0x。同样可以用下划线 _ 表示。

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 + bja + bJ 的形式表示。a 是复数的实部,b 是复数的虚部。complex 型的计算遵循数学的复数计算法则。 z.real 返回复数的实部,z.imag 返回复数的虚部。

1.4 bool 布尔值

布尔值只有两种值:TrueFalse

逻辑值为 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() 输出,则会乱序输出,过滤重复元素。