1、变量:
变量包含 标识 id(obj)、类型 type(obj)、值 print(obj) 三部分。
变量定义后,变量名指向数据空间(标识、类型、值);————类似指针?
重新赋值后,变量名指向新的空间,旧的内存垃圾会自动回收。
具体回收机制,参考:Python的内存管理机制(垃圾回收) - ''竹先森゜ - 博客园
多个变量赋值相同时(a,b=10,10),第一个变量a赋值会创建10的数据空间n(10),第二个变量b赋值会查询10是否有数据空间n(10),如果有,不再新创建数据空间,而是把n(10)的标识id给b。b也指向n(10)
2、数据类型:
常用数据类型有:int、float、bool、str 四种。
2.1 int 整数类型:
1)不同进制:默认十进制。 0d(十进制)。 0b(二进制)、0o(八进制)、0x(十六进制)
2.2 float 浮点数类型:
1)浮点数存储不精确性。
原因:1. 计算机内部以二进制保存,所以十进制的有限位的小数,在计算机内部会是一个无限位的小数。
2. 计算机保存浮点数的精度有限。
单精度float:可以保留十进制最多7位(二进制23位)有效数字 ;
双精度double:可以保留十进制15~16位(二进制52位)有效数字。
2)不精确解决方案:导入模块decimal模块,使用decimal.Decimal(obj)
#decimal.Decimal(str)使用
import decimal
a=1.1
b=2.2
print(a+b)
print(decimal.Decimal(int(a))+decimal.Decimal(int(b)))
2.3 bool 布尔类型:True,False
python 一切皆对象,所有对象都有一个bool值:bool()
除了False、None、数值0、空字符串/列表/元组/集合/字典,bool()为False;其余均为True
可以默认转换为整数进行计算
#bool 值可以转换为整数计算
f1=True
print(f1+1) #True = 1,True+1 = 2
2.4 str 字符串类型:'…' 、 "…" 、 ''' … ''' 。 三引号表示字符串块
又称为不可变字符序列:
对string字符串的操作实际上是对其副本(原始拷贝)的操作,原字符串没有改变。
3、数据类型转换:
str():
int(): int(x, base=16) 视 x 为 base 类型数字,如果加base值,x必须是str、且是整数
float():
int() #不传入参数时,得到结果0
int('12',16) #带参数base的话,要以字符串的形式进行输入,12为16进制的12,实际为18
输出结果:
0
18
4、注释:
中文编码声明:#coding:utf-8
5、运算符
包括 数学运算符、赋值运算符、比较运算符、布尔运算符、位运算符。
1) 数学运算符:加(+) 减(-) 乘(*) 除(/) 整除(//) 取余(%) 幂(**)
2)赋值运算符:= :从右至左执行;
支持链式赋值a=b=c=20;——多个参数同时指向1个对象空间
支持参数赋值(+=,-=,*=,/=,//=,%=,**=)
支持系列解包赋值a,b=1,2; ——交换变量时:a,b=b,a
3)比较运算符:结果是bool类型 > 、 < 、 >= 、 <= 、 == 、 != 、 is 、 is not
==:对对象value的比较
is 、is not:对对象id的比较
a,b=10,10 #相同值的变量的id一致
print(id(a),id(b))
c,d=[11,22,33],[11,22,33] #相同值的列表的id不一致
print(id(c),id(d))
#输出:
8791301363760 8791301363760
37749120 37749056
print(c==d)
print(c is d)
print(c is not d)
#输出:
True
False
True
4)bool运算符:and 、or、 not 、 in、 not in
not是对布尔类型取反
str = "Hello"
a=2
print(not str)
print(not "a")
print(not a)
print(not 1)
#输出:
False
False
False
False
5)位运算符:位与(&) 、位或(|) 、异或运算符(^) 、取反运算符(?) 、左位移(<<) 、右位移(>>)
将数据转成二进制进行计算
a=60
b=13
print(a&b,0b1100)
print(a|b,0b111101)
print(a^b,0b110001)
print(a<<2,0b11110000)
print(a>>2,0b1111)
输出:
12 12
61 61
49 49
240 240
15 15
print(~a,-a-1) #按位取反~a
输出:
-61 -61
有关 “反码”,“取反”,“按位取反(~)”这三个概念:
反码:正数的反码是其本身,对于负数其符号位不变其它各位取反(0变1,1变0)
取反:0变1,1变0
???按位取反:
6)运算符优先级
()——>算数运算符——>位运算符——>比较运算符——>布尔运算符——>赋值运算符
| | |
** —> *,/,//,%—>+,- >>,<<—>&—>| and—>or
7)bin() :返回一个整数 int 或者长整数 long int 的二进制表示,返回值是str类型
a = bin(60)
b = bin(13)
print(a,type(a),b,type(b),sep=',')
输出:
0b111100,<class 'str'>,0b1101,<class 'str'>
参考页面: