首页 > 代码库 > python学习 第一天
python学习 第一天
正式学习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_sum27 !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*j36 return g37 r=f(i)38 fs.append(r)39 return fs40 41 f1, f2, f3 = count()42 print f1(), f2(), f3()
学到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 fs12 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学习 第一天
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。