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

这是学习笔记:

 list[]:        可变,append/1,insert/2,pop/index?

 tuple():    不变

 dict{}:        可变,values/0,itervalues/0,values/0,iteritems/0,items/0

 set([]):    可变,add/1,remove/index

 str:  .join/list  .capitalize/0 .title/0 .upper/0  .lower/0 .strip(rm),

 len/1,
enumerate/1,
zip/2,
isinstance/(var,type),
map/(fun/1,list),
reduce/((fun/2+start?),list),
filter/(fun/1,list),
sorted/(list,diy_cmp_fun/2), !def!内层函数引用了外层函数的参数,然后返回内层函数的情况,称为闭包(Closure)
!ex!
def calc_sum(lst):
def lazy_sum():
return sum(lst)
return lazy_sum
!note!不要引用任何循环变量,或者后续会发生变化的变量
!dying!
def count():
fs = []
L=range(1,4)
for i in range(1, 4):
def f(j):
def g():
return j*j
return g
r=f(i)
fs.append(r)
return fs f1, f2, f3 = count()
print f1(), f2(), f3()

View All Note

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

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

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

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

 def count():
fs = []
L=range(1,4)
for i in range(1, 4):
def f(j):
def g():
return j*j
return g
r=f(i)
fs.append(r)
return fs f1, f2, f3 = count()
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的外面,就能食用了。

这是第一天,继续加油。

最新文章

  1. Vim自动补全神器–YouCompleteMe
  2. 欧几里德算法 GCD
  3. context:component-scan 分析
  4. Uva 1347,旅行
  5. 【转】2D动画:view的Matrix
  6. s3cmd的安装与使用
  7. XML和JSON 序列化以及DataTable转JSON
  8. android 开发心得杂记
  9. php moungoDB
  10. 解析Visual C# 7.2中的private protected访问修饰符
  11. UNIX环境高级编程——epoll函数使用详解
  12. [ Java面试题 ]算法篇
  13. WMI入门教程之WMI中的类在哪里?
  14. Class.isAssignableFrom与instanceof的区别
  15. Django ORM操作补充
  16. Maven自动部署jar包到Neuxs
  17. JUC详解
  18. #13 让代码变得Pythonic
  19. POJ 1328 Radar Installation【贪心】
  20. C#中字符串转换为计算公式(自定义公式的计算)

热门文章

  1. JsonFormatter PrettyPrint
  2. Ural 1057 Amount of Degrees
  3. 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面
  4. springMVC学习之接受JSON参数
  5. VC++ 实现简单的桌面截图
  6. putty可以远程连接linux,但上不了网(nat模式)
  7. JScrollBar
  8. win10预览版9926升级10049操作步骤
  9. xcode 常见错误报错问题!
  10. 会话控制:Cookie和session