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才能看到结果

 

  四. 内置函数

posted @ 2016-01-19 09:14  曾春云  阅读(169)  评论(0)    收藏  举报