python3----练习题(装饰器)】的更多相关文章

原文:https://blog.csdn.net/loveliuzz/article/details/77853346 Python3.5——装饰器及应用详解(下)----https://blog.csdn.net/loveliuzz/article/details/77883709 Python 装饰器记录总结 (终极版)-------------https://juejin.im/entry/58eb90b90ce46300586c2830 1.装饰器: (1)本质:装饰器的本质是函数,其基…
#!/usr/bin/env python __author__ = "lrtao2010" #python3.7 装饰器 #装饰器 ''' 定义:本质就是一个函数,作用是为其他函数添加新的功能. 遵循的原则: 1.不改变被修饰函数的源代码(开放封闭原则): 2.为被装饰函数添加新功能后,不修改被修饰函数的调用方式. ''' #装饰器=高阶函数 + 函数嵌套 + 闭包 #高阶函数 ''' 定义: 1.函数接收的参数是一个函数名: 2.函数的返回值是一函数名: 3.满足上述条件任意一个,…
在廖雪峰的官方网站学习装饰器章节时,初步理解类似与面向切面编程.记录一下自己的课后习题解法. 问题: 请编写一个decorator,能在函数调用的前后打印出'begin call'和'end call'的日志.写出一个@log的decorator,使它既支持: @log def f(): pass 又支持: @log('execute') def f(): pass 示例代码(个人练习,如有问题欢迎斧正): # ! usr/bin/env python3 # -*- coding:utf-8 -…
在Python里面函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数,简单来说函数也是变量也可以作文函数的参数 >>> def funA(): ... print('i an funA') ... time.sleep(1) >>> f = now >>> f() i am funA 函数对象有一个__name__属性,可以拿到函数的名字: >>> funA.__name__ 'funA' >>&…
1.装饰器 装饰器本质上是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理.缓存.权限验证等场景,装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用.概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能. 装饰器的实现原理: #无参数装饰器原理: def login(funct): print('passed us…
普通函数 def f(): """ 这是一个用来测试装饰器修复技术的函数 """ print("哈哈哈") if __name__ == '__main__': print("执行的函数名:", f.__name__) print("函数的注释:", f.__doc__) # 打印结果 执行的函数名: f 函数的注释: 这是一个用来测试装饰器修复技术的函数 添加装饰器 def wrapp…
较为复杂的装饰器使用: user,passwd = 'hjc',111111 def auth(type): print('auth type:',type) def outwrapper(func): def wrapper(*args,**kwargs): if type == 'lll': username = input('username:').strip() password = int(input('password:').strip()) if user == username…
#装饰import typesdef shucai(n): print('蔬菜价格7') if type(n)==types.FunctionType: return n()+7 return n+7def feiniu(n): print('精品肥牛12') if type(n)==types.FunctionType: return n()+12 return n+12@feiniu@shucaidef guodi(): print('锅底38') return 38print(guodi)…
参考文章: 理解Python装饰器(Decorator) 关键点: 写装饰器一定要搞定楚函数名后面带小括号和不带小括号的含义.带小括号,表示调用这个函数,而不带小括号,则表示的是该函数引用地址 简单装饰器: def a(func): def wrapper(): print('in a') return func() #执行func函数中的代码 return wrapper #返回wrapper函数的引用地址 @a #b=a(b) = wrapper的地址 def b(): print('in…
装饰器预备知识点 1 函数赋值给一个变量 函数名可以像普通变量一样赋值给另一个变量. def test(): print("i am just a test function") ally_test = test # ally_test也指向这个test函数的地址 test() # trst+()调用函数 ally_test() # ally_test()也是调用函数 #output: i am just a test function i am just a test functio…
练习题1. 请使用python, 对下面的函数进行处理, def hello(name): print "hello, %s" % name 在函数被调用时打印耗时详情 <function name: hello> <function call begin> hello, tom <function call end> [timecosts: 3.81469726562e-06s] 答案: 用到了装饰器,一个很简单的装饰器 贴出代码如下: #!/us…
python3 编码默认为unicode,unicode和utf-8都是默认支持中文的. 如果要python3的编码改为utf-8,则或者在一开始就声明全局使用utf-8 #_*_coding:utf-8_*_ 或者将字符串单独声明: a = "中文".encode("utf-8") 函数式编程 函数式编程中的函数指代的是数学中的函数. 函数式编程输入如果确定,则输出一定是确定的.函数中并没有很多逻辑运算 python是一个面向对象的语言,只是一部分支持函数式编程.…
前面我们说了,在python中,一切皆对象.函数也是一个对象,而且函数对象可以被赋值给变量,通过变量也能调用该函数.如: def sayHello(name): print(name + ' hello') fn = sayHello fn('roy') 以上代码,输出: roy hello 函数对象有一个__name__属性,可以拿到函数的名字: def sayHello(name): print(name + ' hello') f =sayHello print(f.__name__) p…
一:编写函数,(函数执行的时间是随机的) import time def timmer(func): def wrapper(*args,**kwargs): start= time.time() func(*args,**kwargs) stop = time.time() print('执行时间是%s'%(stop-start)) return wrapper @timmer def exe(): print('装饰器练习题!') exe() 二:编写装饰器,为函数加上统计时间的功能 imp…
[引子] 之前写过一篇文章用来讲解装饰器(https://www.cnblogs.com/JiangLe/p/9309330.html) .那篇文章的定位是入门级的 所以也就没有讲过多的高级主题,决定在这里讲一下如果为装饰器传递参数 [目标] 我们有两个函数“add_fun”.“add” 其中“add_fun”已经过时.如果用户有调用这个函数的话就提示它“add_fun”已经过时并且引导 它去调用“add”函数 [add\add_fun函数的定义] def add_fun(x,y): "&quo…
[引子] python 中的装饰器是oop(面向对象编程)设计模式.之装饰器模式的一个应用.由于有语法糖衣的缘故.所以写起来也更加方便 [从一个比较经典的应用场景来讲解装饰器] 有过一定编程经历的工程师.应该都遇到过这样的场景.有一些老的API过时了但是在一段时间内它还是可用的,只是平台会把 它标记为不推荐.也就是说这个API在新的版本里应该不会存在了.比如python-2.x 的时候有raw_input这个函数.但是到了 python-3.x的时候就没有了,在过渡时期平台通常会把将要过时的AP…
本章结构: 1.理解装饰器的前提准备 2.装饰器:无参/带参的被装饰函数,无参/带参的装饰函数 3.装饰器的缺点 4.python3的内置装饰器 5.本文参考 理解装饰器的前提:1.所有东西都是对象(函数可以当做对象传递) 2.闭包 闭包的概念:1)函数嵌套2)内部函数使用外部函数的变量 3)外部函数的返回值为内部函数 下面写一个最为简单的闭包的例子: def test(name): def test_in(): print(name) return test_in func = test('w…
---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1.匿名函数 没有函数名 # -*- coding:utf-8 -*- # Author: WUJiang # 匿名函数 calc = lambda x: x*3 print(calc(3)) 2.装饰器 装饰器,本质是函数,装饰其他函数,即为其他函数添加附加功能 原则:不能修改被装饰函数的源代码.不…
内置方法,就是python3提供的各种函数,可以认为是关键字,帮助进行一些列的牛x运算. abs()#取绝对值 all([])#可迭代对象中的所有元素都为True 则为True,只要至少一个为False则结果为False any() #可迭代对象中的元素只要有任意一个为True,则结果为True bin() #10进制转为二进制 bool() #判断一个对象的boolean值 bytes() #转换为字节,字符串需要"abc".encode("utf-8") ,字符…
python3装饰器 装饰器作用 简单理解:可以为已有函数添加额外功能 例: 已有2个函数如下 def MyFunc1(): print("This is a print function1") def MyFunc2(): print("This is a print function2") 需求:现想要在函数执行前打印类似(开始使用XXX功能) 不用装饰器方式: def MyFunc1(): print("开始使用MyFunc1功能") pr…
装饰器:本质是函数,用于装饰其他函数,在不改变其他函数的调用和代码的前提下,增加新功能 原则: 1.不能修改被装饰函数的源代码 2.不能修改被装饰函数的调用方式 3.装饰函数对于被装饰函数透明 参考如下链接: http://egon09.blog.51cto.com/9161406/1836763 实现装饰器的需求: 函数即“变量”,函数名指向内存中的函数体,加()表示调用 高价函数,将函数当做参数传递给其他函数 嵌套函数,在函数体内再定义函数 1.调用简单的函数: import time de…
Python3高阶函数之迭代器.装饰器 列表生成式 推导式就是构建比较有规律的列表,生成器. 孩子,我现在有个需求,看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],我要求你把列表里的每个值加1,你怎么实现?你可能会想到2种方式 屌丝青年版 a=[0,1,2,3,4,5,6,7,8,9] b=[] for i in a:b.append(i+1) print(b) print(a) # 输出结果为 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [0, 1, 2…
#Author by Andy#_*_ coding:utf-8 _*_#装饰器的原则及构成:# 原则:# 1.不能修改被装饰函数的源代码.# 2.不能修改被装饰函数的调用方式.# 3.不能改变被装饰函数的执行结果.# 装饰器对被装饰函数是透明的.## 如何理解装饰器# 1.函数即"变量"# 2.高阶函数# a:把一个函数名作为实参传递给另外一个函数# b:返回值中包含函数名# 3.嵌套函数## 在一个函数体内声明另一个函数称为函数的嵌套#装饰器例子:import time# def…
笔者QQ 360212316 迭代器&生成器 生成器: 一个函数调用返回一个迭代器,那这个函数叫做生成器,如果函数中包含yield语法,那么这个函数就会变成生成器 生成器的特点: 1.生成器必须从前往后一次访问,不能跳着取 2.生成器只记录访问的数据,其他数据释放 3.生成器的作用就是预想可能用到那么多的数据 生成器的两种方式: 方式一: data = (x * 2 for x in range(5)) # 获取结果的两种方式 print(data.__next__()) print(next(…
初识装饰器(decorator ) Python的 decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数. 使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码. 先看一个例子: #!/usr/bin/env python def outer(func): print('这是outer.') def inner(): print('这是inner.') func() print('这是最后.…
还是先来抄一段NLP第四条: 四,只有感官经验塑造出来的世界,没有绝对的真实世界   每个人运用自己的感觉器官把资料摄入(摄入过程),由于感官运用是主观地有选择性的,因此不能,亦不需要把所有资料捕获. 摄入的资料经由我们的信念,价值观和规条过滤而决议其意义,亦因此能存储在脑中(编码过程) .我们的信念,价值观和规条是主观形成的,故此,过滤出来的意义也是主观的. 我们每一个人的世界,都是用上述的方式一点一滴地塑造出来的,亦因此是主观的. 我们只能用这种方式建立对这个世界的认知,没有其他办法. 因此…
还是先抄一条NLP假设... 三,有效果比有道理更重要   光说做法有道理或者正确而不顾是否有效果,是在自欺欺人. 在三赢(我好,人好,世界好)的原则基础上追求效果,比坚持什么是对的更有意义. 说道理往往是把焦点放在过去的事情上,注重效果则容易把注意里放在未来. 效果是原定计划的意义基础,亦是所有行动的指标. 有道理是有理性方面的标准决定的,因为没有两个人的信念,价值观和规条是一样的,所以没有两个人的“道理”是一样的. 故此,坚持道理只不过是坚持一套不能放在另一个人身上的信念,价值观和规条. 真…
1.写出完整的装饰器(不用开了带参装饰器,就是普通装饰器)语法 2.有一个计算两个数和的方法,为其添加一个确保两个参数都是int或float类型的装饰器,保证运算不会抛异常 3.有一个一次性录入人名并返回人名的方法(人名只考虑存英文),为其添加一个装饰器,确保人名首字母大写 ``` 拓展题: 1.原功能:entry_grade *) 可以完成『成绩录入功能』 -- 可以重复录入成绩,默认所有输入都是合法的(1~100之间的数) -- 当录入成绩为0时,结束成绩的录入 -- 将录入的成绩保存在列表…
第一步 : 了解装饰器 装饰器模式,重点在于装饰,装饰的核心仍是被装饰的对象. 举一个栗子:我今天穿了一件短袖,但是突然一阵风,短袖没办法为我御寒,我想到的办法是将短袖变得更厚更长,但是改造之后,它就不是一件真正的短袖了. 于是有了长袖的诞生,将长袖套在短袖外面,既可挡风又可御寒,妈妈再也不用担心我感冒了.短袖是短袖,长袖是长袖,相互独立. 装饰器就像我们的长袖,在不影响短袖改造的情况下,达到了挡风御寒的效果. 装饰器的应用场景:插入日志.性能测试.事务处理.缓存等. 第二步 : 定义一个基础函…
''' 预备知识: …… @decorator def f(*args,**kwargs): pass # 此处@decorator  等价于 f = decorator(f) @decorator2(*args,**kwargs) def f2(*args,**kwargs): pass # 此处@decorator2(*args,**kwargs)  等价于: 第一步,执行函数decorator2(*args,**kwargs),获得中间结果temp;  第二步,执行装饰器函数(即@temp…