变量的本质是一块内存空间
在Python中,除了10进制外,还有:
计算机中的时间从1970年1月1日 00:00:00开始,以毫秒(1/1000s)为单位进行计算,把这个时刻称为“unix时间点”。这样就可以把时间全部以数字的方式表示了。
Python中可用time.time()方法获取当前时刻,返回值以秒为单位,以毫秒为精度,如1530167364.8566
Python内置的数据类型分为:
Python2中,整型(int)是32位,范围是-2147483648-2147483647,长整型(long)是64位,范围是(-2^63, 2^63-1),而在Python3中,int可存储任意大小的数,long被取消,所以,Python3可用于超大数的计算
浮点型(float)一般用科学计数法表示,比如3.14,可表示位314E-2或者314e-2
布尔型数据的返回值是True(真)或False(假)
Python2中,无布尔值,取而代之的是数字0和1,表示False和True
Python3中,True和False被定义为关键字,但本质还是0和1,可与数字进行运算
同一运算符:is 和 is not
整数缓存问题:
Python仅仅对比较小的整数对象缓存,范围为[-5,256],而非所有整数,但这仅仅是在命令行中执行,在Pycharm或者保存文件执行时,结果又不一致,因为对解释器做出了一些优化,此时范围为[-5, 任意正整数]
所以,若比较值,则用“==”。若比较对象地址,则用 is 或 is not
字符串的本质是字符序列,一旦创建不可改变,无法对原字符串做出任何修改。
字符串编码:
Python3支持Unicode编码,可表示世界上任何书面语言的字符,在Unicode之前是ASCⅡ码,Python3默认16位Unicode编码,ASCⅡ码是Unicode编码的子集
ord():将字符转换为Unicode编码
chr():将10进制数转换为对应的字符
转义字符:
使用’+特殊字符’可实现某些特定的效果:
'''
\(在行尾时):续航符
\\:反斜杠
\':单引号
\":双引号
\b:退格backspace
\n:换行
\t:横向制表符
\r:回车
'''
使用[]提取字符:
正向:最左侧第一个字符,偏移量为0,以此类推,直到 len(str)-1为止
反向:最右侧,起始偏移量为-1,以此类推,直到-len(str)为止
用replace()函数对字符串进行操作:
e.g. a=‘abccdeffc’
a=a.replace('c','k')
#将a中的c替换为k,并创建新的字符串对象,并将地址赋予a
输出为’abkkdeffk’
字符串切片slice:
标准形式:[start: end: step]
原则:提取的字符包含起始字符,但不包含终止字符,俗称“包头不包尾”。
字符串分隔和拼接:
split():基于指定的分隔符将字符串分成多个子字符串(存储到列表中),默认分隔符为空白字符(换行符、空格、制表符)
join():将一系列字符串拼接,经常与列表一起使用
join()与"+"的效率对比:
使用“+”拼接,会生成新的字符串对象,因此会消耗更多的时间,所以更推荐join()函数,因为其在拼接之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象,故效率更高
证明用join()函数拼接字符串的效率高于"+"
import time
t1=time.time()
a=''
for i in range(10000000):
a+='str'
t2=time.time()
delta_t1=t2-t1
t3=time.time()
b=[]
for i in range(10000000):
b.append('str')
''.join(b)
t4=time.time()
delta_t2=t4-t3
print(delta_t1)
print(delta_t2)
'''
输出的结果:
+:59.125553369522095
join():1.9766478538513184
'''
字符串驻留:
仅保存一份相同且不可变的字符串的方法,不同的值被存放在字符串驻留池中,Python支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线,字母和数字)会启用该机制
e.g. a=“abc_33”, b=“abc_33”, a is b, 结果为True
e.g. c=“dd#”, d=“dd#”, c is d, 结果为False