为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
  • 匿函数的使用sorted_ignore_case = functools.partial(sorted, cmp=lambda s1, s2: cmp(s1.upper(), s2.upper()))
    查看全部
    1 采集 收起 来源:python中偏函数

    2016-04-09

  • 接受函数做参数叫做高阶函数
    查看全部
  • str.upper()把字符串 str 任意字符变成大写 str.lower()把字符串str任意字符变成小写 str.capitalize()返回一个首字符大写其他字符小写的str的副本
    查看全部
  • 函数名只是函数的入口地址。所以上一节只是保存了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

  • python中,函数(方法)并不是依附与类才能存在。函数并不只是在类中定义。这种直接在模块中而不是类中定义的函数(方法),叫做函数。 而 方法(method),是依附于类 的,他们定义在类中,是属于类的,但是他们本质上,还是一个函数。方法的第一个参数不一定必须是self。 这么说吧,凡是def foo()这种,都是函数,在类中定义的函数,就是方法。 总结: 方法:类内普通方法,类方法 函数:普通函数,类内的静态方法
    查看全部
  • 1,内部函数如果使用外部函数中的临时变量,python其实应该是维护了一个指向该临时变量的引用,该引用为内部函数对象所持有,但是内部函数并不拥有一个该临时变量的复制版本。 2,外部函数运行结束返回后,其临时变量因为被内部函数对象所引用,因此不会被自动销毁(利用某种智能指针机制) 3,内部函数对象被调用运行时,通过对临时变量的引用获取到的值,是外部函数运行结束时刻该临时变量的值。 为什么练习题中将内部函数嵌套一次调用就可以?关键原因是,python中函数调用时,对传入的参数是做了一次复制(类似于C函数参数的入栈)。 当执行到r = f(i)的时候,当时的i变量被复制一份并命名为j,传入了f函数,在f函数内部定义的g函数引用了j,而j的值在f函数中是没有被修改的,所以一直保持了执行r = f(i)时刻i的值。 所以实际上就是,利用一次函数调用中的参数传递,给i创造了一个不变的副本,最终返回的闭包函数引用的是该副本而不是i本身。
    查看全部
    1 采集 收起 来源:python中闭包

    2016-03-18

  • 这个代码中主要就是理解@log('DEBUG')的部分,其实理解为test=log_decorator(test),这样就迎刃而解了。当时也需要理解函数名也是变量这个知识点 def log(prefix): def log_decorator(f): def wrapper(*args, **kw): print '[%s] %s()...' % (prefix, f.__name__) return f(*args, **kw) return wrapper return log_decorator @log('DEBUG') def test(): pass print test()
    查看全部
  • class Person(object): def __init__(self, name, score): self.name = name self.__score = score p = Person('Bob', 59) print p.name try: print p.__score except: print 'attributeerror'
    查看全部
  • 包、模块(文件系统中)
    查看全部
  • 闭包 (一)定义:像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。 例子: def addx(x): def adder(y): return x+y return adder >>> c = addx(8) >>> print c(10) 结果:18 结合这段简单的代码和定义来说明闭包: 如果在一个内部函数里:adder(y)就是这个内部函数, 对在外部作用域(但不是在全局作用域)的变量进行引用:x就是被引用的变量,x在外部作用域addx里面,但不在全局作用域里, 则这个内部函数adder就是一个闭包。 (二)使用闭包注意的事项 1、闭包中是不能修改外部作用域的局部变量的 def foo(): m=0 def foo1(): m=1 print m print m foo1() print m >>> foo() 结果:0 1 0 从执行结果可以看出,虽然在闭包里面也定义了一个变量m,但是其不会改变外部函数中的局部变量m。
    查看全部
    1 采集 收起 来源:python中闭包

    2018-03-22

  • 以前我所认识的变量,比如字符串,数值等,是很低级的变量。后来出现了一个新的变量,它的名称是函数,它的出现可以调用低级的变量字符串,数值等产生新的字符串和数值。现在出现了新的变量,它的名称是高阶函数,它可以调用低级的变量,可以调用函数,可以规定函数要怎么作用于低级变量,可以产生新的字符串可以产生新的函数。
    查看全部
  • 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。
    查看全部
    1 采集 收起 来源:python中闭包

    2016-01-27

  • 要定义关键字参数,使用 **kw; 除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过 setattr(self, 'name', 'xxx') 设置属性。 参考代码: class Person(object): def __init__(self, name, gender, birth, **kw): self.name = name self.gender = gender self.birth = birth for k, v in kw.iteritems(): setattr(self, k, v) xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student') print xiaoming.name print xiaoming.job
    查看全部
  • 1.对 int、str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如果对一组 Student 类的实例排序时,就必须提供我们自己的特殊方法 __cmp__(): 2.巧用cmp()方法,是代码更简洁 3.print sorted(L) 注意这里一定调用的是sorted()方法否则实例将不会排序
    查看全部
    1 采集 收起 来源:python中 __cmp__

    2016-01-16

举报

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

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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