python进阶学习二——第三天
一.深浅拷贝
import copy copy.copy() #浅拷贝 copy.deepcopy() #深拷贝 num = 110 copynum = num #赋值
1 import copy 2 3 l1 = [10,'a1',[110,111],'ds',] 4 l2 = copy.copy(l1) #浅拷贝 5 6 print(l1) 7 print(l2) 8 l1[1] = 11 #改变L1的值 9 l1[2][0] = 1111 #改变l1内嵌列表的值 10 print(l1) 11 print(l2) 12 print(id(l1)) 13 print(id(l2)) 14 print(id(l1[2][0])) 15 print(id(l2[2][0])) 16 17 18 #[10, 'a1', [110, 111], 'ds'] 19 #[10, 'a1', [110, 111], 'ds'] 20 #通过下面的结果对比,发现浅拷贝对于内嵌多层数据类型的操作,如果多层数据类型值改变,浅拷贝的对象也会跟着改变 21 #[10, 11, [1111, 111], 'ds'] 22 #[10, 'a1', [1111, 111], 'ds'] 23 24 #4315829896 25 #4315843720 26 27 #4312813392 28 #4312813392
import copy l1 = [10,'a1',[110,111],'ds',] l2 = copy.deepcopy(l1) print(l1) print(l2) l1[1] = 11 #改变L1的值 l1[2][0] = 1111 #改变l1内层数据的值 print(l1) print(l2) print(id(l1)) print(id(l2)) print(id(l1[2][0])) print(id(l2[2][0])) #[10, 'a1', [110, 111], 'ds'] #[10, 'a1', [110, 111], 'ds'] #结合上面的例子进行对比发现,对于深层拷贝,内嵌多层的数据类型的值,被改变,不会影响到另一方拷贝或被拷贝的对象 #[10, 11, [1111, 111], 'ds'] #[10, 'a1', [110, 111], 'ds'] #4315829576 #4315829896 #4312813392 #4297541440
二. 函数
1 def func(): #没有接收参数 2 print('hello') 3 4 func() # 直接执行函数 5 foo = func #创建一个对象 6 foo() #执行对象 7 8 def func(arg): #传入一个参数 9 print('hello %s' % arg) 10 11 func('zengchunyun') 12 13 def func(arg1,arg2): #传入两个参数 14 print('hello %s,%s' % (arg1,arg2)) 15 16 func('zengchunyun','还你钱') 17 18 def func(*args): #多个参数,可以为空,动态参数 19 print('hello %s'%( ''.join(args))) 20 21 func('zengchunyun,','钱不是,','还了吗') 22 23 def func(*args, **kargs): #传入任意类型的参数,可以为空,动态参数 24 print(kargs) 25 26 func(user='zcy',pwd='123')
三. lambda & map
func = lambda a: a+1 ret = func(1) print(ret) #打印输出2 map1 = map(lambda x:x+11, [11,22,33]) #map(函数,'参数') print(list(map1)) #python2.x可以直接看到结果,python3.x需要转换成list才能看到结果
四. 内置函数
浙公网安备 33010602011771号