为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
python进阶_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。
    查看全部
  • 如果我们只希望导入用到的math模块的某几个函数,而不是所有函数,可以用下面的语句: from math import pow, sin, log 这样,可以直接引用 pow, sin, log 这3个函数,但math的其他函数没有导入进来:
    查看全部
  • 1 #闭包,内层函数引用外层函数,返回内层函数 2 #count()包含了一个闭包函数,参数传入f()而不是f()直接引用i,防止i改变造成闭包返回值改变。 3 def count(): 4 fs = [] 5 for i in range(1, 4): 6 def f(j): 7 def g(): 8 return j*j 9 return g 10 fs.append(f(i)) 11 return fs 12 13 f1, f2, f3 = count() 14 print f1(), f2(), f3()
    查看全部
    0 采集 收起 来源:python中闭包

    2016-03-26

  • 注意@functools.wraps应该作用在返回的新函数上。
    查看全部
  • 使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码。 1、定义decorate,加装饰,返回f; def log(f): #定义装饰器高阶函数,以要装饰的函数f作为参数 def fn(x): #内部相当于重构要装饰的函数f,重命名为fn print 'call ' + f.__name__ + '()...' #加特技print return f(x) #为了不重写原来的函数f的代码,所以用return f(x)代替原来的代码。 return fn 将被装饰过的新的函数fn返回 2、定义未装饰的f @decorate #装饰器高阶函数的名字 定义f #这一行不缩进 3、定义完就可以直接用decorated函数fn,不用写f=decorate(f)这种语句。
    查看全部
  • s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。 当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' '),如下:
    查看全部
  • 函数名只是函数的入口地址。所以上一节只是保存了f相当于只保存了内部函数的入口地址在list中,既然3个都保存完了,说明循环也执行完了,i变成了3。 但是为什么不是每次调用的时候重新开始做for循环呢?从函数的定义可以看出,f函数定义在for循环之下。所以不会每次从1开始进行for循环迭代,而只会用里面的i值,但是当真正调用它们的时候,i已经是3了。 而如果用fs.append(f()),是将每次迭代的结果i*i保存在fs中,只是保存了值。f1,f2,f3只是3个值,使用的时候不用再次调用函数,结果就与i无关了。
    查看全部
    1 采集 收起 来源:python中闭包

    2016-03-26

  • def test_param(*args): print args def test_param_2(**args): print args test_param('test1', 'test2') test_param_2(p1='test1', p2='test2')
    查看全部
  • 请编写一个@performance,它可以打印出函数调用的时间。 ?不会了怎么办 计算函数调用的时间可以记录调用前后的当前时间戳,然后计算两个时间戳的差。 参考代码: import time def performance(f): def fn(*args, **kw): t1 = time.time() r = f(*args, **kw) t2 = time.time() print 'call %s() in %fs' % (f.__name__, (t2 - t1)) return r return fn @performance def factorial(n): return reduce(lambda x,y: x*y, range(1, n+1)) print factorial(10)
    查看全部
  • Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示,比如: >>> print u'中文' 中文 >>> u'中'
    查看全部
  • 使用lambda函数的方法: >>> def f (x): return x**2 ... >>> print f(8) 64 >>> >>> g = lambda x: x**2 >>> >>> print g(8) 64
    查看全部
  • f()是一个函数,f是一个数值。在这里面只要在每次循环就立即输出结果就行。所以fs.append要立即引用f(),或者直接在循环后面开始输出for i in range(1,4): print i*i
    查看全部
    0 采集 收起 来源:python中闭包

    2016-03-26

  • 返回函数可以把一些计算延迟执行。例如,如果定义一个普通的求和函数: def calc_sum(lst): return sum(lst) 调用calc_sum()函数时,将立刻计算并得到结果: >>> calc_sum([1, 2, 3, 4]) 10 但是,如果返回一个函数,就可以“延迟计算”: def calc_sum(lst): def lazy_sum(): return sum(lst) return lazy_sum # 调用calc_sum()并没有计算出结果,而是返回函数: >>> f = calc_sum([1, 2, 3, 4]) >>> f //此处调用f即为lazy_sum函数 <function lazy_sum at 0x1037bfaa0> # 对返回的函数进行调用时,才计算出结果: >>> f() 10 由于可以返回函数,我们在后续代码里就可以决定到底要不要调用该函数。
    查看全部
  • 匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。
    查看全部
  • 关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。
    查看全部

举报

0/150
提交
取消
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!