回顾第六章,是关于动态类型的介绍,写到了关于变量的赋值,其实是数据对象的初始化,而且是一种引用(以内存中指针的形式实现),改变赋值就是改变引用的对象。涉及到可变变量列表的使用,是对引用的拷贝或值得拷贝(深copy.deepcopy())。最后讲到,动态类型是多态的根本。
第七章,字符串--一个有序的字符的集合(集合是无序的、不可变的)
字符串的一些基本属性和方法:
>>>a = 'abc'
>>>b = '123'
>>>c = ' a b c '
>>>a[1:2] #字符串切片,从索引1开始,截至到索引2,包括索引1,不包括索引2
'b'
>>>a[3:0:-2] #字符串切片,步进为负数时,倒序输出相应的步进结果,注意:倒序时切片的前两个值也要颠倒过来
'ca'
>>>a[slice(3,0,-2)] #与上一句效果一样
'ca'
>>>'str is %s'%a #字符串格式化输出
'str is abc'
>>>'str is {1}'.format(a,b) #也是字符串格式化,可以处理多个字符串对象,使用format()索引的方式
'str is 123'
>>>'str is {name}'.format(name='aaa') #使用format()的键值方式
'str is aaa'
>>>'{0:>10}=={1:<10}'.format(abcd,123.1) #使用format()索引的方式,分别以10的字符宽度实现右对齐和左对齐
' abcd==123.1 '
>>>'{0:e}'.format(3.14159) #使用format()索引的方式,使用e科学计数法对数据进行格式化
'3.141590e+00'
>>>'{0:.{1}f}'.format(1/3.0,4) #使用format()索引的方式,嵌套式的格式化
'0.3333'
>>>'%.*f'%(4,1/3.0) #与上一句效果相同
'0.3333'
>>>format(1/3.0,'.4f') #使用format()函数,与上一句效果相同
>>>a.find('a',0,3) #返回'a'在字符串a中的第一个匹配的位置的索引,其中0,3将字符串切片后再查找,不传入0,3,则表示查找整个字符串。返回-1,表示未查找到。
0
>>>c.rstrip() #清除字符串尾部的空格后返回字符串
' a b c'
>>>a.replace('ab','12') #替换
'12c'
>>>a.split('b') #用占位符分割,返回分割后的列表
['a','c']
>>>','.join(a) #插入分隔符,返回一个字符串
'a,b,c'
>>>b.isdigit() #判断字符串内容是否未数字,是则返回True
True
>>>a.upper() #返回所有字母大写的字符串
'ABC'
>>>a.upper().lower() #将所有大写字母转化为小写并返回
'abc'
>>>a.endswith('bc') #判断字符串是否以'bc'结尾,是则返回True
True
>>>'b' in a #判断'b'是否在字符串中,是则返回True
True
>>>a.encode('utf-8') #转换编码,返回转换后的字节(bytes)字符串,编码规范为utf-8
b'abc'
>>>type(a.encode('utf-8')
<class 'bytes' >
使用'\'进行字符串转义
抑制字符串转义,有两种方法:使用双斜杠'\\',或者使用Raw字符串
>>>s = 'a\\0b\\01c'
>>>s
'a\\0b\\01c'
>>>s = r'a\0b\01c'
'a\\0b\\01c'
>>>ord('1') #将单个字符串转化为相应的ASCII码
49
>>>chr(49) #将ASCII码转化为相应的字符
'1'
属性读取:
具有object.attribute的表达式意味着“读取object对象的attribute属性的值”
函数调用表达式:
具有函数(参数)的表达式意味着“调用函数,传入零个或多个用逗号隔开的参数,并得到函数的返回值”
字符串格式化:
>>> 'abc%06d'%1 #%06d,格式化整数,位数多则全部加入,位数少则补0
'abc000001'
>>> '%E'%1 # %E 格式化为科学计数法
'1.000000E+00'
基于字典的格式化
>>>'%(a)d,%(b)s'%{'a':3,'b':'one'}
3,one
内置函数vars()
>>>vars() #返回一个字典,内容为当前状态下所有的变量即其值
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'redis': <module 'redis' from 'D:\\virtualenv\\pychannels\\lib\\site-packages\\redis\\__init__.py'>, 'rd': Redis<ConnectionPool<Connection<host=localhost,port=6379,db=0>>>, 'sub': <redis.client.PubSub object at 0x0000017EF84C6898>, 'ret': <function ret at 0x0000017EF89FD158>, 'threading': <module 'threading' from 'c:\\users\\zjd87\\appdata\\local\\programs\\python\\python36\\Lib\\threading.py'>, 'num': None, 'str1': 'abc', 'i': 'c', 'list1': ['a', 'b', 'c'], 'list2': ['a', 'b', 'c', 'd'], 'str2': 'abcd'}