python的变量类型–数值,字符串,列表,元祖,字典
1.变量
1.概念层级
表达式:用于创建和处理对象
语句
模块
程序
2.变量的概念
python中的变量是动态类型,不像其它语言,没有类型约束,变量的类型取决于它所关联的对象,即变量类型只与对象有关,跟变量名无关。声明一个变量后并指向特定的对象后,内存中会根据对象类型在内存中开辟一块空间,可根据id(变量名)返回变量指向的对象的内存地址。
3.变量的创建
在第一次赋值时创建,之后可根据需要更改类型,字面值等
4.在内存中的原理
变量名可以指向不同的对象,当此变量名不再指向它所引用的对象后,python虚拟机pvm会根据垃圾回收机制,在对象的引用次数计数器-1,当对象的内部计数器为0,pvm的垃圾回收会清理此对象。
同一个对象可以被多次引用,即共享引用,python对于小于等于28=256的整数,事先在内存中开辟了内存地址,当你声明一个小于256的变量指向所对相应的字面值的时候,直接引用已存在的内存地址即可。
注:
a = 255 b = a b == a(true) b is a(true)
a = 255 b = 255 b == a(true) b is a(true)
a = 257 b = a b == a(true) b is a(true)
a = 257 b = 257 b == a(true) b is a(false)
2.数据类型
1)数值:
int:
无限精度,大小只受限与内存与计算配置
八进制 0o oct(十进制)返回相应的进制
十六进制 0x ox9 = 9 oxa=10 oxf=15 hex(十进制)
二进制 0b bin(十进制)
float:
精度不够,是计算机cpu计算的问题,与python无关
小数取整:
import math
向下/左取整 math.floor
向0取整math.trunc
四舍五入round()
除法:/ 标准除 //整除,即取整除部分
比较运算符:> < >= <= == !=
显式格式化: x = 3.33333333 ‘{0:.2f}’.format(x)
Decimal:
imort decimal
a = decimal.Decimal(‘1.3’)+decimal.Decimal(‘3.1’)
a = 4.4
bool在python中bool值的本质是int,即True == 1, Flase == 0.因此res = True + 5 ⇒ res = 6
fraction
2)字符串str
本质是字符的有序序列,不支持原位改变,要改变其值只能重新赋值于它
引号
单引号’'表示字符串
双引号“”表示字符串
三引号“”“##”“”生成说明性文档,通过help()可查看文档说明
特殊字符转义符 \
换行\n, backspace \b, tab \t
忽略转义符r(row)
基本操作
str = ‘hello’
len(str) => 5
str * 5 => hellohellohellohellohello
ord(‘字符’)
chr(数值)
replace,split,startswith,endswith,find,format,upper,lower,strip,lstrip,rstrip等
3)列表list
特性:任意对象的有序集合,可变长度,可变序列,通过索引访问其中元素
声明:1)字面值[] 2)构造方法list
常用操作:
长度len,
合并列表+,
判断是否存在某个元素in(用法:元素 in 列表 ==>返回True 或 Flase),
遍历,
支持列表推导,
追加append,
扩展一个列表extend
(扩展列表与追加元素的区别:扩展列表是将两个列表连接到一起,等同于+操作;append是将元素追加到列表后面位置)
排序sort,
反转reverse,
删除pop,del,
返回下标索引index,
统计元素个数count
注:列表list支持原位改变,listb = lista,当lista改变时,listb会跟着改变,若不想让listb跟着变,可采用生成副本的方式,如[:],copy等
4)字典dict
特性:本质是映射,通过键值对存储,无序集合,支持原位改变,支持套用
声明:通过字面值{}声明,通过构造函数dict()声明
常用操作:
合并update
通过键获取值d[“key”]或d.get(“键”,默认值)
获取键d.keys()返回一个可迭代对象,看似列表,实则视图
获取值d.values()返回一个可迭代对象,看似列表,实则视图
d.items()返回键值
无序变有序:
1)通过key的列表list的sort()方法,遍历排序后的keys
2)通过遍历键的sorted()方法,遍历排序后的keys
3)通过导入包
注:字典的键必须是不可变类型,因此列表list不能作为字典的key
5)元祖tuple
特性:任意对象的有序集合,长度固定,不支持原位改变,可任意嵌套
声明:()可以省去,若声明只有一个元素的tuple,可通过逗号试别为元祖,如,x = (1,)
交换变量:python中的交换变量很简单,不必像其他语言一样声明第三方变量,可直接交换,如 x,y = y,x
常用操作:
长度len
元素计数count
namedtuple:是tuple,类,字典dit的混合体,实现类似类的功能
from collections import namedtuple
6)文件file
7)集合set
8)布尔boolean
9)空 none
10)程序单元(函数function,模块,类class)
11)其它