目录
一、赋值
链式赋值
同一个对象赋值给多个变量
x = y =123
# x = 123, y = 123
系列解包赋值
系列数据赋值给对于相同个数的变量(个数必须保持一致)
x, y, z = 1, 2, 3
# x = 1, y = 2, z = 3
常量
Python不支持常量,没有语法规则限制改变一个常量的值,所以约定常量命名规则
二、基本内置数据类型
类型
- 整型
- 浮点型
- 布尔型
- 字符串型
数字运算
1.基本运算符
运算符 | 说明 |
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 浮点数除法 |
// | 整数除法 |
% | 模(取余) |
** | 幂 |
注:除数为0,会产生异常
2.divmod()函数:同时得到商和余数
print(divmod(13, 3))
# (4, 1)
1、整数
进制
- 0b或0B,二进制
- 0o或0O,八进制
- 十进制
- 0x或0X,十六进制
类型转换
1.int()
- 浮点数直接舍去小数部分
- 布尔值True转为1,False转为0
- 字符串符合整数格式(浮点数格式不行)直接转为对应整数,否则报错
2.自动转型:数据类型可以自动由低级向高级转,反之不行
3.整数范围
Python3中,int可以储存任意大小的整数 ----> 适用于科学运算
googol = 10**100
2、浮点数
类型转换
1.float()
2.自动转型
3.round(value)可以返回四舍五入的值,但不会改变原有值,而是产生新的值(对象)
增强型赋值运算符
基本运算符与=结合构成
a = a + 1 <==> a += 1
时间的表示
计算机时间以“1970年1月1日 00:00:00”开始
import time
time.time()
# 获得当前时刻,返回以秒为单位,带微秒精度的浮点值
数字格式化
浮点数通过f,整数通过d进行需要的格式化
格式 | 描述 |
{:.nf} | 保留小数点后n位 |
{:+.nf} | 带符号保留小数点后n位 |
{:x>nd} | 数字补x(填充左边,宽度为n) |
{:x<nd} | 数字补x(填充右边,宽度为n) |
{:,} | 以逗号分隔的数字格式 |
{:.n%} | 保留小数点后n位的百分比格式 |
{:.ne} | 保留小数点后n位的指数记法 |
{:nd} | 右对齐(默认,宽度为n) |
{:<nd} | 左对齐(默认,宽度为n) |
{:^nd} | 居中对齐(默认,宽度为n) |
3、布尔值
本质还是0和1,可以直接做数字运算
比较运算符
运算符 | 描述 |
== | 等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
逻辑运算符
运算符 | 描述 |
or 逻辑或 | x为true,则不计算y,返回true x为false,则返回y |
and 逻辑与 | x为true,则返回y的值 x为false,则不计算y,返回false |
not 逻辑非 | not x |
从左至右判断,如果第一个值已经决定结果,就不再看第二个值。注意返回值不一定是布尔值。
同一运算符
用于比较两个对象的存储单元,即比较对象的地址
运算符 | 描述 |
is | 判断两个标识符是不是引用同一个对象 |
is not | 判断两个标识符是不是引用不同对象 |
1.is与==区别:
- is比较地址
- ==比较值(默认调用__eq__()方法)
2.整数缓存
仅缓存[-5, 256](cmd中),缓存[-5,任意值](Pycharm中),缓存后再赋值地址相同
3.优点
is运算符比==效率高,在变量和None比较时,应使用is
4、字符串
基本特点
- 不可变
- 不支持单字符类型
Unicode编码
- ord():把字符转换成对应的Unicode码
- chr():把十进制的数字转换成对应的字符
引号创建字符串
单、双 :单行
三:多行
可以有空字符串存在
len()函数
计算字符串含有多少字符
转义字符
转义字符 | 描述 |
\(行尾) | 续行符 |
\\ | 反斜杠符号 |
\' | 单引号 |
\'' | 双引号 |
\b | 退格 |
\n | 换行 |
\t | 横向制表符 |
\r | 回车 |
字符串拼接
- 用+号
'a' + 'b' = 'ab'
- 直接摆到一起
'a''b' = 'ab'
字符串复制
'a' * 3 = 'aaa'
不换行打印
通过参数end="任意字符串",实现末尾添加任何内容,不换行的打印内容
print("a", end = '#')
print("b")
# 输出a#b
从控制台读取字符串
使用input()从控制台读取键盘输入的内容
a = input("请输入:")
# 请输入:1
print(a)
# 1
字符串基本操作
1.str()实现数字转型字符串(布尔值也可以)
2.使用[ ]提取字符
- 正向搜索str[0],从最左侧第一个字符开始直到len(str)-1
- 反向搜索str[-1],从最右侧第一个字符开始直到-len(str)
3.replace()实现字符串替换
str = 'abcdefg'
# abcdefg
str.replace('a', 'A')
# Abcdefg
实际上是创建了新的字符串对象并指向变量str,而不是修改了原来的字符串
4.字符串slice切片
标准格式:[起始偏移量 start:终止偏移量end:步长step]
注:1.截取区间为[start,end)
2.步长:隔几个字符取一个字符
3.不论参数是正数还是负数,都是从左往右切
特别地:[::-1]为整个字符串从右到左反向提取
5.spilt()分割
split('指定分隔符'),通过指定分隔符将字符串分隔为多个子字符串,并存储于列表中
6.join()合并
'指定衔接符'.join(含有多个字符串的列表),通过指定衔接符将列表中的子字符串合并为一个字符串
注:拼接字符串join()的时间成本低于+,更优,且数据量越大越明显
字符串驻留
对于符合标识符规则的字符串,会在一次复制后启用字符串驻留机制(进入缓存池)
字符串比较和同一性
# 对于不符合标识符规则的字符串
c = 'aa#'
d = 'aa#'
print(c is d)
# False
print(c == d)
# True
成员操作符
in/not in,判断某个字符(子字符串)是否存在于字符串中
字符串常用方法
1.常用查找方法
方法和使用示例 | 说明 |
len(str) | 字符串长度 |
str.startwith() | 以指定字符串开头 |
str.endwith() | 以指定字符串结尾 |
str.find() | 第一次出现指定字符串的位置 |
str.rfind() | 最后一次出现指定字符串的位置 |
str.count() | 指定字符串出现了几次 |
str.isalnum() | 所有字符全是字母或数字 |
2.去除首尾指定信息
- strip():去除首尾指定信息
- lstrip():去除首指定信息
- rstrip():去除尾指定信息
3.大小写转换
示例 | 说明 |
str.capitalize() | 首字母大写 |
str.titl() | 每个单词都首字母大写 |
str.upper() | 所有字符全转成大写 |
str.lower() | 所有字符全转成小写 |
str.swapcase() | 所有字符大小写转换 |
4.格式排版
函数 | 示例 |
center() | 'a'.center(10,'*') '****a*****' |
ljust() | 'a'.ljust(10,'*') 'a*********' |
rjust() | 'a'.rjust(10,'*') '*********a' |
5.其他方法
- isalnum():检测是否为字母或数字
- isalpha():检测字符串是否只由字母组成(含汉字)
- isdigit():检测字符串是否只由数字组成
- isspace():检测是否为空白符
- isupper():检测是否为大写字母
- islower():检测是否为小写字母
字符串的格式化
1.format()
通过{ }来进行格式化内容替换,format函数可以接受不想额参数,位置可以不按顺序(需要命名)
str = "名字是{0},年龄是{1}"
str.format("小明","18")
print(str)
# 名字是小明,年龄是18
2.填充与对齐
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:后面带填充的字符,只能是一个字符,不指定的话默认用空格填充
"{:*>8}".format("abc")
# *****abc