变量的声明和赋值
Python 没有语法规则限制改变一个常量的值,不支持常量.所以通过约定常量的命名规
则,在程序的逻辑上不对常量的值做修改
- 链式赋值
链式赋值用于同一个对象赋值给多个变量
x=y=123 相当于:x=123; y=123 - 系列解包赋值
系列数据赋值给对应相同个数的变量(个数必须保持一致)
a,b,c=4,5,6 相当于:a=4;b=5;c=6
常使用系列解包赋值实现变量交换
a,b=1,2
a,b=b,a
print(a,b) # 2,1
最基本内置数据类型和运算符
python 中最基本的内置数据类型:
- 整型
- 浮点型(3.14 或者科学计数法314e-2)
- 布尔型
- 字符串型
数字和基本运算符
运算符 | 说明 | 示例 | 结果 |
---|---|---|---|
+ | 加 | 3+2 | 5 |
- | 减 | 30-5 | 25 |
* | 乘 | 3*6 | 18 |
/ | 除 | 8/2 | 4.0 |
// | 整除 | 7//2 | 3 |
% | 取余 | 7%4 | 3 |
** | 幂 | 2**3 | 8 |
divmod() | 返回元祖,同时得到商和余数 | divmod(13,3) | (4, 1) |
整数
除10进制,还有其他三种进制:
- 0b 或0B,二进制0 1
- 0o 或0O,八进制0 1 2 3 4 5 6 7
- 0x 或0X,十六进制0 1 2 3 4 5 6 7 8 9 a b c d e f
int()实现类型转换:
- 浮点数直接舍去小数部分,如int(9.9)结果是:9
- 布尔值True 转为1,False 转为0
- 字符串符合整数格式(浮点数格式不行,int(“3.14”)报错)则直接转成对应整数
浮点数
- float()可将其他类型转化成浮点数
- 整数和浮点数混合运算时,表达式结果自动转型成浮点数
- round(value)可以返回四舍五入的值,但不会改变原有值,而是在堆中产生新的对象,指向新的值
时间
计算机中时间的表示是从“1970 年1 月1 日00:00:00”开始,以毫秒(1/1000 秒)进行计算.整数部分为距1970 年1 月1 日00:00:00的毫秒数,小数部分为微妙数
python 中可以通过time.time() 获得当前时刻,返回的值是以秒为单位,带微秒(1/1000 毫秒)精度的浮点值
布尔值
把True 和False 定义成了关键字,但本质是1和0,甚至可以和数字相加
- 比较运算符
所有比较运算符返回1表示真,返回0表示假,这分别与特殊的变量True 和False 等价
运算符 | 描述 |
---|---|
== | 等于,比较对象的值是否相等 |
!= | 不等于,比较两个对象的值是否不相等 |
> | 大于,判断x 是否大于y |
< | 小于,判断x 是否小于y |
>= | 大于等于,判断x 是否大于等于y |
<= | 小于等于,判断x 是否小于等于y |
- 逻辑运算符
运算符 | 格式 | 描述 |
---|---|---|
or (逻辑或) | x or y | x为true,则不计算y,直接返回true; x为false,则返回y |
and (逻辑与) | x and y | x为true,则返回y的值; x为false,则不计算y,直接返回false |
not(逻辑非) | not x | x为true,返回false; x为false,返回true |
- 同一运算符
同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址
运算符 | 描述 |
---|---|
is | is 是判断两个标识符是不是引用同一个对象 |
is not | is not 是判断两个标识符是不是引用不同对象 |
is 与==区别:
- is 比较两个对象的id 值是否相等,是否指向同一个内存地址
- == 比较的是两个对象的内容是否相等,值是否相等
- is 运算符比== 效率高,在变量和 None 进行比较时,应该使用is
整数缓存问题
- Python 在命令行中执行时, 对范围为[-5, 256]的整数对象进行缓存,此时指向这个范围内的变量 is 或 == 返回都为TURE
- Python 在 Pycharm 或者保存为文件执行时,则缓存范围为[-5,任意正整数],在此范围内的变量 is 或 == 都为TURE
基本运算符
运算符 | 说明 |
---|---|
and / or / not | 布尔与/或/非 |
is / is not | 同一性判断,判断是否为同一个对象 |
< / <= / > / >= / != / == | 比较值是否相当,可以连用 |
| / ^ / & | 按位或/异或(二进制对应位不同返回1)/与 |
<< / >> | 位左移 / 右移 |
~ | 按位翻转 |
+,-,*,/,//,%,** | 加,减,乘,除,整除,取余,幂 |
a = 4
3<a<10 # True,python的比较运算符可连用
a = 0b11001
b = 0b01000
c = a|b
bin(c) # bin()数字以二进制展示,'0b11001'
bin(a&b) # '0b1000'
bin(a^b) # a与b二进制位对应取异或,不同返回1,'0b10001'
a = 3
a<<2 # 12,左移1位相当于*2;左移2位相当于*4
a = 8
a>>3 # 4,右移1位相当于/2;右移2位相当于/4
[10,20,30]+[5,10,100] # [10, 20, 30, 5, 10, 100]
(1,2,3)+(4,5,6) # (1, 2, 3, 4, 5, 6)
"python"*3 # 'pythonpythonpython'
[10,20,30]*3 # [10, 20, 30, 10, 20, 30, 10, 20, 30]
(1,2,3)*3 # (1, 2, 3, 1, 2, 3, 1, 2, 3)
- 复合赋值
python 不支持自增(++)和自减(–),只能写成a+=1的形式
运算符优先级
实际使用中,记住如下简单的规则:
- 乘除优先加减
- 位运算和算术运算>比较运算符>赋值运算符>逻辑运算符
运算符 | 说明(优先级由高到低) |
---|---|
** | 幂 |
~(不常用) | 按位翻转 |
* / % // | 乘 除 取余 整除 |
+ - | 加 减 |
>> << | 位右移 位左移 |
& | 按位与 |
^ | | 按位或 按位异或 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not or and | 逻辑运算符 |