一.浅拷贝
-->.copy()方法
d ={'name':'小黑','age':6,'color':'black'}
d1 = d.copy() # //拷贝 出来,d和d1 是不同的对象没有关系了,id不一样
d1 = d #d和d1 指向了相同的对象,id 一样
d['name'] = '小白'
print(d,id(d))
print(d1,id(d1))
# {'name': '小白', 'age': 6, 'color': 'black'} 2989288422856
# {'name': '小黑', 'age': 6, 'color': 'black'} 2989288422928
# {'name': '小白', 'age': 6, 'color': 'black'} 2188128976328
# {'name': '小白', 'age': 6, 'color': 'black'} 2188128976328
-->浅拷贝
d ={'name':{'j':'变黑','a':1},'age':6,'color':'black'}
d1 = d.copy()
d1['name']['j'] ='变白'
print(d,id(d))
print(d1,id(d1))
# {'name': {'j': '变黑', 'a': 1}, 'age': 6, 'color': 'black'} 2025892314640
# {'name': {'j': '变黑', 'a': 1}, 'age': 6, 'color': 'black'} 2025892315000
# {'name': {'j': '变白', 'a': 1}, 'age': 6, 'color': 'black'} 1707227381264
# {'name': {'j': '变白', 'a': 1}, 'age': 6, 'color': 'black'} 1707227381624
# 运行结果:都改了:说明浅拷贝,因为只是拷贝了字典对象,里面还有一层(列表,字典..),这个不会进行复制,因此改了一个就都改变了
二.字典的遍历
-->三种方法
keys() values() items()
d ={'name':'小黑','age':6,'color':'black'}print(d.keys()) //dict_keys(['name', 'age', 'color'])
print(d.values()) // dict_values(['小黑', 6, 'black'])
print(d.items()) // dict_items([('name', '小黑'), ('age', 6), ('color', 'black')])
通过for循环可将序列中的元素拿出来
for k,v in d.items():
print(k,v)
name 小黑
age 6
color black
三,集合
集合是和列表很相似的序列
不同点:
-->存储不可变对象
-->元素是无序的
-->元素是唯一的
-->集合的创建
1.直接创建
d = {1,2,3,4,5,"a",'b'}
print(d,type(d))
{1, 2, 3, 4, 5, 'a', 'b'}
{1, 2, 3, 4, 5, 'b', 'a'}
d = {1,2,3,4,2,1,1,'a',3,4,'a'}
print(d)
{1, 2, 3, 4, 'a'}
2.set函数创建
d =set([1,2,3,4,5])
print(d,type(d))
{1, 2, 3, 4, 5}
-->集合的方法
-->in 和 not in
s = {1,2,3,4}
print(1 in s) True
print(1 not in s) False
-->len() //返回集合中元素个数
s1 = {1,2,3,4,5}
print(len(s1)) //5
-->add //添加单个元素
s = {1,2,3,4,}
s.add(6)
print(s)
{1, 2, 3, 4, 6}
-->update(参数) //添加多个元素,参数可以是元组,列表,集合,集合
s1 = {1,2,3,4,5}
s2 = {6,7}
s1.update(s2)
print(s1)
{1, 2, 3, 4, 5, 6, 7}
-->pop //随即删除一个元素
s1 = {1,2,3,4,5}
s1.pop()
print(s1)
{2, 3, 4, 5}
--> remove 删除指定元素
s = {1,2,3,'a','b'}
s.remove(3)
print(s)
{1, 2, 'a', 'b'}
-->clear //清空集合,
s = {1,2,3,4}
s.clear()
print(s)
set()
-->集合的运算
1.交集(&)
2.并集(|)
3.差集(-)
4.亦或集
s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
print(s1 & s2) //同数学集合运算规则
print(s1 | s2) //同数学集合运算规则
print(s1 - s2) //s1 减去 s1 s2的交集
print(s1 ^ s2) // s1 | s2 减去 s1 & s2
{3, 4, 5}
{1, 2, 3, 4, 5, 6, 7}
{1, 2}
{1, 2, 6, 7}
5.<= 检验子集
6.< 检验真子集
7.>= 超集
8.> 真超集
s1 = {1,2,3,4,5}
s2 = {1,2,3}
print(s2 < s1)
print(s2 <= s1)
print(s1 > s2)
print(s1 >= s2)
True
True
True
True
四.函数的简介
函数:一个对象 万物皆对象
函数:把具有一定功能的代码封装起来,需要的时候调用
格式:
def 函数名(形参1,形数2,...): //函数声明
代码 //函数实现的功能
函数名(实参1,实参2,...) //函数调用"""
实例:
def fn():
print('hello world')
fn()
print(fn)
hello world
<function fn at 0x0000014FEFECD268>
fn:函数这个对象(object)
五.函数的参数
1.形参和实参:
形参:定义 函数时的 参数变量
实参:调用 函数时,使用的参数变量
参数传递的过程,就是 把实参的引用 传递给 形参 ,使用实参的值来执行函数体的过程。
在 Python 中,函数的 实参/返回值 都是是靠 引用 来传递来的
-->加法交互函数
def fn(a,b):
print(a + b)
fn(int(input('请输入加数1:')),int(input('请输入加数2:')))
请输入加数1:2
请输入加数2:4
6
2.参数传递方式
-->位置传参 对号入座
def fn(a,b,c):
print('a = ',a)
print('b = ', b)
print('c = ', c)
fn(1,2,3)
a = 1
b = 2
c = 3
-->关键字传参
def fn(b = 1, c = 2, a = 3):
print('a = ', a)
print('b = ', b)
print('c = ', c)
fn(4,5,6)
a = 6
b = 4
c = 5
-->混合传参
[注意]关键字参数不能放在位置参数前面
def fn(b = 1, c, a):
print('a = ', a)
print('b = ', b)
print('c = ', c)
fn(4,5,6)
SyntaxError: non-default argument follows default argument