一、变量

变量,是用来存储数据,

如果我们需要让得到的数据在后面的程序中进行运算,就需要先存储在变量中,在需要使用时再引用事先存储的变量。

它是【可变化的量】,它的概念和代数中定义的变量基本一致。

如:y=2*x,x 就是变量,x 的值不同y的值也就不同。

不同点在计算机中 y 也是个变量,计算机计算出 2*x 的值赋值给了变量y。

x 与 y 为变量的名称,我们通过变量的名称在后续程序中引用变量。

每个变量都有名称(名称使用标识符规范命名),叫变量名。Python 变量名可以是大小写英文、数字和下划线(_)的组合,但不能用数字开头。如:a=1,a_01=2,_a=3 中 a、a_01、_a 都是变量。

注意:Python 中的变量不能以数字开头,但可以使用下划线(_)开头,变量名区分大小写,变量A与a是不同的。

Python 中的变量为动态类型,所以我们定义变量时无需指定变量类型,我们可以给变量任何数据类型的值。

如下:

a = 1 # 纯字母

a = 'abc' # 动态类型,变量无固定类型,可以重新赋值任意类型值

a_01 = '我是变量' # 字母数字下划线混合

_a = True # 以下划线开始

12A = 'a' # 报错,不能以数字开始定义变量

注意:

定义变量的‘=’与数学中的‘=’意义是不同的,

Python 中的等号左边是变量名字,右边是值,

'=' 表示将右边的值传递给左边,

所以 '=' 是右连接性,值的传递顺序是从右到左。

二、运算符

1、算术运算符

加(+)、减(-)、乘(*)、除(/)、取模(%)、幂(**)、取整(//)

加、减、乘、除和数学运算的一样,不多讲。

取模(%)是返回除法的余数(23%10余3,所以值为3)。

幂(x**y)表示 x 的 y 次幂( 2**3 的值为 8)。

取整(//) 为取商的整数部分,如10//3 值为3, 9.0//2.0 值为 4.0

示例:

# 使用Python 自带的 IDLE 逐条练习以下代码
a = 23
b = 10
c = 0
print('a + b=', a + b) # 输出 a + b= 33
print('a - b=', a - b) # 输出 a - b= 13
print('a * b=', a * b) # 输出 a * b= 230
print('a / b=', a / b) # 输出 a / b= 2.3
print('a % b=', a % b) # 输出 a % b= 3
c = a + b / b * a + b # 对变量重新赋值会改变变量的值
print(c) # 输出 56.0
# 修改变量 a 、b 、c
a = 2
b = 3
c = a ** b
print("a ** b =", c) # 输出 a ** b = 8
a = 10
b = 5
c = a // b
print("a // b =", c) # 输出 a // b = 2
2、比较运算符
也和数学中的比较运算概念一样。
等于(==)、不等于(!=)、大于(>)小于(=)、小于等于(<=),比较运算符返回的结果为 True 或 False 。
示例:
#使用Python 自带的 IDLE 逐条练习以下代码
a = 23
b = 10
c = 0
print('a == b为', a == b) # 输出 a == b为 False
print('a != b为', a != b) # 输出 a != b为 True
print('a > b为', a > b) # 输出 a > b为 True
print('a < b为', a < b) # 输出 a < b为 False
print('a >= b为', a >= b) # 输出 a >= b为 True
print('a <= b为', a <= b) # 输出 a <= b为 False
3、逻辑运算符
用于连接比较运算符,先计算比较运算符,然后进行逻辑运算。
与(and)、或(or)、非(not),逻辑运算符返回的结果为True或False。
示例:
a = 23
b = 10
c = 30
print('a == b and b>c 为', a == b and b > c) # False
print('a > b or c>=b 为', a > b or c >= b) # True
print('a < b and c>=b 为', a < b or c >= b) # True
print('a <= b and not a= b and a > b) # True
print('a > b 为', a > b) # True
print('not a > b 为', not a > b) # False
print('a <= b and not a= b and not a > b) # False
4、成员运算符
判断元素是否为序列中的成员,用于确认元素是否在序列中。
in:
在指定的序列中找到值返回 True,
否则返回 False。
如:x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in:
在指定的序列中没有找到值返回 True,
否则返回 False,
与 in 是相反的。
示例:
a = 'a'
b = 2
list = [1, 2, 3, 4, 5, 'b', 'a'] # 定义列表,列表使用数据结构类型
print(a in list) # True
print(a not in list) # False
print(b in list) # True
print(b not in list) # False
print(9 in list) # False
print(9 not in list) # True
print('c' in list) # False
print('c' not in list) # True
print('c' in 'abc') # True 字符串也可以当成列表
5、身份运算符
用于比较两个对象的存储单元。
is:
判断两个标识符是否引用自同一个对象,
x is y 如果引用的是同一个对象则返回 True,
否则返回 False。
is not:
判断两个标识符是否引用自不同个对象,
与is相反。
注意:id() 函数可以帮助我们获取变量存储在内存中的地址。
a = 20
b = 20
print(id(a))
print(id(b))
print(a is b) # True
b = 12 # 改变b的值
print(id(b)) print(a is b) # False
输出结果:
1571488816
1571488816
True
1571488560
False
拓展:is 与 == 的区别
Python 一切皆对象,
每个对象都有唯一的身份标识(id),
而且每个对象都有自己的类型(type)和值(value)。
所以 id, type, value 是Python对象的三个基本要素。
常用的赋值(=) 操作,其实是身份标识(id)的传递,片面的理解是内存地址的传递。(因为可变数据类型()和不可变数据类型(int float string))
is比较的是id,
== 比较的是type 和 value。
当id相同时,
它的type和value肯定相同,
但当type与value相同时,
id不一定相同。
示例: type 与 value相同,id 不同
a = b = [1, 2]
c = [1, 2]
print(a == c) # True
print(a is b) # True
print(a is c) # False #
说明:
第一行,a 与 b 赋值时被指向了同一个id
第二行,c 再次创建一个列表,它的id也是新创建。
原因可能是可变数据类型和不可变数据类型。可查看:
version<3.5 , Python为了提高速度使用了小整数[-5, 257)和新创建的字符串加入了通用对象池(类似缓存),即启动编译器时[-5, 257)已经再内存中。
version>=3.5, 将数值加入了通用对象池,当你创建字符串和数值时,他们都会加入通用对象池。
x = 100
y = 100 # [-5, 257)的整数已在内存中定义好,引用时直接将id传递给对应的变量
print(x is y) # True
i = 257
j = 257
print(i is j)
# version<3.5 False, version>=3.5 True
# 说明: Python 3.5 及以后的版本对此进行了优化
#3.5 及以后版本数值与字符串都加入了对象池
s = 'abc'
r = 'abc'
print(s is r) # True
# 拓展:可用于判定变量的类型
print(type(x) is int) # True
print(type(s) is str) # True

注意:运算符的优先级,算术运算符优先,然后身份运算符,再成员运算符,最后逻辑运算符。

总结:

2018年1月19日,第一次修改,个别错别字与语法问题,代码加上注释。

2019年2月25日,第二次修改,增加思维导图

2019年7月7日,第三次修改,修改身份运算符,增加is 与 == 的区别,修改思维导图