Python数据类型:哈希类型、不可哈希类型
哈希类型,即在原地不能改变的变量类型,不可变类型。
可利用hash函数查看其hash值,也可以作为字典的key:
“数字类型:int, float, decimal.Decimal, fractions.Fraction, complex”
“字符串类型:str, bytes”
“元组:tuple”
“冻结集合:frozenset”
“布尔类型:True, False”
“None”
不可hash类型:原地可变类型:list、dict和set。它们不可以作为字典的key。
各种转换
# 八进制、十六进制、二进制数字
0o177, 0x9ff, 0X9FF, 0b101010
# 复数常量,也可以用complex(real, image)来创建
3+4j, 3.0+4.0j, 3J
# 将十进制数转化为十六进制、八进制、二进制表示的“字符串”
hex(I), oct(I), bin(I)
#ascii和字符之间的转换
ord(),chr()
小数模块,分数模块
# 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) # 分数类型 4/6
x = Fraction("0.25") # 分数类型 1/4 接收字符串类型的参数
增强赋值
#-- 动态类型简介
"""
变量名通过引用,指向对象。
Python中的“类型”属于对象,而不是变量,每个对象都包含有头部信息,比如"类型标示符" "引用计数器"等
"""
#共享引用及在原处修改:对于可变对象,要注意尽量不要共享引用!
#共享引用和相等测试:
L = [1], M = [1], L is M # 返回False
L = M = [1, 2, 3], L is M # 返回True,共享引用
#增强赋值和共享引用:普通+号会生成新的对象,而增强赋值+=会在原处修改
L = M = [1, 2]
L = L + [3, 4] # L = [1, 2, 3, 4], M = [1, 2]
L += [3, 4] # L = [1, 2, 3, 4], M = [1, 2, 3, 4] 增强赋值这么可怕
几种:
S = r'\temp' # Raw字符串,不会进行转义,抑制转义
S = b'Spam' # Python3中的字节字符串
S = u'spam' # Python2.6中的Unicode字符串