1、变量的使用
要使用一个变量必须先将其初始化,即赋值。(不用定义其类型,会自动套用赋值对象的类型,具体看上一篇)
变量使用后,如果不再需要,可以用 del obj 将obj变量删除。如下:
好处是可以释放内存。
2、链式赋值
将同一个对象赋值给多个变量,如:
3、系列解包赋值
一些列数据赋值给对应个数的变量(前后个数必须对应一致),如:
使用系列解包赋值实现变量互换:(比c简单,不需要借助中间变量)
4、常量
python不支持常量,即不能靠语法限制改变一个变量的值。只能人为约定某些常量的值不做改变。(即叫你别做修改)
5、数据类型
包括:整型(即整数)、浮点型(即小数)、布尔型(表示真假,仅包括 True,False)、字符串(由字符组成,如12343234,abcd)
对整型和浮点型可进行如下运算:加减乘除(+ - * /)、整数除法(//)(结果只保留整数部分)、取模(%)(即取余数)、幂运算(**)
使用 divmod( a,b ) 可同时获得a除以b所得的商和余数。如:
6、进制和数据类型转换
写二进制数,要0B(0b)开头;写八进制数,要0O(0o)开头;写16进制数,要0X(0x)开头。如:
使用 int() 函数实现 数据类型转换为整数。可以实现包括:
将浮点数转为整数;将布尔值转为0和1,即True为1,Fasle为0;将由数字组成的字符串直接转为对应整数。如:
使用 float() 函数实现 数据类型转换为浮点数。类似上面的int()。
使用 round() 函数实现 四舍五入功能。
注:以上三个函数不会改变原来的对象,而是产生一个新的对象。
7、自动转型
整数和浮点数做运算,结果为浮点数。
8、增强型赋值运算符
9、布尔值
True和False。True表示1、False表示0。他们的本质就是0和1可以当数字使用。常用于比较运算符中。
10、比较运算符
11、逻辑运算符
与或非 即:and or not
口诀:or见1就停(即返回1),and见0就停(即返回0),否则返回另一值。
12、同一运算符
is 用于判断两个变量引用对象是否为同一个,既比较对象的地址
== 用于判断引用变量引用对象的值是否相等,默认调用对象的_eq_()方法
注意:整数缓存问题:python 仅仅对比较小的整数对象进行缓存(范为[-5256])存起来,而并非是所有整数对象,需要注意的是,这仅仅是在命令行中执行,而在 Pycharm 或者保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化(范围是[-5,任意正整数])。
因为缓存,会导致同一运算符结果不同。如:
应当注意。
13、字符串
字符串要用双引号(或者单引号)引起来使用(定义也是)。
使用 ord() 函数可以把字符转换成对应的Unicode码。(注意只能转换字符,无法转换字符串)
使用 chr() 函数可以把十进制数字转换成对应字符(有点像ord的逆操作)
1)创建字符串
通过单引号或双引号创建字符串。如:a=’abc’; b=”abc"。使用两种引号的好处是可以创建本身就包含引号的字符串,而不用使用转义字符。如 a ="I'm a teacher!"
连续三个单引号或三个双引号,可以创建多行字符串,适合字符串很长的情况(可以换行定义,而不用连接符)。
允许创建空字符串。
2)字符串长度
使用 len() 函数可以查询字符串长度,如:
3)转义字符
4)字符串拼接
可以用 +(或者一个空格) 将两边的字符串拼接起来。如:
5)字符串复制
用 * 实现字符串的复制。
6)打印显示格式调整办法
调用 print 函数时,默认会自动打印一个换行符。有时,我们不想换行,不想自动添加换行符,或者要其他格式。通过参数end =“任意字符串” ,实现末尾添加任何内容,也可以添加转义字符实现多样化输出。如:
7)从控制台读取字符串
使用 input() 函数可以从控制台读取键盘输入的内容。
8、字符串转型
使用 str()函数可以将其他类的数据转成字符串。如:
9、提取字符串中的字符
使用 obj[] 提取 obj中的字符。
字符串的本质就是字符序列,我们可以通过在字符串后面添加 [],在 [] 里面指定偏移量可以提取该位置的单个字符。
正向搜索:最左侧第一个字符,偏移量是 0(从0开始算起),第二个偏移量是 1,以此类推直到 len(str)-1为止(即到字符串长度减一为止)。
反向搜索:最右侧第一个字符,偏移量是-1(从-1开始),倒数第二个偏移量是-2以此类推直到-len(str)为止。
如:
10、 字符串中字符的替换
使用 obj.replace("obj中想要被替换的字符","替换字符") 实现字符串中字符的替换。如:
注:图中可以看出,在python中字符串一旦定义就是不可变的,虽然replace()函数确实改变了原来的字符串,但是并不会覆盖,即原来的变量还是未改变前的值,就如图中的a。 如果要保存改变后的值,需要重新定义变量。就如这里的b。当然也可以覆盖a,让a指向新的对象,如下:
11、字符串切片slice操作(提取子字符串)
切片操作可以让我们迅速提取子字符串。提取obj中子字符串的标准编写格式为:
obj[起始偏移量:终止偏移量:步长]
注:
且:切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始偏移量小于0则会当做0,终止偏移量大于“长度-1”会被当成-1。
举例:
12、字符串切割和合并
obj.split()函数 可以基于指定分隔符将obj字符串分隔成多个子字符串存储到列表中。如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)。如:
注意:如果分隔符是字符串中的某个元素,则分割后对应该元素位置会被一个空字符串代替。
join()的作用和 split()作用刚好相反,用于将一系列子字符串连接起来。和本篇文章第(4)部分有点类似。具体格式为:
"".join(obj) #双引号内填自己想要的拼接方式,什么都不加默认直接拼接。
例如:
注:使用字符串拼接符+,会生成新的字符串对象,因此不推荐使用+来拼接字符串。推荐使用join() 函数,因为join() 函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝仅新建一次对象,大大缩短时间。
13、字符串的比较
使用同一运算符,详情见本文的12部分。就是用 is 和==
同时,用 in/not in 可以判断某个字符属不属于某字符串。如:
14、字符串查找方法
方法 | 说明 |
len(obj) | 测量字符串obj的长度 |
obj.startswith("字符串a") | 判断字符串obj是否以字符串a开头 |
obj.endswith("字符串a") | 判断字符串obj是否以字符串a结尾 |
obj.find("字符串a") obj.rfind("字符串a") | 查找第一次出现字符串a的位置 查找最后一次出现字符串a的位置 |
obj.count("字符串a") | 计算字符串a出现的次数 |
如:
15、去除首尾信息
我们可以通过 strip() 去除字符串首尾指定信息。通过lstrip()去除字符串左边指定信息,rstrip()去除字符串右边指定信息。如:
16、 大小写转换
对于变量a
函数 | 说明 |
a.capitalize() | 产生新的字符串,首字母大写 |
a.title() | 产生新的字符串,每个单词都首字母大写 |
a.upper() | 产生新的字符串,所有字符全转成大写 |
a.lower() | 产生新的字符串,所有字符全转成小写 |
a.swapcase() | 产生新的,所有字母大小写转换 |
17、格式排版
函数 | 说明 |
a.center(width,"空白填充物") | 让字符串a中的字符居中 |
a.ljust(width,"空白填充物") | 让字符串a中的字符居左 |
a.rjust(width,"空白填充物") | 让字符串a中的字符居右 |
如: