Python 学习的第八小节
写此博客 是为了激励自己,并且将自己的心得以及遇到的问题与人分享
一、学习笔记
1.深浅拷贝
浅copy—— copy.copy() #shallow copy
使用 b = a.copy() 这样b是对a进行了浅copy 包含了浅copy的一切特点
特点:只copy“一层” 这个一层是指(假如a[ [ 1 , 2 ] , 3 , 4 ])这样,b copy后只能修改 b[1]、b[2]的值cai不会影响 a 的值,如果b修改了列表中元素的值,那么就是将a元素列表中的值同时进行了修改(内存机制)。这就是浅copy。
深copy—— copy.deepcopy
特点:copy过后是完全独立的 a = copy.deepcopy(b) 但是在使用深copy前 必须要导入copy "import copy"
2.集合(set)——把不同的元素组合到一起
①集合怎么创建
s1 = ['liufeiduo','zuishuai']
s = set (s1)
②集合对象是可哈希的,可以作为字典的键
③取出集合的值:for循环迭代、迭代器
④可变集合:set( ) 集合本身是非可哈希的、不能作为字典的键可添加或删除元素 不可变集合:frozenset( ) 与前者正好相反
⑤集合的访问
集合本身是无序的,不能通过切片或创建索引、只能循环遍历或使用in、not in 来进行访问
⑥集合的更新
s.add( ) 添加一个元素
s.updata( ) 每个元素都添加到序列中
s.remove(‘liufeiduo’) 删除选中元素
s.pop( ) 随机删除
s.clear( ) 清空集合
⑦集合——关系测试
并集:取两者并集 a.union(b) == a | b
交集:取两者交集 a.intersection(b) == a & b
差集:取两者差集 a.difference(b) == a - b #in a but not in b b.difference(a) #in b but not in a
对称差集:取交集的补集合 a.symmtric_difference(b) == a ^ b # not in a and not in b
子集:A是不是B的子集 a.issubset(b) == a < b
超集:A是否完全包含B a.issuperset(b) == a > b
特点:无序、不重复的
作用:1.去重 2.关系测试 给一个列表去重,最简单方法就是将其转换成集合
3.函数(重点)
①作用:减少了重复代码、方便修改,更易扩展维护、保持代码一致性。
②语法:
def 函数名():
函数代码
命名规范:名字必须是下划线字母开头的、区分大小写的。
③含参函数
def shuohua(name,age,sex='male'):
print('name: %s'%name)
print('age: %d'%age)
print(sex)
shuohua(name='liufeiduo',age=25) # 关键字参数 shuohua('liufeiduo','25') #必需参数 sex是默认参数
不定长参数
def add(*args): #定义参数这是重点
sum = 0
for i in args:
sum += i
print(sum)
add(1,2,3,4,6,7,8,9,43,4,345,4,54,65,6)
无命名参数
def add(**kwargs):
# print(kwargs) #将键和键值存到字典中
for i in kwargs:
print('%s:%s'%(i,kwargs[i])) #打印出键和键值了
add(job = 'IT',sex = 'male')
通用参数
def liufeiduo(*args,**kwargs): #可以接受各种参数 12,2,3,4,5 age = 52 这两种都可以接收
print(args)
print(kwargs)
liufeiduo('123',34,567,age = 23) #无命名参数*args要放在左面,有命名参数**kwargs要放在右边,如果有默认参数,默认参数要放在最左面。
函数返回值
return 作用:
1.结束函数
2.返回某个对象
注意:
函数如果没有 return ,会默认返回一个NONE。
如果return 多个对象,那么python 会将多个对象封装成一个元组进行返回。
函数作用域
L: local 局部作用域
E: enclosing 嵌套作用域
G: global 全局变量
B: built_in Python内置作用域
变量查找顺序:L作用域局部>E外层(嵌套)作用域>G当前模块中的全局>Bpython内置作用域。
局部变量不能修改全局变量,局部要想修改全局变量也可以——加个 global “global 变量” 这样就可以了。
变量如果在Enclosing中,用关键字 nonlocal + 变量 然后才可以对变量进行修改。
二、心得
学到了函数,开始逐渐步入了Python学习的正式阶段了,可以写一些功能性的小代码了。一定要着手去练,保持代码量的书写,才能巩固自己所学到的所有知识。