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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 区分包和普通目录:包下面必须有一__init.__.py文件,即使它是个空文件 包含有模块,模块是一个一个py文件,包中可以含有多个py文件,可以import 包名.模块名。
    查看全部
  • functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下面的代码创建一个新的函数int2: >>> import functools >>> int2 = functools.partial(int, base=2) >>> int2('1000000') 64 >>> int2('1010101') 85 所以,functools.partial可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值,这样,新函数调用的难度就降低了。
    查看全部
    0 采集 收起 来源:python中偏函数

    2018-03-22

  • 由于decorator返回的新函数函数名已经不是'f2',而是@log内部定义的'wrapper'。这对于那些依赖函数名的代码就会失效。decorator还改变了函数的__doc__等其它属性。如果要让调用者看不出一个函数经过了@decorator的“改造”,就需要把原函数的一些属性复制到新函数中: def log(f): def wrapper(*args, **kw): print 'call...' return f(*args, **kw) wrapper.__name__ = f.__name__ wrapper.__doc__ = f.__doc__ return wrapper 这样写decorator很不方便,因为我们也很难把原函数的所有必要属性都一个一个复制到新函数上,所以Python内置的functools可以用来自动化完成这个“复制”的任务: import functools def log(f): @functools.wraps(f) def wrapper(*args, **kw): print 'call...' return f(*args, **kw) return wrapper 最后需要指出,由于我们把原函数签名改成了(*args, **kw),因此,无法获得原函数的原始参数信息。
    查看全部
  • 定义装饰器函数 最内层定义定义函数 参数为实际函数调用的变量 返回实际函数对象 向外一层为装饰器函数 传入实际函数的对象, 返回内层的包装函数对象 如果装饰器需要传入参数 那么再向外扩展一层,传入参数
    查看全部
  • 要让 @log 自适应任何参数定义的函数,可以利用Python的 *args 和 **kw,保证任意个数的参数总是能正常调用: def log(f): def fn(*args, **kw): print 'call ' + f.__name__ + '()...' return f(*args, **kw) return fn 现在,对于任意函数,@log 都能正常工作。
    查看全部
  • 概念:在不改变原函数的情况下,给函数增加新功能,。可以极大地简化代码,避免每个函数编写重复性代码。 应用:打印日志@log,检测性能@performance,数据库事务@transaction,URL路由@post('/register') 例子: def log(func): def f(): print('call '+func._name_) return f @log def myfunc(a): return a print(myfunc(3)) >>call myfunc >>3
    查看全部
  • 因为 Python 定义了__str__()和__repr__()两种方法,__str__()用于显示给用户,而__repr__()用于显示给开发人员。 def __str__(self): return '(Person: %s, %s)' % (self.name, self.gender) __repr__ = __str__
    查看全部
  • 函数名其实是指向函数的变量
    查看全部
  • 学习目标
    查看全部
    0 采集 收起 来源:课程介绍

    2018-01-21

  • 学习内容
    查看全部
    0 采集 收起 来源:课程介绍

    2018-01-21

  • 可变参数:*args 只有一个值 关键字参数:**kw 有键值对(参数名,值) 命名关键字参数: 定义时参数有个分隔符* ,不能省略参数名。。 要注意定义可变参数和关键字参数的语法: *args是可变参数,args接收的是一个tuple; **kw是关键字参数,kw接收的是一个dict。 以及调用函数时如何传入可变参数和关键字参数的语法: 可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3)); 关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})。 使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。 命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。 定义命名的关键字参数不要忘了写分隔符*,否则定义的将是位置参数。 class Person(object): def __init__(self, name, gender, **kw): self.name=name self.gender=gender for k, v in kw.iteritems(): setattr(self, k, v) p = Person('Bob', 'Male', age=18, course='Python') print p.age print p.course [ 收起全文 ] 2018-01-02采集0 0 yangguanglukou 举报 type() 函数获取变量的类型. dir() 函数获取变量的所有属性.dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象的属性,就需要用 getattr() 和 setattr( )函数了. getattr(s, 'name') # 获取name属性 'Bob'
    查看全部
  • map函数对每个元素处理,reduce对
    查看全部
  • map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。 注意:map()函数不改变原有的 list,而是返回一个新的 list。 利用map()函数,可以把一个 list 转换为另一个 list,只需要传入转换函数。 由于list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的 list,事实上它可以处理包含任意类型的 list,只要传入的函数f可以处理这种数据类型。
    查看全部
  • 像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。 闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。
    查看全部
    0 采集 收起 来源:python中闭包

    2018-01-21

  • 如果返回一个函数,就可以“延迟计算”。 当对返回的函数进行调用时,才计算出结果。 由于可以返回函数,我们在后续代码里就可以决定到底要不要调用该函数。
    查看全部

举报

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

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