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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • def f1(x): return x*2 #定义原函数f1()、定义函数参数f1 def new_fn(f): #定义新函数new_fn、给出(函数)参数f def fn(x): print('call'+f.__name__+'()') return f(x) #给出子函数fn和表达式(返回值)f(x) return fn #将新函数new_fn()返回子函数fn() 深刻理解一下上述内容: new_fn(f1)(): 首先, new_fn(f1)表示new_fn(f)变成new_fn(f1),f(x)变成f1(x),即: new_fn参数是原函数,fn()参数是要输入的值; fn()函数功能是传入一个数字,打印日记并返回new_fn()传入的函数f1; 那么到这里就明显了,new_fn(f1)就是装饰器: f1是原函数,功能是x*2;通过装饰器函数new_fn(f1),功能增加了打印日记 其次,new_fn(f1)(5): 前半部分new_fn(f1)规定了功能,后半部分给入对象5; 它绝不是new_fn([5])(),因为这里传入的是函数参数f1,与之有本质区别,因为前者的话原代码应改成fn()而不是fn(x),因此倒像是倒置,一个先函数再对象,一个先对象再函数; fn是原函数是错误的,new_fn是新函数也是错误的;应该是f1是原函数,fn是新函数,new_fn(f1)是装饰器
    查看全部
  • 返回函数: 说白了就是三个部分: 外层函数:用来调用和给定对象 子函数:定义运算规则 return:用子函数对对象进行运算 其实这和前面的带有函数参数的高阶函数以及map(f,list)、functools.reduce(f,list)、filter(f,list)内容是一样的: 外层函数本身可以调用,并且包含指向子函数的参数f和函数对象list; 返回函数就是把外层函数的规则(比如map()就表示遍历列表)交给子函数定义(下节的作业除去子函数,其余部分可以看作是外层函数的规则),只保留函数对象list 而子函数就定义规则,return则相当于函数参数f,指向(返回)子函数; 例:map函数返回大写List的返回函数写法: def upr(lst,f): def f(): su=[] for x in lst: su.append(x[0].upper()+s[1:].lower()) return su return f upr(['adam','LISA','barT'],f)()
    查看全部
  • 参数可以指向函数,变量也可以指向函数: 1、在参数指向函数时: def s1(x,y,f): return f(x)+f(y) s1(4,9,math.sqrt) 可以看到,参数f指向了某个函数,并把这个函数调用到编写好的函数里,作用于变量x和y;而math.sqrt则是一个指向函数math.sqrt()的变量; 2、在给定的高阶函数map(f,list())、functools.reduce(f,list())、filter(f,list())中: 外部的函数显然已经确定了,如map就是用f去遍历列表,reduce用f去累计作用列表,filter是用f筛选列表; 这里的f作为参数,指向的函数需要去编写;而1中的需要编写的是外部函数,确定的是外部函数规则,参数f指向的函数只是调用;
    查看全部
  • 感觉我的比他的简单耶
    查看全部
  • 1、变量指向函数(默认函数名就是变量) 2、接受函数作为参数的函数是高阶函数
    查看全部
  • 关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数 匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果 注意:filter本身用lambda做条件判断,所以在这里lambda的表达式是个条件表达式而不是值 lambda 可以添加条件表达式
    查看全部
  • 内层函数引用外层函数的变量,然后返回内层函数,称为闭包: def calc_sum(lst): def lazy_sum(): return sum(lst) return lazy_sum 当函数内部存在循环语句时,若要正确执行子函数,应把子函数写成闭包形式: 1、此时使用闭包是为了保证循环语句中的变量能够被一次次执行; 2、闭包使用的变量(即函数参数)要与循环语句中的变量不同; 3、因而,所谓的闭包,就是一个完整且独立的子函数嵌套在函数内层里,并与函数其它部分不发生代码执行上的冲突,所以完整就是要求定义和返回遵循固定格式,独立就是定义的子函数参数(变量)要与函数其它变量不发生冲突(“返回闭包不能引用循环变量); 4、闭包之后,应当通过赋值语句将闭包(内层子函数)运行的结果调到外层; def count(): fs = [] for i in range(1, 4): def f(j): def g(): return j*j return g fs.append(f(i)) return fs f1, f2, f3 = count() print f1(), f2(), f3()
    查看全部
    0 采集 收起 来源:python中闭包

    2016-09-29

  • cmp(x,y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
    查看全部
    0 采集 收起 来源:python中偏函数

    2018-03-22

  • Python3.5中运行的代码: >>> def format_name(s): return s[0].upper()+s[1:].lower() >>> print (list(map(format_name,['adam','LISA','barT'])))
    查看全部
  • Python3.5中可运行的代码: >>> from functools import reduce >>> def f(x,y): return x*y >>> print (reduce(f,[2,4,5,7,12]))
    查看全部
  • python 3.5中可运行的代码: >>> import math >>> def is_sqr(x): r=int(math.sqrt(x)) return r*r==x >>> print (list(filter(is_sqr,range(1,101))))
    查看全部
  • 有没有既能检查参数,又可以用类似属性这样简单的方式来访问类的变量呢?对于追求完美的Python程序员来说,这是必须要做到的! 还记得装饰器(decorator)可以给函数动态加上功能吗?对于类的方法,装饰器一样起作用。Python内置的@property装饰器就是负责把一个方法变成属性调用的: @property的实现比较复杂,我们先考察如何使用。把一个getter方法变成属性,只需要加上@property就可以了,此时,@property本身又创建了另一个装饰器@score.setter,负责把一个setter方法变成属性赋值,于是,我们就拥有一个可控的属性操作:注意到这个神奇的@property,我们在对实例属性操作的时候,就知道该属性很可能不是直接暴露的,而是通过getter和setter方法来实现的。 还可以定义只读属性,只定义getter方法,不定义setter方法就是一个只读属性:
    查看全部
    0 采集 收起 来源:python中 @property

    2016-09-29

  • 变量可以指向函数,即函数名实际上就是指向函数的变量 abs(-10); f=abs f(-10) 参数可以是函数的函数称之为高阶函数 变量可以指向函数,函数的参数可以接收变量,一个函数可以接收另一个函数作为参数,能接收函数作参数的函数就是高阶函数 def add(x,y,f): return f(x)+f(y) add(-5,9,abs)
    查看全部
  • 函数 function,编写和调用函数; 函数式 functional,编程范式;把计算视为函数而非指令、纯函数式编程、支持高阶函数、代码简单 Python 函数式编程特点: 是不是纯函数式编程:允许有变量 支持高阶函数:函数也可以作为变量传入 支持闭包 有限度的支持匿名函数
    查看全部
  • 变量和数据类型; 几种数据结构:列表、字符串、字典、元组;各自的特点和基本处理; 循环:for的列表或字符串循环、if/elseif/else的条件判断、while/true/break/continue的关系式循环; 对列表或字符串的元素循环,对字典或元组的索引、元素双循环、迭代 定义和调用函数def 列表切片[::]; 列表生成式[__ for val1 in __ for val2 in __ ... if ___];
    查看全部
    0 采集 收起 来源:课程介绍

    2016-09-29

举报

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

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