摘要: 装饰器 利用__call__方法实现单例 所谓单例,是指一个类的实例从始至终只能被创建一次。单例的实现有多种,这里以__call__方法来实现 分析一下上边的代码 实例化Grok1类时相当于执行了下边两步: 1 1. Grok1 = Single(Grok1) 2 2. grok1 = Grok1( 阅读全文
posted @ 2019-05-25 12:39 旧梦一场 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 可调用对象 在python中可以用callable函数查看一个对象是不是可调用 输出为True,函数当然是一个可调用对象,如果是一个类呢? 如上,一个类被实例化后,这个实例对象是一个不可调用对象 有什么方法能让一个实例对象变成可调用对象呢?做如下修改: f1这个实例现在已是一个可调用对象了。所以只要 阅读全文
posted @ 2019-05-25 12:33 旧梦一场 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 带参数的装饰器的应用: 比如有一个函数,只有在对有许可权限的用户开放,执行此函数的用户没有在认证列表里的,就不会执行这个函数。这个该如何实现呢?如下: 这样就可以对调用函数进行身份验证 python中一个函数有一些属性是函数本身具有的,比如__name__属性是查看函数名称,如果一个函数被装饰器装饰 阅读全文
posted @ 2019-05-25 11:54 旧梦一场 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 带参数的装饰器 先来看一个不带参数的装饰器 这里打印出来的是执行sleep函数所消耗的自然时间,但在执行此函数时所消耗的cpu时间真的有3.0034420490264893秒吗?当然不是。利用time包中的time.clock方法可以计算得到代码执行所消耗cpu的时间,那怎样来修改上边的timeit 阅读全文
posted @ 2019-05-25 11:44 旧梦一场 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 装饰器的应用实例 上边代码定义了两个函数,timeit函数能够模拟计算出在执行fn函数所花费的时间 这样来计算一个函数的执行时间是有缺陷的,sleep函数必须是一个接收参数的函数,那怎样才能让sleep能接收参数呢?做如下改进: 这样timeit_1函数通过wrap函数进行一次包装后就可以让slee 阅读全文
posted @ 2019-05-25 11:26 旧梦一场 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 对python装饰器系列(一)的deco函数进行修改: myfun()函数被deco(fn)函数进行修饰后,调用myfun()时就像被施加了魔法一样在执行此函数前附加的执行了一些操作 有参数的装饰器 myfun(x)函数被deco(fn)函数装饰后,函数对象的__name__属性会发生改变,发上输出 阅读全文
posted @ 2019-05-25 11:14 旧梦一场 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 高阶函数 一个函数能接受另一个函数作为参数传入,这样的一个函数就是高阶函数 在python中一切皆对象,函数也不例外,函数是可以赋予给一个变量的 在python中,变量可以指向一个函数,函数的参数可以接收一个变量,那么函数的参数也就可以是一个函数 上边直接调用num()函数,把指向函数f(a)的函数 阅读全文
posted @ 2019-05-25 10:55 旧梦一场 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 在python中可以用callable函数查看一个对象是不是可调用 一个类被实例化后,这个实例对象是一个不可调用对象 只要一个类中实现了__call__方法,那么类实例就是一个可调用对象 调用此实例对象也就是执行了__call__方法 阅读全文
posted @ 2019-05-25 10:20 旧梦一场 阅读(194) 评论(0) 推荐(0) 编辑
摘要: __repr__ 对应repr(object)这个函数,返回一个可以用来表示对象的可打印字符串 __str__ 对应str(object)这个函数,返回一个字符串对象,适合用于print输出 __bytes__ 对应bytes(object)这个函数,返回bytes对象 阅读全文
posted @ 2019-05-25 09:54 旧梦一场 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 取自知名大佬文章 阅读全文
posted @ 2019-05-19 22:48 旧梦一场 阅读(179) 评论(0) 推荐(0) 编辑