zoukankan      html  css  js  c++  java
  • 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_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的外面,就能食用了。

    这是第一天,继续加油。

  • 相关阅读:
    NLog.Config的配置示例
    极限定义新讲:动态定义与静态定义
    rclone命令
    linux用户管理命令
    vim常用命令
    Python解二元二次方程组
    英雄联盟为什么这么难玩?——认识所有英雄
    snap安装、运行ss
    阿里云邮件推送服务Python API发送邮件
    Visual Studio #include<bits/stdc++.h>万能头文件
  • 原文地址:https://www.cnblogs.com/backinfile/p/5855114.html
Copyright © 2011-2022 走看看