标识符
标识符的定义:用于变量、函数、类、模块等的名称。
标识符的规则:
- 区分大小写。如:zyh和ZYH是不同的。
- 第一个字符必须是字母、下划线。其后的字符是:字母、数字、下划线 。
- 不能使用关键字。比如:if、or、while 等
- 以双下划线开头和结尾的名称通常有特殊含义,尽量避免这种写法。比如
__nit__
是类 的构造函数。
基本数据类型
- 整数
- 浮点数
- 布尔型
- 字符串型
整数
特殊进制
二进制:以ob或OB开头。例如:ob101 = 5
八进制:以oo或OO开头。例如: 0o10 = 8
十六进制:以ox或OX开头。例如:oxff = 255
int()实现类型转换
浮点数直接舍去小数部分。如:int(9.9)结果是:9
布尔值True转为1,False转为 0。 如:int(True)结果是 1
字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错。
整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:2+8.0 的结果是 10.0
整数可以有多大?
Python2 中,int 是 32 位,可以存储从-2147483648 到 2147483647 的整数(约± 21亿)。Long类型是64 位,可以存储:-2^63–2^63-1 之间的数值。
Python3 中,int 可以存储任意大小的整数,long 被取消。
整数缓存问题
Python仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来,而并非是所有整数对 象。需要注意的是,这仅仅是在命令行中执行,而在Pycharm或者保存为文件执行,结果是不一样 的,这是因为解释器做了一部分优化(范围是[-5,任意正整数])。
浮点数
浮点数,称为 float。
浮点数用 10ba 形式的科学计数法表示。比如:3.14,表示成:314E-2或者 314e-2。 这些数字在内存中也是按照科学计数法存储。
类型转换和四舍五入
类似于int(),我们也可以使用 float()将其他类型转化成浮点数。
数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:2+8.0 的结果是 10.0
round(value)可以返回四舍五入的值 注:但不会改变原有值,而是产生新的值
布尔值
Python2中没有布尔值,直接用数字 0表示 False,用数字1 表示True。
Python3中,把 True和 False 定义成了关键字,但他们的本质还是 1和 0,甚至可以和数字相加
字符串
字符串的本质是:字符序列。Python的字符串是不可变的,我们无法对原字符串做任 何修改。但,可以将字符串的一部分复制到新创建的字符串,达到“看起来修改”的效果。
Python不支持单字符类型,单字符也是作为一个字符串使用的。
Python3直接支持 Unicode,可以表示世界上任何书面语言的字符。Python3的字符 默认就是 16位Unicode 编码,ASCII 码是Unicode 编码的子集。
使用内置函数 ord()可以把字符转换成对应的Unicode 码(int);
使用内置函数 chr()可以把十进制数字转换成对应的字符
str()转型字符串
str()可以帮助我们将其他数据类型转换为字符串。例如:
1 | str(5.20) ==> ‘5.20’ |
创建字符串
单引号或双引号创建字符串。例如:a=’abc’; b=”zyh” .
连续三个单引号或三个双引号,可以帮助我们创建多行字符串。
空字符串和len()函数
Python允许空字符串的存在,不包含任何字符且长度为0。
例如:
1 | '' c = |
len()用于计算字符串含有多少字符。
例如:
1 | 'abc尚学堂' d = |
字符串拼接
可以使用+将多个字符串拼接起来。例如:’aa’+ ’bb’ ==>’aabb’
- 如果+两边都是字符串,则拼接。
- 如果+两边都是数字,则加法运算。
- 如果+两边类型不同,则抛出异常。
字符串复制
使用 * 可以实现字符串复制。
1 | 'zyh'*3 a = |
使用[]提取字符
字符串的本质就是字符序列,我们可以通过在字符串后面添加[],在[]里面指定偏移量,可以提取该位置的单个字符。
正向搜索: 最左侧第一个字符,偏移量是 0,第二个偏移量是 1,以此类推。直到 len(str)-1 为止。
反向搜索: 最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,直到-len(str) 为止。
1 | 'abcdefghijklmnopqrstuvwxyz' a = |
replace()实现字符串替换
字符串是“不可改变”的,我们通过[]可以获取字符串指定位置的字符,但是我们不能改变
1 | 'abcdefghijklmnopqrstuvwxyz' a = |
字符串不可改变。但是,我们确实有时候需要替换某些字符。这时,只能通过创建新的字符 串来实现。
1 | 'abcdefghijklmnopqrstuvwxyz' a = |
字符串切片slice操作
切片 slice 操作可以让我们快速的提取子字符串。
标准格式为: [起始偏移量start:终止偏移量end:步长 step]
- 典型操作(三个量为正数的情况)如下:
操作 | 实例 | 结果 |
---|---|---|
[:] 提取整个字符串 | “abcdef”[:] | “abcdef” |
[start:]从start 索引开始到结尾 | “abcdef”[2:] | “cdef |
[:end]从头开始知道 end-1 | “abcdef”[:2] | “ab” |
[start: end:step]从 start 提取到 end-1,步长是 step | “abcdef”[1:5:2] | “bd” |
- 其他操作(三个量为负数)的情况:
操作 | 实例 | 结果 |
---|---|---|
“abcdefghijklmnopqrstuv wxyz”[-3:] | 倒数三个 | “xyz” |
“abcdefghijklmnopqrstuv wxyz”[-8:-3] | 倒数第八个到倒数第 三个(包头不包尾) | ‘stuvw’ |
“abcdefghijklmnopqrstuv wxyz”[::-1] | 步长为负,从右到左 反向提取 | ‘zyxwvutsrqpon mlkjihgfedcba’ |
不换行打印
1 | print("sxt",end=' ') |
split()分割和join()合并
split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。如果不指定分隔 符,则默认使用空白字符(换行符/空格/制表符)。示例代码如下:
1 | "to be or not to be" a = |
join()的作用和split()作用刚好相反,用于将一系列子字符串连接起来。示例代码如下:
1 | 'sxt','sxt100','sxt200'] a = [ |
字符串驻留机制和字符串比较
字符串驻留:
仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。
Python 支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线(_)、字母
和数字)会启用字符串驻留机制驻留机制。
字符串比较和同一性:
我们可以直接使用==,!=对字符串进行比较,是否含有相同的字符。
我们使用 is / not is,判断两个对象是否同一个对象。比较的是对象的地址,即 id(obj1)是
否和 id(obj2)相等
1 | "abd_33" a = |
参考:
内容:百战程序员笔记。