码迷,mamicode.com
首页 > 编程语言 > 详细

python学习 第一天

时间:2016-09-09 06:36:54      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

正式学习python第一天,网上找到了python教程,带练习题的,又装了ubuntu。

这是学习笔记:

技术分享
 1 list[]:        可变,append/1,insert/2,pop/index?
 2 
 3 tuple():    不变
 4 
 5 dict{}:        可变,values/0,itervalues/0,values/0,iteritems/0,items/0
 6 
 7 set([]):    可变,add/1,remove/index
 8 
 9 
10 str:  .join/list  .capitalize/0 .title/0 .upper/0  .lower/0 .strip(rm),
11 
12 len/1,
13 enumerate/1,
14 zip/2,
15 isinstance/(var,type),
16 map/(fun/1,list),
17 reduce/((fun/2+start?),list),
18 filter/(fun/1,list),
19 sorted/(list,diy_cmp_fun/2),
20 
21 !def!内层函数引用了外层函数的参数,然后返回内层函数的情况,称为闭包(Closure)
22 !ex!
23 def calc_sum(lst):
24     def lazy_sum():
25         return sum(lst)
26     return lazy_sum
27 !note!不要引用任何循环变量,或者后续会发生变化的变量
28 !dying!
29 def count():
30     fs = []
31     L=range(1,4)
32     for i in range(1, 4):
33         def f(j):
34             def g():
35                 return j*j
36             return g
37         r=f(i)
38         fs.append(r)
39     return fs
40 
41 f1, f2, f3 = count()
42 print f1(), f2(), f3()
View All Note

学到list的切片,发现和matlab相似,很是欣喜,因为有点matlab基础,所以瞬间过关,信心暴增。

学到生成列表表达式,让我惊叹不已,它表达的方式很贴切,好用,用来生成html时,信心再次暴增,因为懂点html标签,又过了一关。

到闭包那里就感情复杂了,这东西能返回特定的函数,虽然不懂干啥用,但还是觉得很厉害的样子。被练习题难倒,好不容易才有的头绪。

这里面牵扯了种种指针,学过c,所以勉强理解。差点崩盘,在此祭出答案压压惊。

 1 def count():
 2     fs = []
 3     L=range(1,4)
 4     for i in range(1, 4):
 5         def f(j):
 6             def g():
 7                 return j*j
 8             return g
 9         r=f(i)
10         fs.append(r)
11     return fs
12 
13 f1, f2, f3 = count()
14 print f1(), f2(), f3()

题目在慕课网.python进阶.闭包。

我的理解:函数f接受j(即i),在自己的内存里创建j的副本,这样j为1或2或3,就固定下来,返回的g函数就为1×1或2×2或3×3,r为f(i)的指针即r()等价与f(i),与原代码不同的是,此时的i已经被闭入f,f又能返回此时的状态,所以i再变化也影响不到j×j,这大概就是所谓的“闭包”吧。之后将函数指针并入list传到count的外面,就能食用了。

 

这是第一天,继续加油。

 

python学习 第一天

标签:

原文地址:http://www.cnblogs.com/backinfile/p/5855114.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!