一、变量的定义
对于重复使用,并且经常需要修改的数据,可以定义为变量,来提高编程效率。
定义变量的语法为: 变量名 = 变量值。(这里的 = 作用是赋值。)
定义变量后可以使用变量名来访问变量值。
不使用变量打印三次 "今天天气真好",如果需要变成打印 "今天天气不好" 需要修改三行代码
print("今天天气真好")
print("今天天气真好")
定义一个变量表示这个字符串。如果需要修改内容,只需要修改变量对应的值即可
weather = "今天天气真好"
print(weather) # 变量名不需要加引号
print(weather)
- 变量即是可以变化的量,可以随时进行修改。
- 程序就是用来处理数据的,而变量就是用来存储数据的。
给变量赋值的原理
先在堆中申请内存(申请多大看被赋值的数据需要多大内存)
将数据保存区域中
让变量 和 保存数据的内存进行关联(让变量保存数据对应的内存地址)
id 函数 - 获取变量中关联的数据在内存中的地址
二、 运算符
一、算数运算符
a = 10 b = 20
加 + : 两个对象相加 a + b 输出结果30
减 - :得到负数或是一个数减去另一个数 a - b 输出结果 -10
乘 * :两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200
除 / : b / a 输出结果 2
取整除 // : 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0
取余 % : 返回除法的余数 b % a 输出结果 0
幂运算 ** : a**b 为10的20次方
二、赋值运算符
- 基本赋值运算符
把 = 号右边的结果 赋给 左边的变量,如 num = 1 + 2 ,结果num的值为3 。 num = b = 4 打印num 为4 。 - 复合赋值运算符
+= 加法赋值运算符 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
** = 幂赋值运算符 b **= a 等效于 b = b ** a - 注意:赋值运算符是从右往左运算,将等号右边的值赋值给等号左边,所以,等号的左边一定不能是常量或者表达式。
三、比较运算符
以下假设变量a为10,变量b为20
== 等于 :- 比较对象是否相等 (a == b) 返回 False.
!= 不等于: - 比较两个对象是否不相等 (a != b) 返回 true.
大于> : - 返回x是否大于y (a > b) 返回 False。
< 小于 : - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。 (a < b) 返回 true。
大于等于>= : - 返回x是否大于等于y。 (a >= b) 返回 False。
<= 小于等于 : - 返回x是否小于等于y。 (a <= b) 返回 true。
- 数字和字符串做==运算结果是false,做!=运算结果是True , 除了 == 和 != 以外的逻辑运算时,会直接报错
四、逻辑运算符
- and : x and y 只要有一个运算数是False,结果就是False;
只有所有的运算数都为True时,结果才是True
做取值运算时,取第一个为False的值,如果所有的值都为True,取最后一个值。
True and True and True-->结果为True
1 and 0 and 2-->结果是0;1 and 2 and 3-->结果是3
- or : x or y 只要有一个运算数是True,结果就是True;
只有所有的运算数都为False时,结果才是False
做取值运算时,取第一个为True的值,如果所有的值都为False,取最后一个值。
False or False or False-->结果为False
1 or 0 or 2-->结果是1;0 or None or () or '' or {} -->结果是{}
- not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。
not(a and b) 返回 False
五、位运算符(了解就可以了)
- 按位运算符是把数字看作是二进制来进行计算的。
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
^按位异或运算符:当两对应的二进位相异时,结果为1
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。
<< 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。
右移>>动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数
a = 0011 1100 # 60的二进制
b = 0000 1101 # 13的二进制
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
运算符优先级
- 当多种运算符做混合运算时,就会涉及到先运算哪个,后运算哪个问题。
** 指数 (最高优先级) ,过了就是* / % // 乘,除,取模和取整除,加 ,减 。直到not>and>or 。b = True or True and False # 结果是不一样的 c = True or (True and False)