**
3.数据类型
**
数字类型:int,float ,decimal,Decimal,fraction,coplex
字符串类型:str,bytes
元祖:typle
布尔类型:True,False
空值:None
冻结类型:frozenset
python :分成了两大类型:哈希类型和不可哈希类型
哈希类型:即在原地不能改变的变量类型,不可变类型。可利用hash函数查看其hash值,也可以作为字典的key
*不可哈希类型;原地可变的:字典(字典的键是不可变得,所以是不可哈希)
什么叫不可变:这个值一旦变了,就不能给这个变量赋新值
【list(列表),dict(字典),set(集合)】 这三个不可作为字典的值
Python3 中有六个标准的数据类型:
Number(数字),String(字符串),List(列表),Tuple(元组)
Set(集合),Dictionary(字典)
Python3 的六个标准数据类型中:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
数字常量:
"""
1234, -1234, 0, 999999999 # 整数
1.23, 1., 3.14e-10, 4E210, 4.0e+210 # 浮点数
0o177, 0x9ff, 0X9FF, 0b101010 # 八进制、十六进制、二进制数字
3+4j, 3.0+4.0j, 3J # 复数常量,也可以用complex(real, image)来创建
hex(I), oct(I), bin(I) # 将十进制数转化为十六进制、八进制、二进制表示的“字符串”
int(string, base) # 将字符串转化为整数,base为进制数
# 2.x中,有两种整数类型:一般整数(32位)和长整数(无穷精度)。可以用l或L结尾,迫使一般整数成为长整数
float('inf'), float('-inf'), float('nan') # 无穷大, 无穷小, 非数
"""
pint(type(...))----查看类型
Decimal模块:小数模块
import decimal
from decimal import Decimal
Decimal("0.01") + Decimal("0.02") # 返回Decimal("0.03")
decimal.getcontext().prec = 4 # 设置全局精度为4 即小数点后边4位
Fraction模块:分数模块
from fractions import Fraction
x = Fraction(4, 6) # 分数类型2/3
print(x)
x = Fraction("0.25") # 分数类型 1/4 接收字符串类型的参数
print(x)
#列出python 中可变数据类型和不可变数据类型,并简述原理:
"""
不可变数据类型:数值型,字符串型,元组;
不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,
而对于相同值的对象,在内存中则只有一个对象(一个地址);
如下例用id()方法可以打印出对象的id
"""
numbera =1
numberb = 3
print (f'numbera 的ID为{id(numbera)},numberb 的id为{id(numberb)}')
python 把每一个东西都当做对象,既然是对象就会有属性,
Python3
//:这才是整除 --2里面 / 一个就是整除
“”"
Python 支持的常见运算如下:不建议死记硬背,建议多练习与根据项目需要去用,用的过程中记住
算术运算符
比较(关系)运算符
赋值运算符
逻辑运算符
位运算符
成员运算符
身份运算符
运算符优先级
“”"
常用的运算符
Operators: 运算符 + - * / ** // %
print(1 + 1)
print(2 - 2)
print(3 * 3)
print(5 / 4)
print(2 ** 10)
print(5 // 4)
print(5 % 4)
Casting 转换
Integer -> Float
print(float.__doc__) ----内置方法。两个下划线开头,两个下划线结尾,通常都是内置的方法
print(float(3))
print(3 / 1)
print(float("3.14"))
#比较运算符,常见的< ,>,<= ,>= ,== ,!=
#is : 判断两个标识符是不是引用来自一个对象,可以取反
例1:
lista = [1, 2, 3]
listb = [1, 2, 3]
a == b ---判断是否相等,等返回True ,不等返回Flose
例2:
x = 10
y = x
x += 5
print ("x=", x)
print ("y=", y)
答:
x = 15
y = 10
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
例3:
a = [1,2,3]
b = a
a += 4
print("a =", a)
print("b =", b)
结果会报错,int类型不可迭代
下面这个:|
a = [1,2,3]
b = a
a.append(4)
print("a =", a)
print("b =", b)
a:这个变量是可变类型
b不是
结合上述讲的:可哈希不可哈希,
可变类型不建议把他变成参数.
比如说:写一个函数,他的参数最好不要用list(列表),如果非要用,要先做判断,判断他是否为空值。
因为list是特殊额,往往需要判断他的类型
因为判断一个变量类型,用type来判断类型
以下用list为例:
L = [] ---- list值为空
– 测试类型的三种方法,推荐第三种
if type(L) == type([]):
print("L is list")
if type(L) == list:
print("L is list")
if isinstance(L, list):
print("L is list")
逻辑运算:
x = True
y = False
print(x and y, x or y, not x) # 逻辑与(and)、逻辑或(or)、逻辑非(not)
print(x is not y)
"""
#-- 数字的表达式操作符
yield x # 生成器函数发送协议 :后面再用到再讲
lambda args: expression # 生成匿名函数 :后面再用到再讲
x if y else z # 三元选择表达式 :后面再用到再讲
x and y, x or y, not x # 逻辑与、逻辑或、逻辑非
x in y, x not in y # 成员对象测试
x is y, x is not y # 对象实体测试
x<y, x<=y, x>y, x>=y, x==y, x!=y # 大小比较,集合子集或超集值相等性操作符
1 < a < 3 # Python中允许连续比较
x|y, x&y, x^y # 位或、位与、位异或
x<<y, x>>y # 位操作:x左移、右移y位
+, -, *, /, //, %, ** # 真除法、floor除法:返回不大于真除法结果的整数值、取余、幂运算
-x, +x, ~x # 一元减法、识别、按位求补(取反)
x[i], x[i:j:k] # 索引、分片 :后面再用到再讲
int(3.14), float(3) # 强制类型转换
"""