链式赋值
链式赋值用于同一个对象赋值给多个变量。
x=y=123 相当于:x=123; y=12
系列解包赋值
系列数据赋值给对应相同个数的变量(个数必须保持一致)
a,b,c=4,5,6
#相当于:a=4;b=5;c=6
a,b=b,a
#a与b交换值
常量
python不支持常量,即没有语法规则限制改变一个常量的值,我们只能约定常量的命名规则,以及在程序的逻辑上不对常量的值做出修改。(实际上是可以改的,只能在逻辑上不做修改)
命名规范:全部大写且用下划线隔开如MAX_SPEED。
部分基本运算符
运算符 | 运算 |
---|---|
/ | 浮点数除法 |
// | 整数除法 |
% | 模(取余) |
** | 幂 |
divmod()函数同时得到商和余数
divmod(13,3)
#(4,1)
整数
进制
表达 | 进制 |
---|---|
0b或0B | 二进制 |
0o或0O | 八进制 |
0x或0X | 十进制 |
类型转换
int()实现类型转换
int(9.9)
#9
int(True)
#1
int("456")
#456
#只对整数字符串有用,浮点数和带其他字符都会报错。
自动转型
2+8.0
#10.0
整数可以有多大?
python2中,int是32位,可以储存从-2147483468到2147483468的整数(约±21亿),long是4位,可以储存-263至263-1的数值。
python3,int可以存储任意大小的整数,long被取消,非常适合做科学运算。
浮点数
科学计数法
如3.14
3.14
314E-2
314e-2
浮点数类型转换
float(3)
#3.0
#不会改变原有的值,而是产生新的值。
float("3.14")
#3.14
四舍五入
round(3.14)
#3
round(3.54)
#4
增强型赋值运算符
运算符 | 例子 | 等价 |
---|---|---|
+= | a+=2 | a=a+2 |
-= | a-=2 | a=a-2 |
*= | a*=2 | a=a*2 |
/= | a/=2 | a=a/2 |
//= | a//=2 | a=a//2 |
**= | a**=2 | a=a**2 |
%= | a%=2 | a=a%2 |
<<= | a<<=2 | a=a<<2 |
>>= | a>>=2 | a=a>>2 |
&= | a&=b | a=a&b |
|= | a|=b | a=a|b |
^= | a^=b | a=a^b |
python不支持自增自减
加法和乘法都可以用于
1、数字相加/相乘
2、字符串拼接/复制
3、列表、元组的合并/复制
运算后得出结果是从一个引用指向另一个引用,原指向的数将被丢进垃圾回收站释放。
运算符优先级
乘除优先于加减
位运算和算术运算>比较运算符>赋值运算符
复杂表达式一定要用小括号组织起来
时间
计算机时间从1970年1月1日00:00:00开始,以毫秒进行计算。将这个时刻成为unix时间点。在1970年之前的时间用负数,1970年之后的时间用正数。
import time
time.time()
#获得以秒为单位,以微秒为精度的浮点数值。
b=int(time,time())
#保存获取的秒数
totalMinutes=b//60
#计算获取的分钟,并保存为整数
totalHours=totalMinutes//60
#计算获取的小时,并保存为整数
totalDays=totalHours//24
#计算获取的天,并保存为整数
totalYears=totalDays//365
#计算获取的年,并保存为整数
开方计算
math.sqrt()
布尔值
True和False,本质是1和0,可以和数字相加。
a=True
b=3
a+b
#结果为4
比较运算符
运算符 | 描述 |
---|---|
== | 是否相等 |
!= | 是否不等 |
> | 是否大于 |
< | 是否小于 |
>= | 是否大于等于 |
<= | 是否小于等于 |
可以连用
>>>a=4
>>>3<a<10
True
逻辑运算符
运算符 | 格式 | 说明 |
---|---|---|
or (逻辑或) | x or y | x为true则返回true x为false,则返回y的值 |
and (逻辑与) | x and y | x为true,则返回y的值 x为false,不计算y直接返回false |
not (逻辑非) | not x | x为true,返回false x为false,返回true |
位操作
>>>a=0b11001
>>>b=0b01000
>>>c=a|b
>>>bin(c)
'0b11001'
#有1为1
>>>bin(a&b)
'0b1000'
#有0为0
>>>bin(a^b)
'0b10001'
#相异为1,相同为0
>>>a=3
>>>a<<2#左移1位相当于乘以2,左移2位相当于乘以4
12
>>>a=8
>>>a>>1#右移1位相当于除以2
同一运算符
运算符 | 描述 |
---|---|
is | is是判断两个标识符是不是引用同一对象 |
is not | is not 是判断两个标识符是不是引用不同对象 |
is和==的区别:
is用于判断两个变量引用对象是否为同一个,即相比对象的地址。
==是判断引用变量引用对象的值是否相等,默认调用对象的__eq__()方法。
is运算符比==效率高,因为==调用了方法,在变量和None进行比较时,应该使用is。
整数缓存的问题
[-5,256]之间的数在idle跑到时候会被缓存起来,在全局解释器范围内被放入缓存供重复使用,范围之外的数会重新生成,也即
>>>a=10
>>>b=10
>>>a is b
True
>>>a=1000
>>>b=1000
>>>a is b
False
[-5,任意正整数]之间的数在文件里跑到时候会被缓存起来,也即
a=10
b=10
a is b
#True
a=1000
b=1000
a is b
#True