欢迎光临
我们一直在努力

python第十课:Python类型转换与拷贝机制详解

一.类型转换

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

赞(0)
未经允许不得转载:171主机测评 » python第十课:Python类型转换与拷贝机制详解
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址