3.27(4)

#类型转换
#int():转换为一个整数,只能转换由纯数字组成的字符串
# a = 1.2
# print(type(a))
# b = int(a)
# print(b,type(b))
# print(int(1.8))
#浮点型强转整型会去掉小数点及后面的数值,只保留整数部分
# str -> int
# a = int("123")
# print(a,type(a))
#如果字符串中有数字和正负号以外的字符就会报错
#print(int('-10'))
# +/-写在前面表示正负号,不可以写在后面

#用户从控制台输入,判断年龄
# age = int(input("请输入您的年龄"))   #input默认输入的是字符串类型
# print(type(age))
# if age >= 18:
#     print("成年了")

#float(): 转换为一个小数
# print(float(11))  #整型转换为浮点型,会自动添加一位小数
# print(float(-11))
# print(float(+11.676))   #如果字符串中有数字和正负号以外的字符就会报错

#str():转换为字符串类型,任何类型都可以转换成字符串类型
# n = 100
# print(type(n))    #
# n2 = str(n)
# print(n2,type(n2))  #100 

# st = str(-1.80)
# print(st,type(st))  #float转换成str会取出来末位为0的小数部分
# li = [1,2,3]
# st = str(li)
# print(st,type(st))   #输出[1, 2, 3] 

#eval()  用来执行一个字符串表达式,并返回表达式的值
# print(10+10)
# print("10"+"10")
# print(eval("10+10"))  #20,执行运算,并返回运算值
# print(eval("10"+"10"))
#eval()可以实现list.dict.tuple和str之间的转换
#str -> list
# st1 = "[[1,2],[3,4],[5,6]]"
# print(type(st1))
# li = eval(st1)
# print(li,type(li))  #输出[[1, 2], [3, 4], [5, 6]] 

# #str -> dict
# st2 = "{'name':'tiantian','age':18}"
# dic = eval(st2)
# print(dic,type(dic))  #{'name': 'tiantian', 'age': 18} 


#list():将可迭代对象转换成列表
#支持转换为list的类型:str.tuple.dict.set
#str -> list
# print(list('abcdefg'))

# tuple -> list
# print(list((1,2,3,4)))

#dict - > list
#print(list({'name':'tiantian','age':18}))
#字典转换成列表,会取键名作为列表的值

#set -> list
#print(list({'a','b','c','d'}))
#基本转换成列表,会先去重,再转换


#赋值: 会随着原对象一起变量
# li = [1,2,3,4]
# print(li)
# li2 = li  #将li直接赋值给li2
# print('li',li)
# print('li2',li2)
# #给li列表新增元素
# li.append(5)
# print('新增后的li',li)
# print('新增后的li2',li2)
#赋值:等于完全共享资源,一个值的改变会完全被另一个值共享


#浅拷贝
#会创建新的对象,拷贝第一层的数据,嵌套层会指向原来的内存地址
# import  copy  #导入copy模块
# li = [1,2,3,[4,5,6]]  #定义一个嵌套列表
# li2 = copy.copy(li)   #浅拷贝
# # print('li',li)
# # print('li2',li2)
# #查看内存地址 id()
# print('li内存地址:',id(li),'li2内存地址:',id(li2))
# #内存地址不一样,说明不是同一个对象
# li.append(8)
# print('li',li)
# print('li2',li2)
# #往嵌套列表添加元素
# li[3].append(7)
# print('li',li)
# print('li2',li2)
# #外层的内存地址不同,但是内层的内存地址相同


#深拷贝(数据完全不共享)
#外层的对象和内部的元素都拷贝了一遍
# import  copy
# li = [1,2,3,[4,5,6]]
# li2 = copy.deepcopy(li)  #深拷贝
# print("li:",li,id(li))
# print("li2:",li2,id(li2))
# li.append(8)
# print(li)
# print(li2)
# #在嵌套列表添加元素
# li[3].append(7)
# print(li)
# print(li2)
# print(id(li[3]))
# print(id(li2[3]))
# #深拷贝数据变化只影响自己本身,跟原来的对象没有关联


#可变类型
#含义:变量对应的值可以修改,但是内存地址不会发生改变
#常见的可变类型: list. dict . set
# li = [1,2,3,4]
# print("li原内存地址",id(li))
# li.append(5)
# print(li)
# print("li现内存地址",id(li))

# dic = {"name":'tiantian',"age":'18'}
# print(dic,id(dic))
# dic["name"] = 'TT'
# print(dic,id(dic))

# set = {1,2,3,4,5}
# print(set,id(set))
# set.remove(3)  #删除元素
# print(set,id(set))

#不可变对象
#含义:变量对应的值不能被修改,如果修改就会生成一个新的值从而分配新的内存空间
# n = 10  #整型
# print("原地址:",n,id(n))
# n = 15
# print("修改后:",n,id(n))
# #内存地址不一样:修改n的值就会生成新的值,重新赋值给变量n


# st = 'hello'  #字符串
# print(st,id(st))
# st = 'tiantian'
# print(st,id(st))

# tua = (1,2,3)
# print(tua,id(tua))
# #不支持新增删除和修改操作
# tua = ('a','b','c')
# print(tua,id(tua))

#深浅拷贝只针对可变对象,不可变对象没有拷贝的说法

你可能感兴趣的:(python)