一.类型转换

1. int(): 转换为一个整数,只能够转换由纯数字组成的字符串
tip:浮点型强转整型会去掉小数点及后面的数值,只保留整数部分
如果字符串中有数字和正负号(+/-)以外的字符就会报错(+/-写在前面表示正负号,不可以 写在后面)
#实际应用:用户从控制台输入,判断年龄

tip:input默认输入的是字符串类型
2.float():转换为一个小数
tip:整形转换为浮点型,会自动添加一位小数
如果字符串中有正负号、数字和小数点以外的字符,则不支持转换

3.str():转换为字符串类型,任何类型都可以转换为字符串类型
tip:float 转换为 str 会取出末位为0的小数部分

4.eval():用来执行一个字符串表达式,并返回表达式的值


eval()可以实现 list , dict , tuple , str 之间的转换
str -> list:

str -> dict:

tip:eval()非常强大,但是不够安全,容易被恶意修改数据,不建议使用
5.list():将最多一个可迭代对象转换成列表
支持转换为list的类型: str , tuple , dict , set
str -> list:

tuple -> list:

dict -> list:

tip:字典转列表,会取键名作为列表的值
set -> list:

tip:
集合转换为列表会先去重,再转换
由于集合是无序的所以转换后的列表也是无序的
二.深浅拷贝
1.赋值:会随着原对象一起改变
赋值:等于完全共享资源,一个值的改变会完全被另一个值共享
2.浅拷贝(数据半共享)
会创建新的对象,拷贝第一层的数据,嵌套层会指向原来的内存地址
优点:拷贝速度快,占用空间小,拷贝效率高

查看内存地址 id()
浅拷贝:
赋值:
浅拷贝的内存地址不同说明不是同一个对象,赋值的内存地址相同说明是同一个对象

3.深拷贝(数据完全不共享)
外层的对象和内部的元素都拷贝了一遍,数据变化只影响数据本身,和原来的对象没有关联

三.可变对象
含义:变量对应的值可以被修改,但是内存地址不会被改变
常见的可变类型:list、dict、set

四.不可变对象
含义:变量对应的值不能被修改,如果修改就会生成一个新的值从而分配新的内存空间
常见的不可变对象:数值类型(int,float,bool,complex)、字符串、元组

内存地址不同:修改n的值就会生成新的值,重新赋值给变量a







